Visualizza l'origine su GitHub
Questa guida illustra come configurare Wireshark ed eseguire Pyspinel per sniffare i pacchetti da una rete Thread.
Per utilizzare il plug-in extcap Wireshark per lo sniffing dei pacchetti, consulta Packet Sniffing using extcap.
Configurare l'ambiente Stackdriver
Prima di iniziare, completa i seguenti passaggi:
- Esamina i Requisiti di sniffing dei pacchetti.
- Installa e configura Wireshark.
- Installa Pyspinel e le dipendenze senza estensione.
Crea lo shard
Crea e esegui il flashing di un dispositivo NCP per essere utilizzato come snapshot tramite l'output binario di ot-rcp
.
Nordic nRF52840
Per configurare l'esempio Nordic nRF52840 da usare come slogan, clona
openthread/ot-nrf528xx
e configura l'ambiente di compilazione:
git clone https://github.com/openthread/ot-nrf528xx --recursive
./script/bootstrap
Imposta la velocità di trasmissione su 460.800. Trova la riga #define UART_BAUDRATE NRF_UARTE_BAUDRATE_115200
in src/nrf52840/transport-config.h
e sostituiscila con #define UART_BAUDRATE NRF_UARTE_BAUDRATE_460800
.
Crea il programma binario:
./script/build nrf52840 UART_trans
Converti l'output binario di ot-rcp
in esadecimale:
arm-none-eabi-objcopy -O ihex build/bin/ot-rcp ot-rcp.hex
Esegui il flashing del file ot-rcp.hex
alla scheda nRF52840 come descritto nella sezione Esegui il flashing della scheda nRF52840.
Disattiva Mass Storage Device (MSD) su nRF52840 per evitare problemi di danneggiamento o danneggiamento dei dati quando utilizzi la porta di debug:
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.
Proprietà rete Thread
Prima di continuare, cerca le proprietà seguenti per la rete Thread che vuoi sniffare. Ti serviranno per la configurazione di Wireshark e per eseguire lo snack Pyspinel.
Prefisso locale mesh
Per ottenere il prefisso locale mesh da un dispositivo nella rete Thread di destinazione:
Utilizzo dell'interfaccia a riga di comando di OpenThread:
dataset active
Mesh Local Prefix: fd33:3333:3344:0/64Utilizzo di
wpanctl
con un NCP:wpanctl getprop IPv6:MeshLocalPrefix
IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"Utilizzando la GUI web di OTBR, seleziona Stato. Il prefisso locale mesh è elencato come IPv6:MeshLocalPrefix simile a
wpanctl
.
Canale
Per ottenere il canale da un dispositivo nella rete Thread target:
Utilizzo dell'interfaccia a riga di comando di OpenThread:
channel
15Utilizzo di
wpanctl
con un NCP:wpanctl getprop NCP:Channel
NCP:Channel = 15Utilizzando la GUI web di OTBR, seleziona Stato. Il canale è indicato come NCP:Channel simile a
wpanctl
.
Chiave di rete
La chiave di rete Thread viene utilizzata da Wireshark per decriptare i pacchetti dopo l'acquisizione. Per recuperare la chiave di rete da un dispositivo nella rete Thread target:
Utilizzo dell'interfaccia a riga di comando di OpenThread:
networkkey
33334444333344443333444433334444Utilizzo di
wpanctl
con un NCP:wpanctl getprop Network:Key
Network:Key = [33334444333344443333444433334444]
La chiave di rete Thread non è disponibile nella GUI Web di OTBR.
Opzioni di snack
Opzioni | |||||
---|---|---|---|---|---|
-u or --uart |
|
||||
-c or --channel |
|
||||
--no-reset |
|
||||
--crc |
|
||||
-b or --baudrate |
|
||||
--rssi |
|
||||
--tap |
|
Esegui lo shard
Assicurati di utilizzare il percorso specifico del dispositivo per il tuo NCP e il canale per la rete Thread che stai cercando di sniffare.
Se segui questa guida, il nRF52840 DK deve essere collegato alla macchina host dalla porta di debug, come descritto in Esegui il flashing del nRF52840. Per eseguire lo snapshot Pyspinel, utilizza il flag -b
per specificare la velocità in baud (se è stata modificata dall'impostazione predefinita) e omettere il flag --no-reset
.
Se configuri Wireshark per visualizzare RSSI, devi includere anche il flag --rssi
quando esegui lo strumento di shard. Ad esempio, per sniffare il canale 15 utilizzando un dispositivo montato su /dev/ttyACM0
con RSSI incluso nell'output di Wireshark:
cd path-to-pyspinel
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --rssi -b 460800 | wireshark -k -i -
Ora dovresti essere in grado di visualizzare i pacchetti e i protocolli relativi per questa configurazione in Wireshark:
Per ulteriori informazioni sull'esecuzione dello shard Pyspinel, fai riferimento al riferimento di riferimento per lo stack.
Connessione USB nativa
Per utilizzare la porta USB nRF52840 DK, è necessario creare il programma binario OpenThread ot-rcp
con USB_trans
:
./script/build nrf52840 USB_trans
Esegui il flashing della porta nRF52840 DK, connettila al computer host tramite la porta
USB, quindi utilizza il flag --no-reset
ma ometti il flag -b
durante l'esecuzione dello snapshot:
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -
Risorse
Per altri strumenti nordici, consulta l'articolo Nordic Semiconductor — Thread Sniffer basato su nRF52840 con Wireshark.