网络上搜索到两种用wireshark工具分析MQTT协议的方法,都是使用wireshark插件,一种是Wireshark Generic Dissector;另一种是使用lua脚本插件(推荐使用这种方式)。
一、Wireshark Generic Dissector:http://wsgd.free.fr/index.html
1、下载generic.so,注意版本要严格匹配,放到wireshark的插件目录(Global Plugins folder or Personal Plugins folder,可以通过wireshark的 Help / About Wireshark / Folders菜单查看目录);
2、编辑.wsgd和.fdesc文件(这应该就是协议的规则文件了,有人写好了,网上可以搜到);
3、设置WIRESHARK_GENERIC_DISSECTOR_DIR环境变量,为.wsgd和.fdesc文件的目录。
注:我使用了这种方案后,发现协议分析不完备,有些消息不能被正确识别,估计是.wsgd和.fdesc这两个规则文件编写有问题,我的目的是分析MQTT协议,这里就不相信研究这两个文件的编写规则了,后面闲了可以玩玩。
二、使用lua脚本:
1、安装lua脚本解释器:sudo apt-get install lua5.2;
2、使用的时候会提示require("bit")错误,其实就是还需要为lua解释器安装位运算库:sudo apt-get install lua-bitop;
3、下载脚本:https://github.com/menudoproblema/Wireshark-MQTT,将mqtt.lua放到插件目录;
或者点击下载:http://files.cnblogs.com/files/bingblogs/Wireshark-MQTT-master.zip
运行情况如图: