Este guia aborda como configurar o Wireshark e executar o Pyspinel para detectar pacotes de uma rede Thread.
Para usar o plug-in extcap do Wireshark para sniffing de pacotes, consulte Packet Sniffing usando extcap .
Configure o ambiente do sniffer
Antes de começar, conclua as seguintes etapas:
- Revise os Requisitos de Sniffing de Pacotes .
- Instalar e configurar o Wireshark .
- Instale o Pyspinel e dependências sem extcap .
Construir o farejador
Construa e atualize um dispositivo NCP para servir como sniffer, usando a saída binária ot-rcp
.
Nórdica nRF52840
Para configurar o exemplo Nordic nRF52840 para uso como sniffer, clone openthread/ot-nrf528xx
e configure o ambiente de compilação:
git clone https://github.com/openthread/ot-nrf528xx --recursive
./script/bootstrap
Defina a taxa de transmissão como 460800. Encontre a linha #define UART_BAUDRATE NRF_UARTE_BAUDRATE_115200
em src/nrf52840/transport-config.h
e substitua-a por #define UART_BAUDRATE NRF_UARTE_BAUDRATE_460800
.
Construa o binário:
./script/build nrf52840 UART_trans
Converta a saída binária ot-rcp
para hexadecimal:
arm-none-eabi-objcopy -O ihex build/bin/ot-rcp ot-rcp.hex
Atualize o arquivo ot-rcp.hex
para a placa nRF52840 conforme detalhado em Flash the nRF52840 .
Desative o dispositivo de armazenamento em massa (MSD) no nRF52840 para evitar problemas com corrupção de dados ou quedas ao usar a porta de depuração:
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.
Propriedades da rede de threads
Antes de continuar, obtenha as seguintes propriedades para a rede Thread que você deseja farejar. Você precisará deles para configurar o Wireshark e executar o sniffer Pyspinel.
Prefixo local de malha
Para obter o prefixo local da malha de um dispositivo na rede de thread de destino:
Usando a CLI do OpenThread:
dataset active
Mesh Local Prefix: fd33:3333:3344:0/64Usando
wpanctl
com um NCP:wpanctl getprop IPv6:MeshLocalPrefix
IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"Usando o OTBR Web GUI, selecione Status . O Prefixo local da malha é listado como IPv6:MeshLocalPrefix semelhante a
wpanctl
.
Canal
Para obter o Canal de um dispositivo na rede Thread de destino:
Usando a CLI do OpenThread:
channel
15Usando
wpanctl
com um NCP:wpanctl getprop NCP:Channel
NCP:Channel = 15Usando o OTBR Web GUI, selecione Status . O canal é listado como NCP:Channel semelhante a
wpanctl
.
Chave de rede
A Thread Network Key é usada pelo Wireshark para descriptografar pacotes após a captura. Para obter a chave de rede de um dispositivo na rede Thread de destino:
Usando a CLI do OpenThread:
networkkey
33334444333344443333444433334444Usando
wpanctl
com um NCP:wpanctl getprop Network:Key
Network:Key = [33334444333344443333444433334444]
A chave de rede de thread não está disponível no OTBR Web GUI.
Opções de farejador
Opções | |||||
---|---|---|---|---|---|
-u or --uart |
| ||||
-c or --channel |
| ||||
--no-reset |
| ||||
--crc |
| ||||
-b or --baudrate |
| ||||
--rssi |
| ||||
--tap |
|
Execute o sniffer
Certifique-se de usar o caminho de dispositivo específico para seu NCP e o canal para a rede Thread que você está tentando detectar.
Se seguir este guia, o nRF52840 DK deve ser conectado à máquina host pela porta de depuração, conforme descrito em Flash o nRF52840 . Para executar o sniffer Pyspinel, use o sinalizador -b
para especificar a taxa de transmissão (se foi alterada do padrão) e omita o sinalizador --no-reset
.
Se você configurar o Wireshark para exibir RSSI, também deverá incluir o sinalizador --rssi
ao executar a ferramenta sniffer. Por exemplo, para farejar no Canal 15 usando um dispositivo montado em /dev/ttyACM0
com RSSI incluído na saída do Wireshark:
cd path-to-pyspinel
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --rssi -b 460800 | wireshark -k -i -
Agora você deve poder visualizar os pacotes e protocolos relacionados para esta configuração no Wireshark:
Consulte a referência do sniffer Spinel para obter mais informações sobre como executar o sniffer Pyspinel.
Conexão USB nativa
O uso da porta USB nRF52840 DK requer que o binário OpenThread ot-rcp
seja construído com USB_trans
:
./script/build nrf52840 USB_trans
Flash o nRF52840 DK, conecte-o à máquina host pela porta USB , então use o sinalizador --no-reset
mas omita o -b
sinalizador ao executar o sniffer:python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -
Recursos
Para ferramentas nórdicas adicionais, consulte Nordic Semiconductor — Thread Sniffer baseado em nRF52840 com Wireshark .