網絡上搜索到兩種用wireshark工具分析MQTT協議的方法,都是使用wireshark插件,一種是Wireshark Generic Dissector;另一種是使用lua腳本插件(推薦使用這種方式)。
一、Wireshark Generic Dissector:
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
4、The plugins directory can be found in Wireshark app:help/about wireshark menu.
運行情況如圖: