Ten przewodnik opisuje, jak skonfigurować program Wireshark i uruchomić Pyspinel, aby pobierać pakiety z sieci typu Thread.
Informacje o tym, jak korzystać z wtyczki Wireshark extcap do przechwytywania pakietów, znajdziesz w artykule Przechwytywanie pakietów przy użyciu extcap.
Skonfiguruj środowisko sniffera
Zanim zaczniesz, wykonaj te czynności:
- Zapoznaj się z wymaganiami dotyczącymi wychwycenia paczek.
- Instalowanie i konfigurowanie Wireshark
- Instalowanie Pyspinel i zależności bez poszerzania zakresu
Zbuduj sniffer
Zbuduj i zsynchronizuj urządzenie NCP, aby użyć je jako sniffera przy użyciu danych wyjściowych ot-rcp
.
Nordic nRF52840
Aby skonfigurować przykład skandynawskiego nRF52840 do wykorzystania jako sniffera, skopiuj openthread/ot-nrf528xx
i skonfiguruj środowisko kompilacji:
git clone https://github.com/openthread/ot-nrf528xx --recursive
./script/bootstrap
Ustaw szybkość transmisji na 460 800. Znajdź wiersz #define UART_BAUDRATE NRF_UARTE_BAUDRATE_115200
w src/nrf52840/transport-config.h
i zastąp go #define UART_BAUDRATE NRF_UARTE_BAUDRATE_460800
.
Utwórz plik binarny:
./script/build nrf52840 UART_trans
Przekonwertuj dane binarne ot-rcp
na szesnastkowe:
arm-none-eabi-objcopy -O ihex build/bin/ot-rcp ot-rcp.hex
Prześlij plik ot-rcp.hex
na tablicę nRF52840 zgodnie z opisem w tym artykule.
Wyłącz pamięć masową na urządzeniu nRF52840, aby uniknąć problemów z uszkodzeniem danych lub spadkiem podczas korzystania z portu debugowania:
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.
Właściwości sieci wątku
Zanim przejdziesz dalej, pobierz następujące właściwości sieci Thread, którą chcesz monitorować. Będą potrzebne do skonfigurowania Wiresharka i uruchomienia sniffera Pyspinel.
Lokalny prefiks sieci typu mesh
Aby pobrać lokalny prefiks sieci typu mesh z urządzenia w sieci docelowej:
Za pomocą interfejsu wiersza poleceń OpenThread:
dataset active
Mesh Local Prefix: fd33:3333:3344:0/64Użycie tagu
wpanctl
z numerem NCP:wpanctl getprop IPv6:MeshLocalPrefix
IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"Korzystając z GUI w przeglądarce OTBR, wybierz Stan. Lokalny prefiks sieci typu mesh ma nazwę IPv6:MeshLocalPrefiks, podobną do
wpanctl
.
kanału
Aby pobrać kanał z urządzenia w sieci docelowej:
Za pomocą interfejsu wiersza poleceń OpenThread:
channel
15Użycie tagu
wpanctl
z numerem NCP:wpanctl getprop NCP:Channel
NCP:Channel = 15Korzystając z GUI w przeglądarce OTBR, wybierz Stan. Kanał jest wymieniony jako NCP:Channel, podobny do kanału
wpanctl
.
Klucz sieci
Wireshark odszyfrowuje pakiety po ich przechwyceniu z użyciem klucza sieciowego wątku. Aby pobrać klucz sieci z urządzenia w sieci docelowej:
Za pomocą interfejsu wiersza poleceń OpenThread:
networkkey
33334444333344443333444433334444Użycie tagu
wpanctl
z numerem NCP:wpanctl getprop Network:Key
Network:Key = [33334444333344443333444433334444]
Klucz sieciowy Thread nie jest dostępny w interfejsie internetowym OTBR.
Opcje sniffera
Opcje | |||||
---|---|---|---|---|---|
-u or --uart |
|
||||
-c or --channel |
|
||||
--no-reset |
|
||||
--crc |
|
||||
-b or --baudrate |
|
||||
--rssi |
|
||||
--tap |
|
Uruchom sniffer
Pamiętaj, aby użyć ścieżki urządzenia dla swojego NCP i kanału sieci, którą chcesz przechwytywać.
W tym przewodniku port nRF52840 DK należy do niego podłączyć przez port debugowania zgodnie z opisem w sekcji Flash the RR52840. Aby uruchomić sniffer Pyspinel, użyj flagi -b
, aby określić szybkość transmisji (jeśli została zmieniona z domyślnej) i pominąć flagę --no-reset
.
Jeśli skonfigurujesz program Wireshark tak, aby wyświetlał RSSI, musisz też dołączyć flagę --rssi
podczas uruchamiania sniffera. Aby na przykład monitorować kanał 15 za pomocą urządzenia podłączonego do kanału /dev/ttyACM0
z funkcją RSSI w danych wyjściowych Wireshark:
cd path-to-pyspinel
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --rssi -b 460800 | wireshark -k -i -
Pakiety i powiązane protokoły powinny być teraz dostępne w Wireshark:
Więcej informacji o skanowaniu sniffera Pyspinel znajdziesz w tym artykule.
Natywne połączenie USB
Przez port USB nRF52840 DK musi być utworzony plik binarny OpenThread ot-rcp
z użyciem USB_trans
:
./script/build nrf52840 USB_trans
Wtyczka Flash nRF52840 DK należy połączyć z hostem przez port USB, a następnie użyć flagi --no-reset
, pomijając sniffer:
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -
Zasoby
Więcej informacji o nordykach znajdziesz w artykule Nordic półprzewodnik – sniffer do nici oparty na nRF52840 firmy Wireshark.