網絡上搜索到兩種用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.
運行狀況如圖: