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