您的位置:首页 > 理论基础 > 计算机网络

利用Wireshark加Lua分析专有网络协议

2014-03-15 19:11 369 查看
实战过程:

1.安装wireshark、lua。

2.利用lua为wirashark写一个协议的dissector,并部署到lua上。

2.1 参照http://wiki.wireshark.org/Lua/Examples中的例子,进行修改。其中要注意的一点是TCP协议中的粘包现象(如果是UDP则不考虑)。 解决这点的关键是在dissector(buffer, pinfo, tree)函数中设置好以下两个属性(具体含义参见wireshark文档)。

pinfo.desegment_len
pinfo.desegment_offset

2.2 把编辑好的lua文件(比如说文件名为ProprietaryProtocol.lua)放到wireshark的安装目录。

2.3 在wireshark安装目录的init.lua文件中,增加一行,内容为dofile(DATA_DIR.."ProprietaryProtocol.lua")。

3.启动wireshark、启动专有程序。

之后就可以在wireshark中监听并分析专有协议的数据包了。

另外,关于监听127.0.0.1地址,有两个坑要注意避开:

1.wireshark是监听不了127.0.0.1地址的(原因见wireshark官网http://wiki.wireshark.org/CaptureSetup/Loopback)。

2.即使你把程序的远程IP地址修改为本地的IP地址(就是在ipconfig中看到的地址),有的通信底层库仍然会自动与127.0.0.1建立连接。

避开的一种方式是借助于rawcap软件。基本步骤为:

1.下载rawcap(可搜索官网下载)。

2.在window下的cmd中进行"rawcap.exe 127.0.0.1 capture.cap"。其中capture.cap是用于dump数据包的文件名。

3.运行自己的专有程序。

之后rawcap就会把在127.0.0.1地址上监听到的数据包记录到capture.cap文件。

以上步骤运行结束后,关闭rawcap,在wireshark中打开capture.cap文件,就可以进行分析数据包了。

当然,借助于rawcap后,就只能进行离线分析。

下面是运行截图,其中红框内的部分都是专有协议的内容。各个字段都解析了出来,看起来还是很爽的。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: