使用Wireshark3.2.x分析MQTT协议
一、概述
由于wireshark抓MQTT协议的包只能显示到TCP层次,要分析MQTT协议,就要添加wireshark插件——Wireshark Generic Dissector 官网 http://wsgd.free.fr/。
安装支持MQTT的插件前是这样的:
*不安装插件的方法
从 Wireshark 3.2.2 开始,编辑->首选项->Protocols->MQTT 中设置端口:
MQTT的默认端口是1883,但是我这里MQTT服务器开启的监听端口是1884,所以我修改了以后,抓取的某个 CONNECT 的报文如下:
二、下载和配置
2.1 下载 generic
首先第一步下载 generic.dll
(Windows)或 generic.so
(Linux),并放到 Wireshark的插件目录(Global Plugins folder或者Personal Plugins folder,可以通过菜单栏Help -> About Wireshark -> Folders查看)。
generic.dll
下载地址:http://wsgd.free.fr/download.html,我选择版本 3.2.x
对应的下载。
2.2 generic.dll
解压到?
如果你的全局插件文件夹有 epan 这个子目录,就把 generic.dll
放入其中。
之后,你重启 Wireshark,通过 Help -> About Wireshark -> Folders 可以看到 generic.dll 出现在了插件列表中:
2.3 下载mqtt规则文件
MQTT规则文件可以在这里下载:http://false.ekta.is/2011/06/mqtt-dissector-decoder-for-wireshark/#
2.4 添加环境变量
最后添加系统环境变量:WIRESHARK_GENERIC_DISSECTOR_DIR
,指定为上面两个规则文件的目录。
或者把上面两个文件放到下面其中一个目录下:
- wireshark profiles directory (e.g. C:\Users<user>\AppData\Roaming\Wireshark\profiles)
- wireshark data directory (e.g. C:\Users<user>\Documents)
- wireshark plugin directory (e.g. C:\Program Files\Wireshark\plugins\3.2)
- wireshark main directory (e.g. C:\Program Files\Wireshark\3.2)
三、修改mqtt3.1.wsgd
于使用的端口不同,所以还需要修改过滤文件的端口(原本是1883)。使用编辑器打开mqtt3.1.wsgd文件。把PARENT_SUBFIELD_VALUES
修改成你的MQTT服务器监听端口,保存。
# Specify when the dissector is used. 从第10行开始
PARENT_SUBFIELD tcp.port
PARENT_SUBFIELD_VALUES 1884
显示效果和不使用插件时有所差异: