使用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

显示效果和不使用插件时有所差异:

posted @ 2021-12-15 16:08  极客子羽  阅读(1284)  评论(0编辑  收藏  举报