このエントリーをはてなブックマークに追加

WiresharkでMQTTパケットを見る

ちなみに

別のLuaプラグインがありましたので追記します。(2014/02/26)

  1. wireshark Generic Dissectorからお使いのアーキテクチャに合わせたgeneric.soをダウンロード

  2. MQTT dissector / decoder for Wiresharkからzipをダウンロード。展開すると

    • mqtt3.1.fdesc
    • mqtt3.1.wsgd

    という二つのファイルが出てきます。

  3. 合計3つのファイルをpluginディレクトリに放り込みます。

    Ubuntu 13.04、wireshark 1.10.2では/usr/lib/x86_64-linux-gnu/wireshark/libwireshark3/plugins/でした。

あとは普通にwiresharkを起動すればOKです。

なんかスクリーンショット取れなかったのでさっきのページの画像を拝借。

../../../_images/wireshark_example_wsgd_mqtt.png

これでbroker開発が捗りそうですね。

Lua Plugin

wiresharkはLuaをpluginとして実行できます。Luaで実装されたMQTTdessectorがありますので、こちらも使えます。軽く使った感じではフラグなどの表示がこっちのほうが見やすいです。

Wireshark-MQTT

使い方

上記githubから mqtt.lua をダウンロードします。その後

% wireshark -X lua_script:mqtt.lua

と実行すればOKです。恒常的に使いたい場合はwiresharkのpluginsディレクトリに入れておくと使ってくれます。

権限問題

なお、wiresharkは1.8以上からdefaultでLuaが有効化されてbuildされていますが、同時にrootユーザーで起動した時にはLuaが無効化されるようになっています。

一般ユーザーでパケットをキャプチャーする場合、Linuxでは以下のように設定します。参考:Platform-Specific information about capture privileges

% sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/dumpcap
CAP_NET_RAW
RAWソケットとPACKETソケットを使用する権限
CAP_NET_ADMIN
ネットワーク関連の操作を実行する権限

ですので、必要なければ削ったりしてください。