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

实战过程:

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后,就只能进行离线分析。

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

利用Wireshark加Lua分析专有网络协议_第1张图片


你可能感兴趣的:(Lua,通信协议)