WiresharkでMQTTパケットを見る

Tip

別の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で実装されたMQTT dessectorがありますので、こちらも使えます。軽く使った感じではフラグなど の表示がこっちのほうが見やすいです。

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

ネットワーク関連の操作を実行する権限

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

Comments

comments powered by Disqus