使用wireshark抓取mqtt報文

使用 Wireshark 抓取 MQTT報文

注意:原創文章,轉載請註明出處。

前言

在使用Wireshark 對MQTT協議進行抓包時,總是無法解析MQTT協議報文。爲此,筆者一直在找尋能夠使用wireshark抓取到mqtt協議報文的方法。

失敗記錄

筆者在CSDN上找到下面一篇文章,見如下鏈接
可能時筆者的wiresharK版本與這篇博主的版本有所區別,按照這篇文章操作了一邊,還是沒有抓取到mqtt報文。

成功抓取MQTT

因爲MQTT協議現在已經屬於物聯網領域中非常通用的協議了,筆者覺得用 Wireshark 抓取這種通用協議應該不會太難,一定是目前所使用的wireshark軟件版本比較低造成的,因此就去wireshark的官網下載了最新版本。

下載鏈接

下載頁面截圖

將之前的版本卸載之後,重新安裝這個2.4.11的版本,果不其然,已經可以成功抓取到MQTT協議了。
MQTT抓包

其它參考鏈接

因爲筆者在進行MQTT協議測試的過程中,還會使用基於Websocket網頁版的MQTT協議,在這種情況下,mqtt報文被websocket協議給包含了,相應的wireshark也就沒辦法對mqtt協議的具體字段進行解析了,如下。
websocket-mqtt

基於此,筆者想找到一種能夠解析這種基於websocket的mqtt報文的方法讓,然後就搜索到瞭如下一篇文章。下面附上鍊接。

Lua編寫wireshark插件初探——解析Websocket上的MQTT協議

這篇文章的作者提供了一個在wireshark中運行的lua腳本,見如下github鏈接

於是,我按照這篇文章中的方法,將 mqttoverwebsocket.lua 放入 wireshark的根目錄下。
mqttoverwebsocket.lua存放目錄

然後修改了下 C:\Program Files\Wireshark 目錄下的 init.lua 初始化腳本,在其腳本末尾增加了加載 mqttoverwebsocket.lua 的代碼。

dofile(DATA_DIR.."mqttoverwebsocket.lua")

截圖如下。

然後運行基於websocket的MQTT協議客戶端,就能抓取到 MQTT over Websocket的報文了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章