Ver el código fuente en GitHub
En esta guía, se explica cómo configurar Wireshark y ejecutar Pyspinel para detectar paquetes desde una red Thread.
A fin de usar el complemento de extcap de Wireshark para el análisis de paquetes, consulta Detección de paquetes con extcap.
Configura el entorno de detector
Antes de comenzar, completa los siguientes pasos:
- Revisa los Requisitos de detección de paquetes.
- Instala y configura Wireshark.
- Instala Pyspinel y las dependencias sin extcap.
Crea el detector
Crea e instala un dispositivo NCP para que funcione como el detector, con la salida binaria ot-rcp
.
Nórdico nRF52840
Para configurar el ejemplo nRF52840 nórdico y usarlo como detector, clona openthread/ot-nrf528xx
y configura el entorno de compilación:
git clone https://github.com/openthread/ot-nrf528xx --recursive
./script/bootstrap
Establecer la velocidad en baudios en 460,800 Busca la línea #define UART_BAUDRATE NRF_UARTE_BAUDRATE_115200
en src/nrf52840/transport-config.h
y reemplázala por #define UART_BAUDRATE NRF_UARTE_BAUDRATE_460800
.
Compila el objeto binario:
./script/build nrf52840 UART_trans
Convierte la salida binaria ot-rcp
en hexadecimal:
arm-none-eabi-objcopy -O ihex build/bin/ot-rcp ot-rcp.hex
Escribe el archivo ot-rcp.hex
en la placa nRF52840, como se indica en Flash en la placa nRF52840.
Inhabilita el dispositivo de almacenamiento masivo (MSD) en nRF52840 para evitar problemas de corrupción o disminución de datos cuando se usa 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, obtén las siguientes propiedades de la red Thread que deseas detectar. Los necesitarás para la configuración de Wireshark y el detector Pyspinel.
Prefijo local de malla
Para obtener el prefijo local de malla desde un dispositivo en la red Thread de destino, haz lo siguiente:
Usa la CLI de OpenThread:
dataset active
Mesh Local Prefix: fd33:3333:3344:0/64Usa
wpanctl
con un NCP:wpanctl getprop IPv6:MeshLocalPrefix
IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"Con la GUI web de OTBR, seleccione Estado. El prefijo local de la malla aparece como IPv6:MeshLocalPrefix similar a
wpanctl
.
Canal
Para obtener el canal de un dispositivo en la red de subprocesos de destino, haz lo siguiente:
Usa la CLI de OpenThread:
channel
15Usa
wpanctl
con un NCP:wpanctl getprop NCP:Channel
NCP:Channel = 15Con la GUI web de OTBR, seleccione Estado. El canal aparece en la lista como NCP:Channel similar a
wpanctl
.
Clave de red
Wireshark usa la clave de red del subproceso para desencriptar paquetes después de la captura. Para obtener la clave de red de un dispositivo en la red Thread de destino, haz lo siguiente:
Usa la CLI de OpenThread:
networkkey
33334444333344443333444433334444Usa
wpanctl
con un NCP:wpanctl getprop Network:Key
Network:Key = [33334444333344443333444433334444]
La clave de red de Thread no está disponible en la GUI web de OTBR.
Opciones de detector
Opciones | |||||
---|---|---|---|---|---|
-u or --uart |
|
||||
-c or --channel |
|
||||
--no-reset |
|
||||
--crc |
|
||||
-b or --baudrate |
|
||||
--rssi |
|
||||
--tap |
|
Ejecuta el detector
Asegúrate de usar la ruta de dispositivo específica para el NCP y el canal de la red de Thread que intentas detectar.
Si sigues esta guía, el nRF52840 DK debe estar conectado a la máquina anfitrión mediante el puerto de depuración, como se describe en Flash nRF52840. Para ejecutar el detector de Pyspinel, usa la marca -b
, especifica la velocidad en baud (si se cambió del predeterminada) y omite la marca --no-reset
.
Si configuras Wireshark para mostrar RSSI, también debes incluir la marca --rssi
cuando ejecutes la herramienta de detector. Por ejemplo, para detectar el canal 15 con un dispositivo activado en /dev/ttyACM0
con RSSI incluido en el resultado de Wireshark:
cd path-to-pyspinel
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --rssi -b 460800 | wireshark -k -i -
Ahora deberías poder ver los paquetes y los protocolos relacionados para esta configuración en Wireshark:
Consulta la referencia del detector de Spinel para obtener más información sobre cómo ejecutar el detector de Pyspinel.
Conexión USB nativa
Para usar el puerto USB nRF52840 DK, se debe compilar el objeto binario ot-rcp
de OpenThread con USB_trans
:
./script/build nrf52840 USB_trans
Flash
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -
Recursos
Para herramientas nórdicas adicionales, consulta Semiconductor nórdico: Thread Sniffer basado en nRF52840 con Wireshark.