Wireshark は、IEEE 802.15.4、6LoWPAN、IPv6、MLE(メッシュリンクの確立)、UDP、CoAP などの Thread スタック内のネットワーク プロトコルをデコードできるオープンソース ツールです。
Pyspinel スニファツールは、Thread NCP または RCP デバイスに接続し、それを無差別パケット スニファに変換して、Wireshark に保存またはパイプする pcap(パケット キャプチャ)ストリームを生成します。
Pyspinel で Wireshark を使用するには、次のステップのインストール推奨事項をご覧ください。また、Thread パケットを適切に表示し、RSSI 測定値を受信するように Wireshark を構成する必要があります。
Wireshark をインストールする
Linux
ターミナルを開き、次のコマンドを実行して Wireshark をダウンロードしてインストールします。
sudo add-apt-repository ppa:wireshark-dev/stable
sudo apt-get update
sudo apt-get install wireshark
Wireshark は root
以外のユーザーとして実行することをおすすめします。そのためには、パッケージを再構成します。
sudo dpkg-reconfigure wireshark-common
[スーパーユーザー以外のユーザーにパケットをキャプチャする権限を付与しますか?] というダイアログが表示されたら、[はい] を選択し、wireshark
ユーザーを追加してファイル権限を更新します。
sudo adduser $USER wireshark
sudo chmod +x /usr/bin/dumpcap
macOS と Windows
Wireshark をダウンロードしてインストールします。オペレーティング システムのセキュリティを最適化するには、Wireshark - キャプチャ権限に関するプラットフォーム固有の情報をご覧ください。
Wireshark プロトコルを構成する
プロトコルを構成するには、Wireshark で [Preferences...] を選択し、[Protocols] セクションを開きます。
6LoWPAN
プロトコルのリストから [6LoWPAN] を選択し、次の設定を確認または変更します。
- [RFC 4944 に従って ID を取得する] チェックボックスをオフにします。
- コンテキスト 0 を、ターゲット Thread ネットワークのメッシュ ローカル プレフィックスに更新します。
Wireshark は、コンテキスト構成を使用して圧縮された IPv6 アドレスを解析し、IPv6 送信元アドレスと宛先アドレスを正しく表示します。
ゲートウェイで構成された他のオンメッシュ プレフィックスのアドレスを表示するには、他のコンテキスト ID をこれらのプレフィックスで更新します。
特定のオンメッシュ プレフィックスのコンテキスト ID を取得するには、任意の MLE データ レスポンス メッセージで Thread ネットワーク データ TLV を表示します。次に例を示します。
Context 1: fd00:7d03:7d03:7d03::/64
CoAP
プロトコルのリストから [CoAP] を選択し、[CoAP UDP Port] を 61631 に設定します。これにより、TMF メッセージ(住所の確認など)が表示されます。
IEEE 802.15.4
プロトコルのリストから [IEEE 802.15.4] を選択し、次の設定を確認または変更します。
- 802.15.4 Ethertype(16 進数)を「0x809a」に設定します。
- [セキュリティ スイート] を [AES-128 暗号化、32 ビット完全性保護] に設定します。
[復号鍵] の横にある [編集...] ボタンをクリックします。ここに、パケット復号用の Thread ネットワーク マスターキーを追加します。
- [+] をクリックして復号鍵を追加します。
- [復号鍵] 列に Thread ネットワーク マスターキーを入力します。
- [復号鍵のインデックス] に「1」を入力します。
[Key hash] 列のリストボックスから [Thread hash] を選択します。
[OK] をクリックして復号鍵を保存します。
スレッド
プロトコルのリストから [Thread] を選択し、次の設定を確認または変更します。
- [スレッド シーケンス カウンタ] に「00000000」と入力します。
- [Use PAN ID as first two octets of master key] チェックボックスをオフにします。
- [Automatically acquire Thread sequence counter] をオンにします。
[OK] ボタンをクリックして、プロトコルの変更を保存します。
一部の Thread トラフィックは ZigBee プロトコルとして分析されることがあります。これらの 2 つのプロトコルを正しく表示するには、Wireshark で有効なプロトコルを編集します。
- Wireshark で [Analyze] に移動し、[Enabled Protocols] をクリックします。
次のプロトコルのチェックボックスをオフにします。
- LwMesh
- ZigBee
- ZigBee Green Power
Wireshark RSSI を構成する
Wireshark で RSSI を表示するには:
- [設定...] を選択し、[プロトコル] セクションを開いて、[IEEE 802.15.4] をクリックします。
[FCS 形式] を設定します。
- IEEE 802.15.4 TAP が無効になっている場合: TI CC24xx メタデータ。
- IEEE 802.15.4 TAP が有効になっている場合: ITU-T CRC-16。Nordic Semiconductor nRF52840 DK のパケット スニッフィング ガイドに沿って作業している場合は、
--tap
フラグの詳細をご覧ください。
[OK] をクリックして保存し、[設定] メニューに戻ります。
[設定] で [外観]、[表示項目] の順に選択します。
新しいエントリを追加します。
- タイトル: RSSI
- タイプ: カスタム
- フィールド: wpan.rssi