Pyspinel ile Koklama

Kaynağı GitHub'da göster

Bu kılavuzda, Wireshark'ın nasıl yapılandırılacağı ve Pyspinel'in bir Thread ağındaki paketleri algılamak için nasıl çalıştırılacağı ele alınmaktadır.

Paket yoklama için Wireshark ek bilgi eklentisini kullanmak üzere Extcap kullanarak paket koklama konusuna bakın.

Sniffer ortamını ayarlama

Başlamadan önce aşağıdaki adımları uygulayın:

Snifen'i oluşturun

ot-rcp ikili programını çıkışını kullanarak Snipli olarak hizmet vermek için bir NCP cihazı oluşturup yanıp sönün.

Kuzey nRF52840

Sniffer olarak kullanılacak Nordic nRF52840 örneğini ayarlamak için openthread/ot-nrf528xx özelliğini klonlayın ve derleme ortamını ayarlayın:

git clone https://github.com/openthread/ot-nrf528xx --recursive
./script/bootstrap

Bağlantı hızını 460800 olarak ayarlayın. src/nrf52840/transport-config.h bölgesinde #define UART_BAUDRATE NRF_UARTE_BAUDRATE_115200 satırını bulun ve #define UART_BAUDRATE NRF_UARTE_BAUDRATE_460800 ile değiştirin.

İkili program oluşturun:

./script/build nrf52840 UART_trans

ot-rcp ikili programını çıkış onaltılık değere dönüştürün:

arm-none-eabi-objcopy -O ihex build/bin/ot-rcp ot-rcp.hex

ot-rcp.hex dosyasını nRF52840 panosuna yanıp sönerken nnFF52840'ı Flash'ı tıklayın bölümünü inceleyin.

Hata ayıklama bağlantı noktasını kullanırken veri bozulması veya düşme gibi sorunlarla karşılaşmamak için nRF52840 üzerinde Toplu Depolama Cihazı (MSD) özelliğini 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.

Mesaj dizisi ağ özellikleri

Devam etmeden önce, sıkıştırmak istediğiniz Thread ağı için aşağıdaki özellikleri edinin. Wireshark yapılandırması için ve Pyspinel sniff'ini çalıştırmak için bunlara ihtiyacınız vardır.

Örgü Yerel Öneki

Hedef Thread ağındaki bir cihazdan Mesh Yerel Öneki'ni almak için:

  1. OpenThread KSA'yı kullanma:

    dataset active
    Mesh Local Prefix: fd33:3333:3344:0/64
    

  2. NCP ile wpanctl kullanma:

    wpanctl getprop IPv6:MeshLocalPrefix
    IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"
    

  3. OTBR Web GUI'yi kullanarak Durum'u seçin. Örgü Yerel Öneki, wpanctl ile benzer IPv6:MeshLocalPrefix olarak listelenir.

Kanal

Kanalı, hedef Thread ağındaki bir cihazdan almak için:

  1. OpenThread KSA'yı kullanma:

    channel
    15
    

  2. NCP ile wpanctl kullanma:

    wpanctl getprop NCP:Channel
    NCP:Channel = 15
    

  3. OTBR Web GUI'yi kullanarak Durum'u seçin. Kanal, wpanctl kanalına benzer şekilde NCP:Kanal olarak listelenir.

Ağ Anahtarı

Thread Ağ Anahtarı, yakalama sonrasında paketlerin şifresini çözmek için Wireshark tarafından kullanılır. Ağ Anahtarını hedef Thread ağındaki bir cihazdan almak için:

  1. OpenThread KSA'yı kullanma:

    networkkey
    33334444333344443333444433334444
    

  2. NCP ile wpanctl kullanma:

    wpanctl getprop Network:Key
    Network:Key = [33334444333344443333444433334444]
    

Mesaj Dizisi Ağ Anahtarı, OTBR Web GUI'sında kullanılamaz.

Sniffer seçenekleri

Seçenekler
-u or --uart
Varsayılan değer
Hiçbiri: Seri bağlantı yerine seri bağlantısı olan bir cihaz kullanıyorsanız sağlanmalıdır.
Açıklama
-u veya --uart işareti ve ardından /dev/ttyUSB0 gibi bir cihaz yolu.
-c or --channel
Varsayılan değer
11
Açıklama
-c veya --channel işaretinin ardından, İleti Dizisi Ağınızda yapılandırılan ve paketleri paketleyen kanal.
--no-reset
Varsayılan değer
Bu işaret, varsayılan davranışı geçersiz kılar.
Açıklama
NCP cihazınız ana makineye yerel USB bağlantısıyla bağlıysa --no-reset işareti gerekir.
--crc
Varsayılan değer
Bu işaret, varsayılan davranışı geçersiz kılar.
Açıklama
TI ve Nordic Semiconductor Thread panoları gibi platformlar için --crc işareti gerekiyor. Bayrak, CRC'yi Wireshark'ta "Bad FCS" (çerçeve kontrol dizisi) uyarısının olmaması için yeniden hesaplıyor.
-b or --baudrate
Varsayılan değer
115200
Açıklama
Varsayılan baud hızını geçersiz kılmak için -b veya --baudrate işareti kullanılır. Bu değeri, NCP derlemenizle kullandığınız aynı hıza ayarlayın (460800 olmasını öneririz).
--rssi
Varsayılan değer
Bu işaret, varsayılan davranışı geçersiz kılar.
Açıklama
--rssi işareti, RSSI'nin pcap çıkışına dahil edildiğinden emin olmak için kullanılır. Wireshark'da TI CC24xx FCS biçimi seçeneği etkinleştirildiyse bu işareti kullanmanız gerekir.
--tap
Varsayılan değer
Bu işaret, varsayılan davranışı geçersiz kılar.
Açıklama
--tap işareti, meta veri içeren TLV'lerin bulunduğu sözde bir başlıkla (FCS, RSSI, LQI, Kanal gibi) birlikte kare biçimi için DLT_IEEE802_15_4_TAP(283) öğesini belirtir. Belirtilmezse DLT_IEEE802_15_4_WITHFCS(195), TI CC24xx FCS biçiminde olduğu gibi doğrudan PHY çerçevesinin ardından gelen ek RSSI ve LQI ile varsayılan olarak kullanılır. Wireshark'da ITU-T CRC-16 seçeneği etkinleştirilmişse bu işareti kullanmanız gerekir. Bu seçenek Wireshark'ta etkinleştirilmemişse bu işareti kullanmayın.

Sniffer'ı çalıştırın

NCP'niz için belirli bir cihaz yolu ve yoklamaya çalıştığınız Thread ağı için kanal kullandığınızdan emin olun.

Bu kılavuzda belirtilen nRF52840 DK, hata ayıklama bağlantı noktası tarafından nRF52840 Flash dosyası bölümünde açıklandığı gibi ana makineye eklenmelidir. Pyspinel sniffer'ı çalıştırmak için baud hızını belirtmek üzere -b işaretini kullanın (varsayılan değerden değiştirildiyse) ve --no-reset işaretini çıkarın.

RSSI görüntülemek için Wireshark'ı yapılandırın. Sniffer aracını çalıştırdığınızda --rssi işaretini de eklemeniz gerekir. Örneğin, Channel Connect 15'i Wireshark çıkışına RSSI ekleyebilirsiniz. Bunu yapmak için /dev/ttyACM0 bölümüne takılan bir cihazı kullanabilirsiniz:

cd path-to-pyspinel
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --rssi -b 460800 | wireshark -k -i -

Artık Wireshark'da bu yapılandırma için paketleri ve ilgili protokolleri görüntüleyebilmeniz gerekir:

Wireshark Yakalama

Pyspinel dinleyiciyi çalıştırma hakkında daha fazla bilgi için Sinel sniffer referansı sayfasına bakın.

Yerel USB bağlantısı

nRF52840 DK USB bağlantı noktasını kullanmak için OpenThread ot-rcp ikili programının USB_trans ile oluşturulması gerekir:

./script/build nrf52840 USB_trans
nRF52840 DK'yı Flash'a geçirin, 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 İskandinav araçları için Wireshark ile nRF52840 tabanlı Nordic Semiconductor - Thread Sniffer makalesine bakın.