MQTTのパケットをWiresharkでキャプチャする
MQTTのパケットをWiresharkでキャプチャする方法をまとめる。本記事の動作確認はWindows上で実施した。
問題点
Wireshark1.12.4はMQTTに対応しているように見える。*1しかし、実際にはMQTTのパケットをキャプチャしてもTCPのパケットであるかのように表示される。
目標
MQTTのパケットはMQTTの仕様に則ってデコードするようにしたい。
方法
Wiresharkのプラグインを適用し、MQTTのパケットを解析可能にする。
使用するプラグインは以下である。しかし、Wireshark1.12.4ではエラーが発生する。
menudoproblema/Wireshark-MQTT · GitHub
調査したところ問題の解決方法が以下のページで示されているため、これを参考にコード修正する。
boot2docker 上で動く mosquitto との通信を wireshark で覗く - Qiita
尚、修正版を作成したので、以下のリポジトリから取得しても良い。
手順
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のパケットとして認識された。