.logbook

学んだことを書き綴る、言わば航海日誌です。

MQTTのパケットをWiresharkでキャプチャする

MQTTのパケットをWiresharkでキャプチャする方法をまとめる。本記事の動作確認はWindows上で実施した。

問題点

Wireshark1.12.4はMQTTに対応しているように見える。*1しかし、実際にはMQTTのパケットをキャプチャしてもTCPのパケットであるかのように表示される。

f:id:ylgbk:20150405235028p:plain

目標

MQTTのパケットはMQTTの仕様に則ってデコードするようにしたい。

方法

Wiresharkプラグインを適用し、MQTTのパケットを解析可能にする。

使用するプラグインは以下である。しかし、Wireshark1.12.4ではエラーが発生する。

menudoproblema/Wireshark-MQTT · GitHub

調査したところ問題の解決方法が以下のページで示されているため、これを参考にコード修正する。

boot2docker 上で動く mosquitto との通信を wireshark で覗く - Qiita

尚、修正版を作成したので、以下のリポジトリから取得しても良い。

github.com

手順

1.プラグインのソースを取得する

以下のリンクからダウンロード・解凍する。

https://github.com/yuuu/Wireshark-MQTT/archive/update_for_wireshark_ver_1_12_4.zip

2.プラグインのインストール

Wiresharkのインストールディレクトリへmqtt.luaをコピーする

3.プラグインの適用

Wiresharkのインストールディレクトリに存在するinit.luaを起動し、「dofile(DATA_DIR.."console.lua")」と記述された行を探す。以下のように1行追加する。

dofile(DATA_DIR.."console.lua")
dofile(DATA_DIR.."mqtt.lua") ←追加

動作確認

Wiresharkを起動した状態でMQTTのパケット通信をしてみたところ、MQTTのパケットとして認識された。

f:id:ylgbk:20150405235549p:plain