Ten przewodnik wyjaśnia, jak skonfigurować Wireshark i uruchomić Pyspinela do wąchania pakietów z sieci wątków.
Aby dowiedzieć się, jak używać wtyczki Wireshark extcap do wciągania pakietów, przeczytaj artykuł Korzystanie z Sneffingu za pomocą pakietu extcap.
Konfigurowanie środowiska sniffera
Zanim zaczniesz, wykonaj te czynności:
- Zapoznaj się z wymaganiami dotyczącymi sniffowania pakietów.
- Instalowanie i konfigurowanie Wireshark.
- Zainstaluj Pyspinel i zależności bez rozszerzenia
Sniffer
Skompiluj i zapisz Flasha na urządzeniu NCP, które będzie działać jako sniffer, używając wyjścia binarnego ot-rcp
.
Kraje nordyckie NRF52840
Aby skonfigurować przykład Nordic nRF52840 jako sniffera, klonujopenthread/ot-nrf528xx
i skonfiguruj środowisko kompilacji:
git clone https://github.com/openthread/ot-nrf528xx --recursive
./script/bootstrap
Ustaw szybkość transmisji na 460800. Znajdź wiersz #define UART_BAUDRATE NRF_UARTE_BAUDRATE_115200
w języku src/nrf52840/transport-config.h
i zastąp go tekstem #define UART_BAUDRATE NRF_UARTE_BAUDRATE_460800
.
Utwórz plik binarny:
./script/build nrf52840 UART_trans
Konwertuj dane binarne ot-rcp
na szesnastkowe wartości:
arm-none-eabi-objcopy -O ihex build/bin/ot-rcp ot-rcp.hex
Umieść plik ot-rcp.hex
na płytce nRF52840 zgodnie z opisem w sekcji Flash nRF52840.
Wyłącz urządzenie Mass Storage (MSD) na urządzeniu nRF52840, aby uniknąć problemów z uszkodzeniem lub spadkiem ilości danych 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, skonfiguruj następujące właściwości sieci wątków, do której chcesz wąchać. Będą Ci potrzebne do skonfigurowania Wiresharka i uruchomienia sniffera Pyspinel.
Lokalny prefiks sieci typu mesh
Aby uzyskać prefiks lokalny sieci typu mesh z urządzenia w sieci docelowej wątku:
Korzystanie z interfejsu wiersza poleceń OpenThread:
dataset active
Mesh Local Prefix: fd33:3333:3344:0/64Korzystanie z
wpanctl
z numerem NCP:wpanctl getprop IPv6:MeshLocalPrefix
IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"Za pomocą interfejsu OTBR Web GUI wybierz Stan. Prefiks lokalny sieci typu mesh ma postać IPv6:MeshLocalPrefix podobny do
wpanctl
.
Kanał
Aby pobrać kanał z urządzenia w sieci docelowej wątku:
Korzystanie z interfejsu wiersza poleceń OpenThread:
channel
15Korzystanie z
wpanctl
z numerem NCP:wpanctl getprop NCP:Channel
NCP:Channel = 15Za pomocą interfejsu OTBR Web GUI wybierz Stan. Kanał jest określony jako NCP:Channel podobny do
wpanctl
.
Klucz sieciowy
Klucz sieciowy wątków jest używany przez program Wireshark do odszyfrowywania pakietów po ich przechwyceniu. Aby uzyskać klucz sieciowy z urządzenia w sieci docelowej wątku:
Korzystanie z interfejsu wiersza poleceń OpenThread:
networkkey
33334444333344443333444433334444Korzystanie z
wpanctl
z numerem NCP:wpanctl getprop Network:Key
Network:Key = [33334444333344443333444433334444]
Klucz sieciowy Thread nie jest dostępny w interfejsie OTBR Web GUI.
Opcje sniffera
Opcje | |||||
---|---|---|---|---|---|
-u or --uart |
|
||||
-c or --channel |
|
||||
--no-reset |
|
||||
--crc |
|
||||
-b or --baudrate |
|
||||
--rssi |
|
||||
--tap |
|
Uruchom sniffera
Pamiętaj, aby użyć ścieżki określonego urządzenia NCP i kanału sieci, którą chcesz wąchać.
Jeśli wykonasz instrukcje z tego przewodnika, numer nRF52840 DK powinien być dołączony do komputera hosta przez port debugowania, zgodnie z opisem we Flashu nRF52840. Aby uruchomić sniffera Pyspinela, użyj flagi -b
, aby określić szybkość transmisji (jeśli została zmieniona z domyślnej), i pomiń flagę --no-reset
.
Jeśli skonfiguruj Wireshark do wyświetlania RSSI, musisz też dodać flagę --rssi
podczas uruchamiania narzędzia sniffera. Na przykład do nasłuchiwania kanału 15 przy użyciu urządzenia podłączonego do stacji /dev/ttyACM0
z usługą RSSI w wyniku Wireshark:
cd path-to-pyspinel
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --rssi -b 460800 | wireshark -k -i -
Teraz powinny być dostępne pakiety i powiązane protokoły dla tej konfiguracji w Wireshark:
Więcej informacji o uruchomieniu sniffera Pyspinela znajdziesz w dokumentacji sniffera Spinel.
Natywne połączenie USB
Port USB nRF52840 DK wymaga OpenThreadot-rcp
binarny
do kompilacji przy użyciuUSB_trans
:
./script/build nrf52840 USB_trans
Flash nRF52840 DKpołącz go z hostem przez port USB. , a następnie użyj--no-reset
ale pomiń-b
flaga podczas uruchamiania sniffera:
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -
Zasoby
Więcej informacji o narzędziach skandynawskich znajdziesz w artykule Nordic Semiconductor – Thread Sniffer oparte na nRF52840 z Wireshark.