Esta guía cubre cómo configurar Wireshark y ejecutar Pyspinel para rastrear paquetes de una red Thread.
Para usar el complemento extcap de Wireshark para el rastreo de paquetes, consulte Rastreo de paquetes usando extcap .
Configurar el entorno del rastreador
Antes de comenzar, complete los siguientes pasos:
- Revise los requisitos de detección de paquetes .
- Instalar y configurar Wireshark .
- Instale Pyspinel y dependencias sin extcap .
Construye el rastreador
Cree y actualice un dispositivo NCP para que sirva como sniffer, utilizando la salida binaria ot-rcp
.
Nórdico nRF52840
Para configurar el ejemplo de Nordic nRF52840 para usarlo como rastreador, clone openthread/ot-nrf528xx
y configure el entorno de compilación:
git clone https://github.com/openthread/ot-nrf528xx --recursive
./script/bootstrap
Establezca la velocidad en baudios en 460800. Busque la línea #define UART_BAUDRATE NRF_UARTE_BAUDRATE_115200
en src/nrf52840/transport-config.h
y reemplácela con #define UART_BAUDRATE NRF_UARTE_BAUDRATE_460800
.
Construye el binario:
./script/build nrf52840 UART_trans
Convierta la salida binaria ot-rcp
a hexadecimal:
arm-none-eabi-objcopy -O ihex build/bin/ot-rcp ot-rcp.hex
Flashee el archivo ot-rcp.hex
en la placa nRF52840 como se detalla en Flash the nRF52840 .
Deshabilite el dispositivo de almacenamiento masivo (MSD) en el nRF52840 para evitar problemas con la corrupción de datos o caídas al usar el puerto de depuración:
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.
Propiedades de la red de subprocesos
Antes de continuar, obtenga las siguientes propiedades para la red Thread que desea rastrear. Los necesitará para la configuración de Wireshark y para ejecutar el sniffer de Pyspinel.
Prefijo local de malla
Para obtener el prefijo local de malla de un dispositivo en la red de subprocesos de destino:
Uso de la CLI de OpenThread:
dataset active
Mesh Local Prefix: fd33:3333:3344:0/64Usando
wpanctl
con un NCP:wpanctl getprop IPv6:MeshLocalPrefix
IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"Utilizando la GUI web de OTBR, seleccione Estado . El prefijo local de malla aparece como IPv6:MeshLocalPrefix similar a
wpanctl
.
Canal
Para obtener el canal de un dispositivo en la red de subprocesos de destino:
Uso de la CLI de OpenThread:
channel
15Usando
wpanctl
con un NCP:wpanctl getprop NCP:Channel
NCP:Channel = 15Utilizando la GUI web de OTBR, seleccione Estado . El canal aparece como NCP:Channel similar a
wpanctl
.
Clave de red
Wireshark utiliza la clave de red Thread para descifrar los paquetes después de la captura. Para obtener la clave de red de un dispositivo en la red de subprocesos de destino:
Uso de la CLI de OpenThread:
networkkey
33334444333344443333444433334444Usando
wpanctl
con un NCP:wpanctl getprop Network:Key
Network:Key = [33334444333344443333444433334444]
La clave de red de subprocesos no está disponible en la GUI web de OTBR.
Opciones de rastreador
Opciones | |||||
---|---|---|---|---|---|
-u or --uart |
| ||||
-c or --channel |
| ||||
--no-reset |
| ||||
--crc |
| ||||
-b or --baudrate |
| ||||
--rssi |
| ||||
--tap |
|
Ejecutar el rastreador
Asegúrese de usar la ruta de dispositivo específica para su NCP y el canal para la red Thread que está intentando rastrear.
Si sigue esta guía, el nRF52840 DK debe conectarse a la máquina host mediante el puerto de depuración, como se describe en Flashear el nRF52840 . Para ejecutar el sniffer de Pyspinel, use el indicador -b
para especificar la velocidad en baudios (si se cambió el valor predeterminado) y omita el indicador --no-reset
.
Si configura Wireshark para mostrar RSSI, también debe incluir el indicador --rssi
cuando ejecuta la herramienta de rastreo. Por ejemplo, para olfatear el Canal 15 usando un dispositivo montado en /dev/ttyACM0
con RSSI incluido en la salida de Wireshark:
cd path-to-pyspinel
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --rssi -b 460800 | wireshark -k -i -
Ahora debería poder ver los paquetes y los protocolos relacionados para esta configuración en Wireshark:
Consulte la referencia del analizador Spinel para obtener más información sobre cómo ejecutar el analizador Pyspinel.
Conexión USB nativa
El uso del puerto USB nRF52840 DK requiere que el binario OpenThread ot-rcp
se construya con USB_trans
:
./script/build nrf52840 USB_trans
Flashee el nRF52840 DK, conéctelo a la máquina host mediante el puerto USB , luego use el indicador --no-reset
pero omita el -b
indicador al ejecutar el sniffer:python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -
Recursos
Para obtener herramientas nórdicas adicionales, consulte Nordic Semiconductor — Thread Sniffer basado en nRF52840 con Wireshark .