<ph type="x-smartling-placeholder"></ph> GitHub のソースを表示
このガイドでは、Wireshark を設定し、Pyspinel を実行してパケットをスニッフィングする方法について説明します。 通信する必要があります
パケット スニッフィングに Wireshark extcap プラグインを使用するには、パケット スニッフィングに関するページ extcap を使用します。
スニファー環境を設定する
始める前に、次の手順を行います。
スニファーを作成する
ot-rcp
バイナリ出力を使用して、スニファーとして機能する NCP デバイスをビルドしてフラッシュします。
ノルディック nRF52840
Nordic nRF52840 サンプルをスニファーとして使用するためにセットアップするには、
openthread/ot-nrf528xx
を実行し、ビルド環境を設定します。
git clone https://github.com/openthread/ot-nrf528xx --recursive
./script/bootstrap
ボーレートを 460800 に設定します。#define UART_BAUDRATE NRF_UARTE_BAUDRATE_115200
という行を探します。
これを src/nrf52840/transport-config.h
に追加し、#define UART_BAUDRATE NRF_UARTE_BAUDRATE_460800
に置き換えます。
バイナリをビルドします。
./script/build nrf52840 UART_trans
ot-rcp
バイナリ出力を 16 進数に変換します。
arm-none-eabi-objcopy -O ihex build/bin/ot-rcp ot-rcp.hex
次の手順に従って、ot-rcp.hex
ファイルを nRF52840 ボードに書き込みます。
nRF52840 をフラッシュします。
データに関する問題を回避するため、nRF52840 でマスストレージ デバイス(MSD)を無効にします 次のような問題が考えられます。
expect <<EOF
spawn JLinkExe
expect "J-Link>"
send "msddisable\n"
expect "Probe configured successfully."
exit
EOF
spawn JLinkExe SEGGER J-Link Commander V6.42b (Compiled Feb 5 2019 17:35:31) DLL version V6.42b, compiled Feb 5 2019 17:35:20 Connecting to J-Link via USB...O.K. Firmware: J-Link OB-SAM3U128-V2-NordicSemi compiled Jan 7 2019 14:07:15 Hardware version: V1.00 S/N: 683411111 VTref=3.300V Type "connect" to establish a target connection, '?' for help J-Link>msddisable Probe configured successfully.
スレッドのネットワーク プロパティ
続行する前に、必要な Thread ネットワークの次のプロパティを取得します。 盗み見ます。Wireshark の構成と Pyspinel の実行に必要です。 検出します。
メッシュ ローカル接頭辞
ターゲット Thread ネットワーク内のデバイスからメッシュ ローカル接頭辞を取得するには:
OpenThread CLI を使用する場合:
dataset active
Mesh Local Prefix: fd33:3333:3344:0/64NCP で
wpanctl
を使用する場合:wpanctl getprop IPv6:MeshLocalPrefix
IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"OTBR Web GUI を使用して、[Status] を選択します。[Mesh Local Prefix] に IPv6:MeshLocalPrefix の形式です(例:
wpanctl
)。
チャンネル
ターゲット Thread ネットワーク内のデバイスからチャンネルを取得するには:
OpenThread CLI を使用する場合:
channel
15NCP で
wpanctl
を使用する場合:wpanctl getprop NCP:Channel
NCP:Channel = 15OTBR Web GUI を使用して、[Status] を選択します。チャンネルは NCP:Channel(
wpanctl
に類似)。
ネットワークキー
スレッド ネットワーク キーは、Wireshark がパケットを復号してから 作成します。ターゲット Thread ネットワーク内のデバイスからネットワーク キーを取得するには:
OpenThread CLI を使用する場合:
networkkey
33334444333344443333444433334444NCP で
wpanctl
を使用する場合:wpanctl getprop Network:Key
Network:Key = [33334444333344443333444433334444]
Thread ネットワーク キーは、OTBR Web GUI では使用できません。
スニファー オプション
オプション | |||||
---|---|---|---|---|---|
-u or --uart |
|
||||
-c or --channel |
|
||||
--no-reset |
|
||||
--crc |
|
||||
-b or --baudrate |
|
||||
--rssi |
|
||||
--tap |
|
スニファーを実行する
NCP には特定のデバイスパスを、NCP にはチャネルを使用してください。 スニッフィングしようとしている Thread ネットワーク。
このガイドに従う場合、nRF52840 DK は次の方法でホストマシンに接続する必要があります。
行います(プログラムをフラッシュする
nRF52840。Pyspinel スニファーを実行するには
-b
フラグを使用してボーレートを指定する(デフォルトから変更されている場合)
--no-reset
フラグを省略します。
RSSI を表示するように Wireshark を設定する場合は、--rssi
も含める必要があります。
フラグを指定します。たとえば、チャンネル 15 をスニッフィングするには、
Wireshark 出力に含まれる RSSI を使用して /dev/ttyACM0
にマウントされているデバイス:
cd path-to-pyspinel
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --rssi -b 460800 | wireshark -k -i -
目的のパケットと関連するプロトコルを表示できるようになります。 Wireshark での構成:
詳しくは、Spinel スニファー ツール 参照: Pyspinel スニファーの実行に関する リンク先をご覧ください
ネイティブ USB 接続
nRF52840 DK USB ポートを使用するには、OpenThread ot-rcp
バイナリが必要です。
USB_trans
を使用してビルドします。
./script/build nrf52840 USB_trans
--no-reset
フラグを
ただし、スニファーの実行時に -b
フラグは省略します。
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -
リソース
その他の北欧ツールについては、Nordic Semiconductor — Thread をご覧ください。 nRF52840 と Wireshark をベースにしたスニッファー。