Kaynağı GitHub'da görüntüleyin
Bu kılavuzda, bir Thread ağından paketleri koklamak için Wireshark'ın nasıl yapılandırılacağı ve Pyspinel'in nasıl çalıştırılacağı açıklanmaktadır.
Paket izleme için Wireshark extcap eklentisini kullanmak istiyorsanız extcap kullanarak paket izleme başlıklı makaleyi inceleyin.
Tarayıcı ortamını ayarlama
Başlamadan önce aşağıdaki adımları tamamlayın:
- Paket Koklama Şartları'nı inceleyin.
- Wireshark'ı yükleyip yapılandırın.
- Pyspinel'i ve bağımlılıkları extcap olmadan yükleyin.
Koklayıcıyı oluşturma
ot-rcp
ikili çıkışını kullanarak bir NCP cihazı oluşturun ve sniffer olarak kullanılacak şekilde flaşlayın.
Nordic nRF52840
Nordic nRF52840 örneğini sniffer olarak kullanmak için openthread/ot-nrf528xx
'ü kopyalayın ve derleme ortamını ayarlayın:
git clone https://github.com/openthread/ot-nrf528xx --recursive
./script/bootstrap
Baud hızını 460800 olarak ayarlayın. src/nrf52840/transport-config.h
dosyasında #define UART_BAUDRATE NRF_UARTE_BAUDRATE_115200
satırını bulun ve #define UART_BAUDRATE NRF_UARTE_BAUDRATE_460800
ile değiştirin.
İkili dosyayı derleyin:
./script/build nrf52840 UART_trans
ot-rcp
ikili çıkışını onaltılık sisteme dönüştürün:
arm-none-eabi-objcopy -O ihex build/bin/ot-rcp ot-rcp.hex
ot-rcp.hex
dosyasını, nRF52840'u flaşlama bölümünde açıklandığı şekilde nRF52840 kartına flaşlayın.
Hata ayıklama bağlantı noktası kullanılırken veri bozulması veya veri kaybıyla ilgili sorunları önlemek için nRF52840'ta Toplu Depolama Aleti'ni (MSD) devre dışı bırakın:
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 ağı özellikleri
Devam etmeden önce, dinlemek istediğiniz mesaj dizisi ağı için aşağıdaki özellikleri alın. Wireshark yapılandırması ve Pyspinel sniffer'ı çalıştırmak için bunlara ihtiyacınız olacaktır.
Mesh Yerel Öneki
Hedef Thread ağındaki bir cihazdan Mesh yerel ön ekini almak için:
OpenThread KSA'yı kullanma:
dataset active
Mesh Local Prefix: fd33:3333:3344:0/64wpanctl
'ü NCP ile kullanma:wpanctl getprop IPv6:MeshLocalPrefix
IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"OTBR web kullanıcı arayüzünü kullanarak Durum'u seçin. Mesh yerel ön eki,
wpanctl
'ye benzer şekilde IPv6:MeshLocalPrefix olarak listelenir.
Kanal
Hedef Thread ağındaki bir cihazdan kanalı almak için:
OpenThread KSA'yı kullanma:
channel
15wpanctl
'ü NCP ile kullanma:wpanctl getprop NCP:Channel
NCP:Channel = 15OTBR web kullanıcı arayüzünü kullanarak Durum'u seçin. Kanal,
wpanctl
'ye benzer şekilde NCP:Channel olarak listelenir.
Ağ Anahtarı
Thread Network Key, Wireshark tarafından yakalama işleminden sonra paketlerin şifresini çözmek için kullanılır. Hedef Thread ağındaki bir cihazdan ağ anahtarını almak için:
OpenThread KSA'yı kullanma:
networkkey
33334444333344443333444433334444wpanctl
'ü NCP ile kullanma:wpanctl getprop Network:Key
Network:Key = [33334444333344443333444433334444]
Thread ağ anahtarı, OTBR web kullanıcı arayüzünde kullanılamaz.
Tarayıcı seçenekleri
Seçenekler | |||||
---|---|---|---|---|---|
-u or --uart |
|
||||
-c or --channel |
|
||||
--no-reset |
|
||||
--crc |
|
||||
-b or --baudrate |
|
||||
--rssi |
|
||||
--tap |
|
Koklayıcıyı çalıştırma
NCP'niz için belirli cihaz yolunu ve dinlemeye çalıştığınız Thread ağının kanalını kullandığınızdan emin olun.
Bu kılavuzdaki talimatları uygularsanız nRF52840 DK, nRF52840'a programlama bölümünde açıklandığı gibi hata ayıklama bağlantı noktası üzerinden ana makineye bağlanmalıdır. Pyspinel sniffer'ı çalıştırmak için baud hızını (varsayılandan değiştirildiyse) belirtmek üzere -b
işaretini kullanın ve --no-reset
işaretini çıkarın.
RSSI'yi görüntülemek için Wireshark'ı yapılandırırsanız, sniffer aracını çalıştırırken --rssi
işaretini de eklemeniz gerekir. Örneğin, /dev/ttyACM0
konumuna monte edilmiş bir cihazı kullanarak Wireshark çıkışına RSSI dahil edilmiş şekilde 15. kanalda dinleme yapmak için:
cd path-to-pyspinel
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --rssi -b 460800 | wireshark -k -i -
Artık Wireshark'ta bu yapılandırmayla ilgili paketleri ve ilgili protokolleri görüntüleyebilirsiniz:
Pyspinel sniffer'ı çalıştırma hakkında daha fazla bilgi için Spinel sniffer referansına bakın.
Yerel USB bağlantısı
nRF52840 DK USB bağlantı noktasını kullanmak için OpenThread ot-rcp
ikilisinin USB_trans
ile derlenmesi gerekir:
./script/build nrf52840 USB_trans
nRF52840 DK'yı flaşlayın, USB bağlantı noktası üzerinden ana makineye bağlayın, ardından --no-reset
işaretini kullanın ancak sniffer'ı çalıştırırken -b
işaretini çıkarın:
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -
Kaynaklar
Diğer Nordic araçları için Nordic Semiconductor — Thread Sniffer based on nRF52840 with Wireshark başlıklı makaleyi inceleyin.