Z tego przewodnika dowiesz się, jak skonfigurować Wiresharka i uruchomić Pyspinel, aby skanować pakiety z sieci Thread.
Aby używać wtyczki extcap w Wireshark do wychwytywania pakietów, zapoznaj się z artykułem Wychwytywanie pakietów za pomocą extcap.
Konfigurowanie środowiska sniffera
Zanim zaczniesz, wykonaj te czynności:
- Zapoznaj się z wymaganiami dotyczącymi przechwytywania pakietów.
- Zainstaluj i skonfiguruj Wireshark.
- Zainstaluj Pyspinel i zależne pakiety bez extcap.
Tworzenie sniffera
Utwórz i przeflashuj urządzenie NCP, aby służyło jako sniffer, używając wyjścia binarnego ot-rcp
.
Nordic nRF52840
Aby skonfigurować przykład Nordic nRF52840 do użycia jako sniffer, sklonuj openthread/ot-nrf528xx
i skonfiguruj środowisko kompilacji:
git clone https://github.com/openthread/ot-nrf528xx --recursive
./script/bootstrap
Ustaw szybkość transmisji danych na 460800. Znajdź wiersz #define UART_BAUDRATE NRF_UARTE_BAUDRATE_115200
w pliku src/nrf52840/transport-config.h
i zastąp go wierszem #define UART_BAUDRATE NRF_UARTE_BAUDRATE_460800
.
Kompilowanie pliku binarnego:
./script/build nrf52840 UART_trans
Przekształć binarne dane wyjściowe ot-rcp
na szesnastkowe:
arm-none-eabi-objcopy -O ihex build/bin/ot-rcp ot-rcp.hex
Wgraj plik ot-rcp.hex
na płytkę nRF52840 zgodnie z instrukcjami w artykule Wgrywanie oprogramowania na płytkę nRF52840.
Aby uniknąć problemów z uszkodzeniem lub utratą danych podczas korzystania z portu debugowania, wyłącz urządzenie masowej pamięci (MSD) na nRF52840:
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 Thread
Zanim przejdziesz dalej, uzyskaj te właściwości sieci Thread, którą chcesz skanować. Będą one potrzebne do skonfigurowania Wiresharka i uruchomienia sniffera Pyspinel.
Mesh Local Prefix
Aby uzyskać prefiks lokalny sieci Mesh z urządzenia w docelowej sieci Thread:
Za pomocą interfejsu wiersza poleceń OpenThread:
dataset active
Mesh Local Prefix: fd33:3333:3344:0/64Korzystanie z usługi
wpanctl
z NCP:wpanctl getprop IPv6:MeshLocalPrefix
IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"W interfejsie internetowym OTBR wybierz Stan. Prefiks lokalny sieci Mesh jest wyświetlany jako IPv6:MeshLocalPrefix, podobnie jak
wpanctl
.
Kanał
Aby uzyskać kanał z urządzenia w docelowej sieci Thread:
Za pomocą interfejsu wiersza poleceń OpenThread:
channel
15Korzystanie z usługi
wpanctl
z NCP:wpanctl getprop NCP:Channel
NCP:Channel = 15W interfejsie internetowym OTBR wybierz Stan. Kanał jest wyświetlany jako NCP:Channel, podobnie jak
wpanctl
.
Klucz sieci
Klucz sieciowy Thread jest używany przez Wireshark do odszyfrowywania pakietów po przechwyceniu. Aby uzyskać klucz sieci z urządzenia w docelowej sieci Thread:
Za pomocą interfejsu wiersza poleceń OpenThread:
networkkey
33334444333344443333444433334444Korzystanie z usługi
wpanctl
z NCP:wpanctl getprop Network:Key
Network:Key = [33334444333344443333444433334444]
Klucz sieci Thread jest niedostępny w interfejsie internetowym OTBR.
Opcje sniffera
Opcje | |||||
---|---|---|---|---|---|
-u or --uart |
|
||||
-c or --channel |
|
||||
--no-reset |
|
||||
--crc |
|
||||
-b or --baudrate |
|
||||
--rssi |
|
||||
--tap |
|
Uruchamianie sniffera
Upewnij się, że używasz ścieżki urządzenia dla CNP i kanału dla sieci Thread, którą chcesz skanować.
Jeśli postępujesz zgodnie z tym przewodnikiem, moduł nRF52840 DK powinien być podłączony do komputera hosta przez port debugowania, zgodnie z opisem w artykule Programowanie modułów nRF52840. Aby uruchomić sniffer Pyspinel, użyj flagi -b
, aby określić szybkość transmisji danych (jeśli została zmieniona w porównaniu z wartością domyślną), i pominij flagę --no-reset
.
Jeśli skonfigurujesz Wiresharka tak, aby wyświetlał identyfikator RSSI, musisz też użyć flagi --rssi
podczas uruchamiania narzędzia sniffera. Aby na przykład przechwytywać na kanale 15 za pomocą urządzenia zamontowanego w miejscu /dev/ttyACM0
z identyfikatorem RSSI w wyjściu Wireshark:
cd path-to-pyspinel
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --rssi -b 460800 | wireshark -k -i -
W programie Wireshark powinieneś teraz widzieć pakiety i powiązane z tą konfiguracją protokoły:
Więcej informacji o uruchamianiu sniffera Pyspinel znajdziesz w dokumentacji sniffera Spinel.
Natywne połączenie USB
Korzystanie z portu USB nRF52840 DK wymaga utworzenia binarnego pliku OpenThread ot-rcp
z użyciem flagi USB_trans
:
./script/build nrf52840 USB_trans
Zaktualizuj nRF52840 DK, podłączając go do hosta przez port USB, a następnie użyj flagi --no-reset
, ale pomiń flagę -b
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 Nordic znajdziesz w artykule Nordic Semiconductor – sniffer Thread na podstawie nRF52840 z Wiresharkiem.