本指南說明如何設定 Wireshark 和執行 Pyspinel 以清理封包 來自 Thread 網路
如要使用 Wireshark extcap 外掛程式進行封包側錄,請參閱 Packet Sniffing 使用 extcap。
設定 Sniffer 環境
在開始之前,請先完成下列步驟:
打造蛇
使用 ot-rcp
二進位檔輸出內容,建構並刷新 NCP 裝置做為 Sniffer。
北歐 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
行
並替換為 #define UART_BAUDRATE NRF_UARTE_BAUDRATE_460800
。src/nrf52840/transport-config.h
建構二進位檔:
./script/build nrf52840 UART_trans
將 ot-rcp
二進位檔輸出內容轉換為十六進位:
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 網路屬性
繼續操作前,請先取得所需的 Thread 網路屬性 滑動您需要這些資訊才能完成 Wireshark 設定及執行 Pyspinel Sniffer。
網格本機前置字串
如要從目標 Thread 網路的裝置取得 Mesh 本機前置字串:
使用 OpenThread CLI:
dataset active
Mesh Local Prefix: fd33:3333:3344:0/64將
wpanctl
與 NCP 搭配使用:wpanctl getprop IPv6:MeshLocalPrefix
IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"使用 OTBR Web GUI 並選取「Status」(狀態)。這裡列出了網格本機前置字串 類似於
wpanctl
的 IPv6:MeshLocalPrefix。
頻道
如要從目標 Thread 網路的裝置取得頻道:
使用 OpenThread CLI:
channel
15將
wpanctl
與 NCP 搭配使用:wpanctl getprop NCP:Channel
NCP:Channel = 15使用 OTBR Web GUI 並選取「Status」(狀態)。頻道顯示方式為 NCP:Channel 與
wpanctl
類似。
網路金鑰
Wireshark 會使用 Thread 網路金鑰解密封包 擷取。如要從目標 Thread 網路的裝置取得網路金鑰,請執行下列操作:
使用 OpenThread CLI:
networkkey
33334444333344443333444433334444將
wpanctl
與 NCP 搭配使用:wpanctl getprop Network:Key
Network:Key = [33334444333344443333444433334444]
OTBR Web GUI 不提供 Thread 網路金鑰。
Sniffer 選項
選項 | |||||
---|---|---|---|---|---|
-u or --uart |
|
||||
-c or --channel |
|
||||
--no-reset |
|
||||
--crc |
|
||||
-b or --baudrate |
|
||||
--rssi |
|
||||
--tap |
|
執行 Sniffer
請務必使用 NCP 的特定裝置路徑和 你要監控的 Thread 網路。
如果按照本指南操作,nRF52840 DK 應透過
偵錯通訊埠,如 Flash
nRF52840。如要執行 Pyspinel Sniffer
使用 -b
標記指定資產的傳輸率 (如果原先變更的率)
並省略 --no-reset
旗標
如果「設定 Wireshark」顯示 RSSI,則必須一併包含 --rssi
旗標。例如,如要在頻道 15 上使用
裝置是掛接在 /dev/ttyACM0
,且 RSSI 包含在 Wireshark 輸出內容中:
cd path-to-pyspinel
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --rssi -b 460800 | wireshark -k -i -
現在,您應該已經能夠檢視這個應用程式的封包和相關通訊協定了。 設定:
請參閱 Spinel Sniffer 參考資料 進一步瞭解如何執行 Pyspinel Sniffer。
原生 USB 連線
使用 nRF52840 DK USB 連接埠時,OpenThread ot-rcp
二進位檔必須
使用 USB_trans
建構:
./script/build nrf52840 USB_trans
--no-reset
旗標
但在執行 sniffer 時省略 -b
旗標:
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -
資源
如需其他北歐工具,請參閱北歐半導體 — Thread 以 nRF52840 為基礎 (搭配 Wireshark) 的 Sniffer。