使用 Wireshark 抓取 MQTT報文
注意:原創文章,轉載請註明出處。
前言
在使用Wireshark 對MQTT協議進行抓包時,總是無法解析MQTT協議報文。爲此,筆者一直在找尋能夠使用wireshark抓取到mqtt協議報文的方法。
失敗記錄
筆者在CSDN上找到下面一篇文章,見如下鏈接。
可能時筆者的wiresharK版本與這篇博主的版本有所區別,按照這篇文章操作了一邊,還是沒有抓取到mqtt報文。
成功抓取MQTT
因爲MQTT協議現在已經屬於物聯網領域中非常通用的協議了,筆者覺得用 Wireshark 抓取這種通用協議應該不會太難,一定是目前所使用的wireshark軟件版本比較低造成的,因此就去wireshark的官網下載了最新版本。
將之前的版本卸載之後,重新安裝這個2.4.11的版本,果不其然,已經可以成功抓取到MQTT協議了。
其它參考鏈接
因爲筆者在進行MQTT協議測試的過程中,還會使用基於Websocket網頁版的MQTT協議,在這種情況下,mqtt報文被websocket協議給包含了,相應的wireshark也就沒辦法對mqtt協議的具體字段進行解析了,如下。
基於此,筆者想找到一種能夠解析這種基於websocket的mqtt報文的方法讓,然後就搜索到瞭如下一篇文章。下面附上鍊接。
Lua編寫wireshark插件初探——解析Websocket上的MQTT協議
這篇文章的作者提供了一個在wireshark中運行的lua腳本,見如下github鏈接。
於是,我按照這篇文章中的方法,將 mqttoverwebsocket.lua 放入 wireshark的根目錄下。
然後修改了下 C:\Program Files\Wireshark 目錄下的 init.lua 初始化腳本,在其腳本末尾增加了加載 mqttoverwebsocket.lua 的代碼。
dofile(DATA_DIR.."mqttoverwebsocket.lua")
截圖如下。
然後運行基於websocket的MQTT協議客戶端,就能抓取到 MQTT over Websocket的報文了。