<ph type="x-smartling-placeholder"></ph> 在 GitHub 上查看源代码
本指南介绍如何配置 Wireshark 并运行 Pyspinel 以嗅探数据包 来自 Thread 网络。
要使用 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
二进制输出转换为十六进制:
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 Local Prefix,请运行以下命令:
使用 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,选择状态。系统会列出网状网本地前缀 为 IPv6:MeshLocalPrefix,类似于
wpanctl
。
频道
如需从目标 Thread 网络中的设备获取通道,请执行以下操作:
使用 OpenThread CLI:
channel
15将
wpanctl
与 NCP 搭配使用:wpanctl getprop NCP:Channel
NCP:Channel = 15使用 OTBR Web GUI,选择状态。渠道被列为 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 |
|
运行嗅探器
请确保针对 NCP 使用特定的设备路径,为 您正在尝试嗅探的线程网络。
如果按照本指南操作,nRF52840 DK 应通过
调试端口,如将
nRF52840。要运行 Pyspinel 嗅探器,
使用 -b
标志指定波特率(如果更改了默认值)
并省略 --no-reset
标志。
如果您配置 Wireshark 来显示 RSSI,则还必须包含 --rssi
标记。例如,要使用
在 /dev/ttyACM0
装载且 Wireshark 输出中包含 RSSI 的设备:
cd path-to-pyspinel
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --rssi -b 460800 | wireshark -k -i -
您现在应该能够 Wireshark 中的配置:
请参阅尖刺嗅探器 参考 有关运行 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 -
资源
如需了解其他北欧工具,请参阅北欧半导体 — Thread 基于 nRF52840 的嗅探器(含 Wireshark)。