Google is committed to advancing racial equity for Black communities. See how.

Pyspinel ile Paket Koklama

Pyspinel bir PCAP (paket yakalama) akım üreten bir karışık paket dinleyicisi bir Konu NCP veya RCP cihazı ve dönüşüm bunu için dinleyicisi aracı bağlar, kaydedilir veya Wireshark'ın doğrudan yöneltilen için.

Wireshark, IEEE 802.15.4, 6LoWPAN, IPv6, MLE (Mesh Link Kuruluşu), UDP ve CoAP gibi Thread yığınındaki ağ protokollerinin kodunu çözebilen açık kaynaklı bir araçtır.

Bu kılavuz, Wireshark'ın nasıl yapılandırılacağını ve bir Thread ağından paketleri koklamak için Pyspinel'in nasıl çalıştırılacağını kapsar.

Koklama paket için Wireshark extcap eklenti kullanmak için, bkz extcap kullanarak paket koklama .

Gereksinimler

Donanım:

  • NCP olarak hizmet verecek ve Pyspinel ile Wireshark'ı çalıştıracak bir ana makine:
    • macOS — 64 bit OS X 10.6 veya üstü
    • Ubuntu
  • 1 OpenThread cihazı bir flashed ot-ncp-ftd veya ot-rcp yapı.

Yazılım:

  • Python 3 Pyspinel çalıştırmak için
  • Wireshark Konu protokol desteği için 2.4.1 veya daha yeni

Kurulum

Sniffer ortamını kurun

Pyspinel ve bağımlılıkları klonlayın ve kurun:

  1. Bağımlılıkları yükleyin:
    sudo apt install python3-pip
    pip3 install --user pyserial ipaddress
  2. Pyspinel deposunu Clone:
    git clone https://github.com/openthread/pyspinel
  3. Pyspinel yükleyin:
    cd pyspinel
    python3 setup.py install

Alternatif olarak, yükleyerek ortamı kurmak pyspinel paketi. Bu paketin kullandığı Not Pyspinel v1.0.0a3 salınımını değil son Pyspinel ana.

pip3 install --user pyspinel

Wireshark'ı yükleyin

Linux

Bir terminal açın ve Wireshark'ı indirip kurmak için aşağıdaki komutları çalıştırın:

sudo add-apt-repository ppa:wireshark-dev/stable
sudo apt-get update
sudo apt-get install wireshark

Wireshark'ı root olmayan bir kullanıcı olarak çalıştırmanızı öneririz. Bunu yapmak için paketi yeniden yapılandırın:

sudo dpkg-reconfigure wireshark-common

Eğer soran iletişim kutusu olsun "Meli olmayan ayrıcalıklı yakalama paketleri mümkün?" Seçeneğini Evet, ardından eklemek wireshark kullanıcı ve güncelleme dosya izinlerini:

sudo adduser $USER wireshark
sudo chmod +x /usr/bin/dumpcap

Mac os işletim sistemi

İndirin ve Wireshark'ı yüklemek MacOS için.

Sniffer'ı inşa et

Yapı kullanarak dinleyicisi olarak hizmet etmek bir NCP cihazı flaş ve ot-rcp ikili çıkışı.

İskandinav nRF52840

Nordic nRF52840 örneğini bir dinleyici olarak kullanmak üzere ayarlamak için:

  1. Yapı ortamında yukarı Klon openthread / ot-nrf528xx ve seti:
    git clone https://github.com/openthread/ot-nrf528xx --recursive
    ./script/bootstrap
    
  2. 460800. olarak ayarla baud hızı hat bulun #define UART_BAUDRATE NRF_UARTE_BAUDRATE_115200 içinde src/nrf52840/transport-config.h ve ile değiştirin #define UART_BAUDRATE NRF_UARTE_BAUDRATE_460800 .
  3. : İkili Yapı
    ./script/build nrf52840 UART_trans
    
  4. Dönüştürme ot-rcp : onaltılık ikili çıkışı
    arm-none-eabi-objcopy -O ihex build/bin/ot-rcp ot-rcp.hex
    
  5. Flaş ot-rcp.hex ayrıntılı olarak nRF52840 kuruluna dosyayı Flaş nRF52840 .
  6. Ayıklama bağlantı noktasını kullanırken devre dışı bırak Yığın Depolama Aygıtı nRF52840 üzerinde (MSD) veri bozulması ile sorunları önlemek veya damlalar için:
    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.
    

İş parçacığı ağı özellikleri

Devam etmeden önce, koklamak istediğiniz Thread ağı için aşağıdaki özellikleri edinin. Wireshark yapılandırması ve Pyspinel sniffer'ı çalıştırmak için bunlara ihtiyacınız olacak.

Mesh Yerel Öneki

Hedef Thread ağındaki bir cihazdan Mesh Local Prefix'i almak için:

  1. OpenThread CLI kullanımı:
    dataset active
    Mesh Local Prefix: fd33:3333:3344:0/64
    
  2. Kullanılması wpanctl bir NCP ile:
    wpanctl getprop IPv6:MeshLocalPrefix
    IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"
    
  3. OTBR Web GUI kullanarak Durum seçin. Mesh Yerel Önek IPv6 olarak listelenmiştir: benzer MeshLocalPrefix wpanctl .

Kanal

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

  1. OpenThread CLI kullanımı:
    channel
    15
    
  2. Kullanılması wpanctl bir NCP ile:
    wpanctl getprop NCP:Channel
    NCP:Channel = 15
    
  3. OTBR Web GUI kullanarak Durum seçin. Kanal NCP olarak listelenmiştir: Kanal benzer wpanctl .

Ağ anahtarı

Thread Ağ Anahtarı, Wireshark tarafından yakalamadan sonra paketlerin şifresini çözmek için kullanılır. Hedef Konu ağındaki bir cihazdan Ağ Anahtarını almak için:

  1. OpenThread CLI kullanımı:
    networkkey
    33334444333344443333444433334444
    
  2. Kullanılması wpanctl bir NCP ile:
    wpanctl getprop Network:Key
    Network:Key = [33334444333344443333444433334444]
    

İş parçacığı Ağ Anahtarı, OTBR Web GUI'de mevcut değildir.

Wireshark yapılandırması - Protokoller

Wireshark, Thread paketlerini düzgün bir şekilde gösterecek şekilde yapılandırılmalıdır.

Wireshark seçin Tercihler ... Protokoller bölümünü genişletin ve.

6Düşük WPAN

Protokoller listesinden 6LoWPAN seçip doğrulamak veya şu ayarlarını değiştirin:

  1. RFC 4944 göre işaretini kaldırın Derive İD.
  2. Hedef Konu ağı için Mesh Yerel Önekine ile Güncelleme Bağlam 0.
OT Sniffer Wireshark 6LoWPAN

Wireshark, sıkıştırılmış IPv6 adresini ayrıştırmak ve IPv6 kaynak ve hedef adreslerini doğru şekilde görüntülemek için bağlam yapılandırmalarını kullanır.

Ağ geçidinde yapılandırılmış diğer ağ üstü öneklerin adreslerini göstermek için, diğer Bağlam Kimliklerini bu öneklerle güncelleyin.

Belirli bir ağ üstü önek için Bağlam Kimliğini almak için, herhangi bir MLE Verisi yanıt mesajında ​​İş parçacığı Ağı Verileri TLV'sini görüntüleyin. Örneğin:

Context 1: fd00:7d03:7d03:7d03::/64

CoAP

61631. (Adres istemek gibi) Bu olmasını sağlar TMF mesajları protokoller listesinden COAP ve set COAP UDP Bağlantı Noktası seçin görüntülenir.

IEEE 802.15.4

Protokoller listesinden IEEE 802.15.4 seçip doğrulamak veya aşağıdaki ayarları değiştirin:

  1. "0x809a" için (hex) 802.15.4 Ethertype ayarlayın.
  2. "AES-128 şifreleme, 32 bit Bütünlük Koruma" Güvenlik Suite ayarlayın.
  3. Yanındaki paket şifre çözme için Konu ağı Master Key eklemek edilir Şifre çözme anahtarları, Düzen ... düğmesini tıklayın.
    1. Bir Şifre çözme anahtarı eklemek için + tıklayın.
    2. Şifre çözme anahtarı sütuna Konu ağını Ana Anahtar girin.
    3. Enter Şifre çözme anahtarı endeksi olarak "1".
    4. Anahtar karma sütun liste seçin Konu karması.
    5. OT Sniffer Wireshark IEEE 802.15.4
    6. Şifre çözme anahtarını kaydetmek için Tamam'a tıklayın.

Konu

Protokoller listesinden Konu seçip doğrulamak veya şu ayarlarını değiştirin:

  1. Konu dizisi sayaç için "00000000" girin.
  2. İşaretini kaldırın kullanımı PAN İD birinci ana anahtarın iki sekizli.
  3. Konu dizi sayacını satın otomatik kontrol ediniz.

Herhangi protokol değişiklikleri kaydetmek için OK düğmesine tıklayın.

Bazı Thread trafiği ZigBee protokolü olarak analiz edilebilir. Bu iki protokolü doğru bir şekilde görüntülemek için, Wireshark'ta etkinleştirilmiş protokolleri düzenleyin:

  1. Wireshark olarak,> Etkin iletişim kuralları Analiz gidin.
  2. Aşağıdaki protokollerin işaretini kaldırın:
    1. LwMesh
    2. ZigBee
    3. ZigBee Yeşil Güç

Wireshark yapılandırması - RSSI

RSSI'yi Wireshark'ta görüntülemek için:

  1. Tercihler> Protokoller> IEEE 802.15.4 gidin.
  2. FCS Format ayarlayın:
    • TI CC24xx meta: IEEE 802.15.4 TAP Devre dışı bırakılırsa.
    • IEEE Eğer 802.15.4 TAP etkin: ITU-T CRC-16. gör --tap bayrağını Daha fazla bilgi için.
  3. Tamam kaydetmek ve Tercihler menüsüne dönüş için tıkla.
  4. Tercihler seçeneğini Görünüşü> Sütunlar.
  5. Yeni bir giriş ekleyin:
    • Başlık: RSSI
    • Tür: Özel
    • Alanlar: wpan.rssi
OT Sniffer Wireshark RSSI

Sniffer seçenekleri

Seçenekler
-u or --uart
Varsayılan değer
Yok - soket bağlantısı yerine seri bağlantılı bir cihaz kullanıyorsanız sağlanmalıdır.
Açıklama
-u veya --uart uygun olarak böyle bir cihaz yolu ile takip /dev/ttyUSB0 .
-c or --channel
Varsayılan değer
11
Açıklama
-c veya --channel bayrak bunun üzerine kokla paketlerinin için Konu Ağında yapılandırılan kanal tarafından izledi.
--no-reset
Varsayılan değer
Bu bayrak, varsayılan davranışı geçersiz kılar.
Açıklama
--no-reset sizin NCP cihaz yerli USB bağlantısı ile ana bilgisayara bağlıysa bayrağı gereklidir.
--crc
Varsayılan değer
Bu bayrak, varsayılan davranışı geçersiz kılar.
Açıklama
--crc bayrak tür TI ve İskandinav Semiconductor Konu panoları gibi platformlar için gereklidir. Bayrak, Wireshark'ta bir 'Kötü FCS' (çerçeve kontrol sırası) uyarısını önlemek için CRC'yi yeniden hesaplar.
-b or --baudrate
Varsayılan değer
115200
Açıklama
-b veya --baudrate bayrak varsayılan baud hızı geçersiz kılmak için kullanılır. Senin ile kullanılan aynı baud hızına bu değeri ayarlayın NCP yapı (biz 460800 öneririz).
--rssi
Varsayılan değer
Bu bayrak, varsayılan davranışı geçersiz kılar.
Açıklama
--rssi bayrak RSSI pcap çıkışı dahil edilmesini sağlamak için kullanılır. Eğer bu seçeneği kullanması gerekir TI CC24xx FCS biçimi seçeneği Wireshark etkindir.
--tap
Varsayılan değer
Bu bayrak, varsayılan davranışı geçersiz kılar.
Açıklama
--tap bayrak belirtir DLT_IEEE802_15_4_TAP(283) (örneğin, FCS, RSSI, LQI, kanal gibi) meta ile V ler içeren bir sözde bir başlıkla çerçeve formatı için,. Belirtilen Değilse, DLT_IEEE802_15_4_WITHFCS(195) TI CC24xx FCS formatında olduğu gibi doğrudan PHY çerçevesi aşağıdaki ek RSSI ve LQI varsayılan olarak kullanılacaktır. Eğer bu seçeneği kullanması gerekir ITU-T CRC-16 seçenek Wireshark etkindir. Bu seçenek Wireshark'ta etkinleştirilmemişse, bu bayrağı kullanmayın.

sniffer'ı çalıştır

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

Bu kılavuzu takip ederse açıklandığı gibi, nRF52840 DK, ayıklama portu tarafından konak makinesi eklenmelidir Flaş nRF52840 . Pyspinel sniffer çalıştırmak için kullanın -b (varsayılan değiştirildi varsa) Baud hızını belirlemek için bayrağı ve ihmal --no-reset bayrağı.

Örneğin, bir cihaz kullanılarak Kanal 15 algılaması için monte edilmiş /dev/ttyACM0 RSSI Wireshark çıkışında yer ile:

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ırma için paketleri ve ilgili protokolleri görebilmeniz gerekir:

Wireshark Yakalama

Bkz Spinel algılayıcısı başvuru Pyspinel algılayıcı çalıştırma hakkında daha fazla bilgi için bkz.

Yerel USB bağlantısı

OpenThread nRF52840 DK USB portunu gerektirir kullanma ot-rcp ile inşa edilecek ikili USB_trans :

./script/build nrf52840 USB_trans

, NRF52840 DK Flaş USB girişi ile ana makinede bağlayın sonra kullanmak, --no-reset bayrağı ancak ihmal -b algılayıcı çalıştıran bayrak:

python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -

Kaynaklar

Pyspinel ve Wireshark'ın nasıl kullanılacağı hakkında daha fazla bilgi için aşağıdakilere bakın: