In diesem Leitfaden wird beschrieben, wie Wireshark konfiguriert und Pyspinel ausgeführt wird, um Pakete aus einem Thread-Netzwerk zu erkennen.
Wie Sie das Wireshark-extcap-Plug-in für das Sniffing von Paketen verwenden, erfahren Sie unter Packet-Sniffing mit extcap.
Sniffer-Umgebung einrichten
Führen Sie zuerst die folgenden Schritte aus:
- Lesen Sie die Anforderungen zum Sniffing von Paketen.
- Wireshark installieren und konfigurieren.
- Pyspinel und Abhängigkeiten ohne Erweiterung installieren
Sniffer bauen
Erstellen und Flashen Sie ein NCP-Gerät, das als Sniffer dient und die Binärausgabe ot-rcp
verwendet.
Nordisch nRF52840
Klonen Sie openthread/ot-nrf528xx
und richten Sie die Build-Umgebung ein, um das Nordic-Beispiel nRF52840 als Sniffer einzurichten:
git clone https://github.com/openthread/ot-nrf528xx --recursive
./script/bootstrap
Baudrate auf 460800 festlegen. Suchen Sie die Zeile #define UART_BAUDRATE NRF_UARTE_BAUDRATE_115200
in src/nrf52840/transport-config.h
und ersetzen Sie sie durch #define UART_BAUDRATE NRF_UARTE_BAUDRATE_460800
.
Erstellen Sie das Binärprogramm:
./script/build nrf52840 UART_trans
Konvertieren Sie die Binärausgabe von ot-rcp
in Hexadezimalwerte:
arm-none-eabi-objcopy -O ihex build/bin/ot-rcp ot-rcp.hex
Flash-Datei ot-rcp.hex
auf das nRF52840-Board, wie unter nRF52840 blinken beschrieben.
Deaktivieren Sie Massenspeichergeräte auf dem nRF52840, um Probleme mit Datenbeschädigung oder -abfällen bei Verwendung des Debug-Ports zu vermeiden:
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.
Thread-Netzwerkattribute
Bevor Sie fortfahren, rufen Sie die folgenden Attribute des Thread-Netzwerks ab, das Sie schnuppern möchten. Sie benötigen sie für die Wireshark-Konfiguration und die Ausführung des Pyspinel-Sniffers.
Lokales Mesh-Präfix
So rufen Sie das lokale Mesh-Präfix von einem Gerät im Thread-Zielnetzwerk ab:
Mit der OpenThread-Befehlszeile:
dataset active
Mesh Local Prefix: fd33:3333:3344:0/64wpanctl
mit einem NCP verwenden:wpanctl getprop IPv6:MeshLocalPrefix
IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"Wählen Sie über die OTBR-Web-GUI Status aus. Das lokale Mesh-Präfix wird als IPv6:MeshLocalPrefix ähnlich wie
wpanctl
aufgeführt.
Kanal
So rufen Sie den Kanal von einem Gerät im Thread-Zielnetzwerk ab:
Mit der OpenThread-Befehlszeile:
channel
15wpanctl
mit einem NCP verwenden:wpanctl getprop NCP:Channel
NCP:Channel = 15Wählen Sie über die OTBR-Web-GUI Status aus. Der Kanal wird als NCP:Channel aufgeführt, ähnlich wie
wpanctl
.
Netzwerkschlüssel
Der Thread-Netzwerkschlüssel wird von Wireshark verwendet, um Pakete nach der Erfassung zu entschlüsseln. So rufen Sie den Netzwerkschlüssel von einem Gerät im Thread-Zielnetzwerk ab:
Mit der OpenThread-Befehlszeile:
networkkey
33334444333344443333444433334444wpanctl
mit einem NCP verwenden:wpanctl getprop Network:Key
Network:Key = [33334444333344443333444433334444]
Der Thread-Netzwerkschlüssel ist in der OTBR-Weboberfläche nicht verfügbar.
Sniffer-Optionen
Optionen | |||||
---|---|---|---|---|---|
-u or --uart |
|
||||
-c or --channel |
|
||||
--no-reset |
|
||||
--crc |
|
||||
-b or --baudrate |
|
||||
--rssi |
|
||||
--tap |
|
Sniffer ausführen
Verwenden Sie den spezifischen Gerätepfad für Ihren NCP und den Kanal für das Thread-Netzwerk, das Sie schnuppern möchten.
Wenn Sie dieser Anleitung folgen, sollte der nRF52840-DK wie im Abschnitt Flash nRF52840 beschrieben über den Debug-Port an den Hostcomputer angehängt werden. Verwenden Sie zum Ausführen des Pyspinel-Sniffers das Flag -b
, um die Baudrate anzugeben (falls sie vom Standardwert abweicht), und lassen Sie das Flag --no-reset
weg.
Wenn Sie Wireshark für die Anzeige von RSSI konfigurieren, müssen Sie beim Ausführen des Sniffer-Tools auch das Flag --rssi
angeben. Beispiel: So schnüffeln Sie in Kanal 15 mit einem unter /dev/ttyACM0
bereitgestellten Gerät mit RSSI in der Wireshark-Ausgabe:
cd path-to-pyspinel
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --rssi -b 460800 | wireshark -k -i -
Sie sollten jetzt die Pakete und die zugehörigen Protokolle für diese Konfiguration in Wireshark ansehen können:
Weitere Informationen zum Ausführen des Pyspinel-Sniffers finden Sie in der Spinel-Sniffer-Referenz.
Native USB-Verbindung
Wenn Sie den nKF-52840-DK-USB-Port verwenden, muss das OpenThread-Binärprogramm ot-rcp
mit USB_trans
erstellt werden:
./script/build nrf52840 USB_trans
Flashen Sie den nRF52840-DK, verbinden Sie ihn über den USB-Port mit dem Hostcomputer und verwenden Sie dann das Flag --no-reset
, wenn Sie den Sniffer ausführen:
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -
Ressourcen
Weitere nordische Tools finden Sie unter Nordic Semiconductor – Thread Sniffer based on nRF52840 with Wireshark.