Посмотреть исходный код на GitHub
В этом руководстве рассказывается, как настроить Wireshark и запустить Pyspinel для перехвата пакетов из сети Thread.
Чтобы использовать плагин extcap Wireshark для анализа пакетов, обратитесь к разделу «Прослушивание пакетов с помощью extcap» .
Настройка среды сниффера
Прежде чем начать, выполните следующие шаги:
- Ознакомьтесь с требованиями к анализу пакетов .
- Установите и настройте Wireshark .
- Установите Pyspinel и зависимости без extcap .
Создайте сниффер
Создайте и прошейте устройство NCP, которое будет служить в качестве анализатора, используя двоичный вывод ot-rcp
.
Северный nRF52840
Чтобы настроить пример Nordic nRF52840 для использования в качестве анализатора, клонируйте openthread/ot-nrf528xx
и настройте среду сборки:
git clone https://github.com/openthread/ot-nrf528xx --recursive
./script/bootstrap
Установите скорость передачи данных как 460800. Найдите строку #define UART_BAUDRATE NRF_UARTE_BAUDRATE_115200
в src/nrf52840/transport-config.h
и замените ее на #define UART_BAUDRATE NRF_UARTE_BAUDRATE_460800
.
Создайте двоичный файл:
./script/build nrf52840 UART_trans
Преобразуйте двоичный вывод ot-rcp
в шестнадцатеричный:
arm-none-eabi-objcopy -O ihex build/bin/ot-rcp ot-rcp.hex
Запишите файл ot-rcp.hex
на плату nRF52840, как описано в разделе «Прошивка nRF52840» .
Отключите запоминающее устройство (MSD) на 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.
Свойства сети потоков
Прежде чем продолжить, получите следующие свойства для сети потоков, которую вы хотите прослушать. Они понадобятся вам для настройки Wireshark и запуска сниффера Pyspinel.
Локальный префикс сетки
Чтобы получить локальный префикс Mesh от устройства в целевой сети Thread:
Использование интерфейса командной строки OpenThread:
dataset active
Mesh Local Prefix: fd33:3333:3344:0/64Использование
wpanctl
с NCP:wpanctl getprop IPv6:MeshLocalPrefix
IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"Используя веб-интерфейс OTBR, выберите Статус . Локальный префикс Mesh указан как IPv6:MeshLocalPrefix, аналогичный
wpanctl
.
Канал
Чтобы получить канал с устройства в целевой сети Thread:
Использование интерфейса командной строки OpenThread:
channel
15Использование
wpanctl
с NCP:wpanctl getprop NCP:Channel
NCP:Channel = 15Используя веб-интерфейс OTBR, выберите Статус . Канал указан как NCP:Channel, аналогичный
wpanctl
.
Сетевой ключ
Сетевой ключ потока используется Wireshark для расшифровки пакетов после захвата. Чтобы получить сетевой ключ с устройства в целевой сети Thread:
Использование интерфейса командной строки OpenThread:
networkkey
33334444333344443333444433334444Использование
wpanctl
с NCP:wpanctl getprop Network:Key
Network:Key = [33334444333344443333444433334444]
Сетевой ключ потока недоступен в веб-интерфейсе OTBR.
Параметры сниффера
Параметры | |||||
---|---|---|---|---|---|
-u or --uart |
| ||||
-c or --channel |
| ||||
--no-reset |
| ||||
--crc |
| ||||
-b or --baudrate |
| ||||
--rssi |
| ||||
--tap |
|
Запустите сниффер
Обязательно используйте конкретный путь к устройству для вашего NCP и канал для сети Thread, которую вы пытаетесь перехватить.
Если следовать этому руководству, nRF52840 DK следует подключить к хост-компьютеру через порт отладки, как описано в разделе «Прошивка nRF52840» . Чтобы запустить анализатор Pyspinel, используйте флаг -b
, чтобы указать скорость передачи данных (если она была изменена по сравнению со значением по умолчанию), и опустите флаг --no-reset
.
Если вы настраиваете Wireshark для отображения RSSI, вы также должны включить флаг --rssi
при запуске инструмента анализа. Например, чтобы прослушивать канал 15 с помощью устройства, смонтированного в /dev/ttyACM0
с включенным RSSI в выходные данные Wireshark:
cd path-to-pyspinel
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --rssi -b 460800 | wireshark -k -i -
Теперь вы сможете просматривать пакеты и связанные протоколы для этой конфигурации в Wireshark:
Дополнительную информацию о запуске анализатора Pyspinel см. в справочнике по анализатору Spinel .
Родное USB-соединение
Для использования USB-порта nRF52840 DK требуется, чтобы двоичный файл OpenThread ot-rcp
был собран с помощью USB_trans
:
./script/build nrf52840 USB_trans
Прошейте nRF52840 DK, подключите его к хост-машине через USB-порт , затем используйте флаг --no-reset
, но опустите флаг -b
при запуске сниффера: python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -
Ресурсы
Дополнительные инструменты Nordic см. в документе Nordic Semiconductor — Thread Sniffer на базе nRF52840 с Wireshark .