前提说明:之前是在linux 系统上配置的,然后现在 在配置lua 脚本 ,然后 分析指定协议 的 数据包
其实流程也比较简单,但 逻辑需要缕清来
首先要把你 预先准备的 xxx.lua 文件放到wireshark 的安装文件中,(我就是之前装过,然后不太确定是在哪个目录 wireshark 里头有好多目录)
参考:
dofile(DATA_DIR.."xxx.lua")
接着就可以通过wireshark 打开已经抓的包(文件格式 yyy.pcap),开始愉快的解析数据啦
//BAD_REQUEST 语法错误
//NO_REQUEST 请求不完整
int parse_request_line(char *text)
{
m_url = strpbrk(text, " \t"); //找到 第一处空格 或者 \t
if (!m_url)
{
return BAD_REQUEST;
}
//用\0空字符来划分每一行具体信息
//方便后续操作 因为字符串函数都以空字符作为划分
*m_url++ = '\0';
char *method = text;
if (strcasecmp(method, "GET") == 0)
m_method = GET;
else if (strcasecmp(method, "POST") == 0)
m_method = POST;
else
return BAD_REQUEST;
m_url += strspn(m_url, " \t"); //跳过剩余的 空格和\t 因为可能不止用一个空格和\t来分隔
m_version = strpbrk(m_url, " \t");
if (!m_version)
return BAD_REQUEST;
*m_version++ = '\0';
m_version += strspn(m_version, " \t");
//到此为止 m_url、m_version都指向对应位置的开头
//仅支持HTTP//1.1
if (strcasecmp(m_version, "HTTP/1.1") != 0)
return BAD_REQUEST;
//对请求资源前7个字符进行判断
//这里主要是有些报文的请求资源中会带有http://,这里需要对这种情况进行单独处理
if (strncasecmp(m_url, "http://", 7) == 0)
{
m_url += 7;
m_url = strchr(m_url, '/');
}
//同样增加https情况
if (strncasecmp(m_url, "https://", 8) == 0)
{
m_url += 8;
m_url = strchr(m_url, '/');
}
//一般的不会带有上述两种符号,直接是单独的/或/后面带访问资源
if (!m_url || m_url[0] != '/')
return BAD_REQUEST;
//当url为/时,显示判断界面
if (strlen(m_url) == 1)
strcat(m_url, "judge.html");
return NO_REQUEST;
}
######################################################################
更新
参考1