本指南說明如何設定 Wireshark 並執行 Pyspinel 從 Thread 網路篩選封包。
如要使用 Wireshark extcap 外掛程式來處理封包,請參閱使用 extcap 的 Packet Sniffing 一文。
設定 sniffer 環境
開始操作前,請先完成下列步驟:
打造自動警報器
使用 ot-rcp
二進位檔輸出,建構並刷新 NCP 裝置來當做這位使用者。
北歐 nRF52840
如要設定 Nordic nRF52840 範例做為接收器,請複製 openthread/ot-nrf528xx
並設定建構環境:
git clone https://github.com/openthread/ot-nrf528xx --recursive
./script/bootstrap
將波特率設為 460800。在 src/nrf52840/transport-config.h
中找到 #define UART_BAUDRATE NRF_UARTE_BAUDRATE_115200
行,並替換為 #define UART_BAUDRATE NRF_UARTE_BAUDRATE_460800
。
建構二進位檔:
./script/build nrf52840 UART_trans
將 ot-rcp
二進位輸出轉換為十六進位:
arm-none-eabi-objcopy -O ihex build/bin/ot-rcp ot-rcp.hex
按照 Flash nRF52840 中的說明,將 ot-rcp.hex
檔案張貼到 nRF52840 電路板。
請停用 nRF52840 上的 Mass Storage Device (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.
執行緒網路屬性
繼續之前,請先取得下列要擷取的執行緒網路屬性。您將需要 Wireshark 設定並執行 Pyspinel sniffer。
網格本機前置字串
如何從目標執行緒網路中的裝置取得網格本機前置字串:
使用 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 網頁版 GUI,選取 [狀態]。網狀本機前置字串會顯示為與
wpanctl
相似的 IPv6:MeshLocalPrefix。
頻道
如何從目標執行緒網路中的裝置取得頻道:
使用 OpenThread CLI:
channel
15將
wpanctl
與 NCP 搭配使用:wpanctl getprop NCP:Channel
NCP:Channel = 15使用 OTBR 網頁版 GUI,選取 [狀態]。管道會列為與
wpanctl
相似的 NCP:Channel。
網路金鑰
Wireshark 會在擷取後使用封包網路解密封包。從目標執行緒網路中的裝置取得網路金鑰的方法如下:
使用 OpenThread CLI:
networkkey
33334444333344443333444433334444將
wpanctl
與 NCP 搭配使用:wpanctl getprop Network:Key
Network:Key = [33334444333344443333444433334444]
OTBR Web GUI 不支援執行緒網路金鑰。
Sniffer 選項
選項 | |||||
---|---|---|---|---|---|
-u or --uart |
|
||||
-c or --channel |
|
||||
--no-reset |
|
||||
--crc |
|
||||
-b or --baudrate |
|
||||
--rssi |
|
||||
--tap |
|
執行 Sniffer
務必針對 NCP 使用特定的裝置路徑,以及要嘗試清除的執行緒網路。
如果按照這份指南操作,您應將 nRF52840 DK 透過偵錯通訊埠附加至主機機器,詳情請參閱Flash nRF52840 中的說明。如要執行 Pyspinel sniffer,請使用 -b
旗標來指定波特率 (如果是預設值) 並省略 --no-reset
旗標。
如果設定 Wireshark 顯示 RSSI,則您必須在執行 sniffer 工具時納入 --rssi
旗標。舉例來說,若要在第 15 頻道使用掛接於/dev/ttyACM0
內建 RSSI 設定:
cd path-to-pyspinel
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --rssi -b 460800 | wireshark -k -i -
現在,您可以在 Wireshark 中查看這項設定的封包及相關通訊協定:
如要進一步瞭解如何執行 Pyspinel sniffer,請參閱 Spinel sniffer 參考資料。
原生 USB 連線
使用 Opennn558840 DK USB 連接埠需要 OpenThreadot-rcp
要用來建構USB_trans
:
./script/build nrf52840 USB_trans
Flash nRF52840 DK、透過 USB 連接埠連接至主機電腦,然後使用--no-reset
旗標,但省略-b
執行 sniffer 時執行旗標:
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -
資源
如需其他 Nordic 工具,請參閱 Nordic Semiconductor - Thread Sniffer 以 nRF52840 和 Wireshark 搭配使用。