一、概述
由於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
顯示效果和不使用插件時有所差異: