Visualizza il codice sorgente su GitHub
Questa guida spiega come configurare Wireshark ed eseguire Pyspinel per sniffare i pacchetti da una rete Thread.
Per utilizzare il plug-in extcap di Wireshark per lo sniffing dei pacchetti, consulta la sezione Packet Sniffing usando extcap.
Configurare l'ambiente di sniffer
Prima di iniziare, completa i seguenti passaggi:
- Esamina i requisiti per l'analisi dei pacchetti.
- Installa e configura Wireshark.
- Installa Pyspinel e le dipendenze senza extcap.
Crea lo sniffer
Crea e esegui il flashing di un dispositivo NCP da utilizzare come sniffer usando l'output binario ot-rcp
.
nRF52840 nordico
Per impostare l'esempio nordico nRF52840 per l'uso come sniffer, clonere
openthread/ot-nrf528xx
e configurare l'ambiente di build:
git clone https://github.com/openthread/ot-nrf528xx --recursive
./script/bootstrap
Imposta la velocità in baud su 460800. Trova la linea #define UART_BAUDRATE NRF_UARTE_BAUDRATE_115200
in src/nrf52840/transport-config.h
e sostituiscilo con #define UART_BAUDRATE NRF_UARTE_BAUDRATE_460800
.
Crea il programma binario:
./script/build nrf52840 UART_trans
Converti l'output binario 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
sulla scheda nRF52840 come descritto in dettaglio in
Esegui il flashing di nRF52840.
Disattiva Mass Storage Device (MSD) sull'nRF52840 per evitare problemi con i dati danni o interruzioni durante l'utilizzo della 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à di rete Thread
Prima di continuare, ottieni le seguenti proprietà per la rete Thread che vuoi da annusare. Ti serviranno per la configurazione di Wireshark e per l'esecuzione di Pyspinel sniffer.
Prefisso locale mesh
Per ottenere il prefisso locale mesh da un dispositivo nella rete Thread di destinazione:
Utilizzo dell'interfaccia a riga di comando 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"Utilizza la GUI web di OTBR, seleziona Stato. Il prefisso locale mesh è elencato come IPv6:MeshLocalPrefix simile a
wpanctl
.
Canale
Per recuperare il canale da un dispositivo nella rete Thread di destinazione:
Utilizzo dell'interfaccia a riga di comando OpenThread:
channel
15Utilizzo di
wpanctl
con un NCP:wpanctl getprop NCP:Channel
NCP:Channel = 15Utilizza la GUI web di OTBR, seleziona Stato. Il canale è indicato come NCP:canale simile a
wpanctl
.
Chiave di rete
La chiave di rete Thread viene utilizzata da Wireshark per decriptare i pacchetti dopo acquisizioni. Per ottenere la chiave di rete da un dispositivo nella rete Thread di destinazione:
Utilizzo dell'interfaccia a riga di comando 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 OTBR.
Opzioni sniffer
Opzioni | |||||
---|---|---|---|---|---|
-u or --uart |
|
||||
-c or --channel |
|
||||
--no-reset |
|
||||
--crc |
|
||||
-b or --baudrate |
|
||||
--rssi |
|
||||
--tap |
|
Esegui lo sniffer
Assicurati di utilizzare il percorso dispositivo specifico per il NCP e il canale per il Stai tentando di sniffare la rete Thread.
Se segui questa guida, il nRF52840 DK deve essere collegato alla macchina host
la porta di debug, come descritto in Eseguire il flashing della porta
nRF52840. Per eseguire lo sniffer Pispinel,
utilizzare il flag -b
per specificare la velocità in baud (se è stata modificata da quella predefinita)
e ometti il flag --no-reset
.
Se configuri Wireshark per visualizzare il feed RSSI, devi includere anche --rssi
quando esegui lo strumento di sniffer. Ad esempio, per sniffare sul Canale 15 utilizzando un
dispositivo montato su /dev/ttyACM0
con RSSI incluso nell'output 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 correlati per questa configurazione in Wireshark:
Fai riferimento allo Sniffer Spinel di riferimento per ulteriori informazioni sull'esecuzione dello sniffer Pyspinel.
Connessione USB nativa
L'utilizzo della porta USB nRF52840 DK richiede il file binario OpenThread ot-rcp
per
essere creata con USB_trans
:
./script/build nrf52840 USB_trans
--no-reset
ma ometti il flag -b
quando esegui lo sniffer:
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -
Risorse
Per altri strumenti nordici, consulta la pagina relativa a Nordic Semiconductor - Thread Sniffer basato su nRF52840 con Wireshark.