6
5

More than 5 years have passed since last update.

MacのWiresharkでMQTT通信のパケットを見やすくキャプチャする

Posted at

やること

Macにて、
MQTT通信の内容が、本当に意図した通りに行われているか(QoS, Retain...他)を確認したいものの、
ただ単にWiresharkを使っても、いまいちMQTTメッセージのやり取りを追いきれませんでした。

Wiresharkにて、MQTT通信のパケットキャプチャ結果をもっと見易くなるようにします。

前提

筆者環境

  • macOS sierra
  • Homebrew 1.5.4

知識

  • MQTTを知っている
  • Wiresharkを知っている
  • Homebrewを使っている

実践

1. Wiresharkのインストール

mac版をインストールします。

2018年2月9日時点のバージョン 2.4.4
https://www.wireshark.org/#download

2. luaをインストール

Wiresharkのプラグインでは、luaを利用することが多いようなので、
luaをmacにインストールします。

$ brew install lua

3. MQTT用のプラグインをWiresharkにインストール

3-1. プラグインを探してダウンロード

有志のWiresharkプラグイン(Mac対応版)を探してダウンロードします。

Mac用で探したら以下を見つけたので、有り難く利用します。
https://github.com/bobwenx/Wireshark-MQTT-OSX

Windows, Linux用では以下のを見つけましたが、試してないので不明です。
https://github.com/menudoproblema/Wireshark-MQTT

(しかしながら、プラグインの更新日が結構古いので、
 MQTTプロトコルバージョン3ではあるものの、何か必要な仕様が足りてなかったりするかも...?)

3-2. Wiresharkプラグインをインストール

Wiresharkの所定のディレクトリに、上記で手に入れた mqtt.lua を置きます。

## プラグインディレクトリの場所
## plugins ディレクトリは存在しない場合もあるので、そのときはmkdirで作成します。
~/.config/wireshark/plugins

$ cp /path/to/mqtt.lua ~/.config/wireshark/plugins

4. Wiresharkを起動して使ってみる

Wireshark起動時に、プラグインは自動的に読み込まれます。

Wiresharkでパケットキャプチャを開始(またはキャプチャデータを読み込み)して、
パケットフィルタに mqtt3 とすれば目的のフィルタリングができます。

Wireshark MQTTフィルタ

トラブルシューティング

Wiresharkでプラグインの読み込み時に何かエラーが出たら、
エラー内容を見てなんとかします。

  • プラグインとして登録しようとしているプロトコル名(フィルタ等で利用するための名称、識別子)が、既に存在するものと重複している
  • luaライブラリがインストールされていない
  • .lua ファイルがなんかおかしい
  • ...etc
6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5