Neste guia, explicamos como configurar o Wireshark e executar o Pyspinel para detectar pacotes. de uma rede Thread.
Para usar o plug-in extcap do Wireshark na detecção de pacotes, consulte Interceptação de pacotes usando extcap.
Configurar o ambiente sniffer
Antes de começar, siga estas etapas:
- Consulte os requisitos de detecção de pacote.
- Instale e configure o Wireshark.
- Instale o Pyspinel e as dependências sem extcap.
Criar o sniffer
Crie e atualize um dispositivo NCP para servir como sniffer, usando a saída binária ot-rcp
.
NRF52840 nórdico
Para configurar o exemplo nórdico nRF52840 para uso como sniffer, clone
openthread/ot-nrf528xx
e configure o ambiente de build:
git clone https://github.com/openthread/ot-nrf528xx --recursive
./script/bootstrap
Defina a taxa de Baud como 460800. Encontre a linha #define UART_BAUDRATE NRF_UARTE_BAUDRATE_115200
em src/nrf52840/transport-config.h
e a substituir por #define UART_BAUDRATE NRF_UARTE_BAUDRATE_460800
.
Crie o binário:
./script/build nrf52840 UART_trans
Converta a saída binária ot-rcp
em hexadecimal:
arm-none-eabi-objcopy -O ihex build/bin/ot-rcp ot-rcp.hex
Atualize o arquivo ot-rcp.hex
na placa nRF52840, conforme detalhado em
Atualize o nRF52840.
Desative o dispositivo de armazenamento em massa (MSD, na sigla em inglês) no nRF52840 para evitar problemas com os dados quedas ou corrupção 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 Thread
Antes de continuar, acesse as seguintes propriedades para a rede Thread que você quer para cheirar. Você vai precisar deles para configurar o Wireshark e executar o detector
Prefixo local da malha
Para receber o prefixo local do Mesh de um dispositivo na rede Thread de destino:
Usando a CLI do OpenThread:
dataset active
Mesh Local Prefix: fd33:3333:3344:0/64Como usar
wpanctl
com um NCP:wpanctl getprop IPv6:MeshLocalPrefix
IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"Usando a GUI da Web do OTBR, selecione Status. O prefixo local da malha está listado como IPv6:MeshLocalPrefix, semelhante a
wpanctl
.
Canal
Para acessar o canal de um dispositivo na rede Thread de destino:
Usando a CLI do OpenThread:
channel
15Como usar
wpanctl
com um NCP:wpanctl getprop NCP:Channel
NCP:Channel = 15Usando a GUI da Web do OTBR, selecione Status. O canal está listado como NCP:Canal é semelhante a
wpanctl
.
Chave de rede
A chave de rede Thread é usada pelo Wireshark para descriptografar pacotes capturar. Para conseguir a chave de rede de um dispositivo na rede Thread de destino:
Usando a CLI do OpenThread:
networkkey
33334444333344443333444433334444Como usar
wpanctl
com um NCP:wpanctl getprop Network:Key
Network:Key = [33334444333344443333444433334444]
A chave de rede Thread não está disponível na GUI da Web do OTBR.
Opções de sniffer
Opções | |||||
---|---|---|---|---|---|
-u or --uart |
|
||||
-c or --channel |
|
||||
--no-reset |
|
||||
--crc |
|
||||
-b or --baudrate |
|
||||
--rssi |
|
||||
--tap |
|
Executar o sniffer
Use o caminho do dispositivo específico para seu NCP e o canal para o Rede Thread que você está tentando detectar.
Ao seguir este guia, o nRF52840 DK deve ser conectado à máquina host
a porta de depuração, conforme descrito em Atualizar o
nRF52840. Para executar o sniffer Pyspinel,
use a sinalização -b
para especificar a taxa de Baud (se ela tiver sido alterada do padrão);
e omitir a sinalização --no-reset
.
Se você Configurar o Wireshark para exibir o RSSI, também precisará incluir o --rssi
ao executar a ferramenta sniffer. Por exemplo, para detectar o Canal 15 usando
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ê pode conferir os pacotes e protocolos relacionados para este no Wireshark:
Consulte o sensor da espinha Referência para mais informações sobre como executar o detector Pyspinel.
Conexão USB nativa
O uso da porta USB nRF52840 DK exige que o binário ot-rcp
do OpenThread
ser criado com USB_trans
:
./script/build nrf52840 USB_trans
--no-reset
mas omita a sinalização -b
ao executar o sniffer:
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -
Recursos
Para mais ferramentas nórdicas, consulte Nordic Semiductor — Thread Sniffer baseado em nRF52840 com Wireshark.