Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Hít đất bằng Pyspinel

Xem nguồn trên GitHub

Hướng dẫn này trình bày cách định cấu hình Wireshark và chạy Pyspinel để phân tích các gói từ mạng Thread.

Để sử dụng plugin extcap của Wireshark cho việc thu thập gói tin, hãy tham khảoĐóng gói dựa trên phần mở rộng ,

Thiết lập môi trường quay khói

Trước khi bạn bắt đầu, hãy hoàn tất các bước sau:

Tạo giá đỡ

Xây dựng và flash một thiết bị NCP để phân phối nội dung nghe nhìn, bằng cách sử dụng đầu ra nhị phân là ot-rcp.

Bắc Âu nRF52840

Để thiết lập ví dụ về Bắc Âu nRF52840 nhằm sử dụng như ống khói, sao chép openthread/ot-nrf528xx và thiết lập môi trường xây dựng:

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

Đặt tốc độ truyền là 460800. Tìm dòng #define UART_BAUDRATE NRF_UARTE_BAUDRATE_115200 trong src/nrf52840/transport-config.h và thay thế bằng #define UART_BAUDRATE NRF_UARTE_BAUDRATE_460800.

Xây dựng tệp nhị phân:

./script/build nrf52840 UART_trans

Chuyển đổi đầu ra nhị phân ot-rcp thành hệ thập lục phân:

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

Flash tệp ot-rcp.hex vào bảng nRF52840 như được nêu chi tiết trong Flash nRF52840.

Hãy tắt Thiết bị lưu trữ hàng loạt (MSD) trên nRF52840 để tránh các vấn đề với hỏng hoặc hỏng dữ liệu khi sử dụng cổng gỡ lỗi:

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.

Thuộc tính của mạng chuỗi

Trước khi tiếp tục, hãy lấy các thuộc tính sau cho mạng Chuỗi mà bạn muốn gửi. Bạn sẽ cần những cấu hình này để định cấu hình Wireshark và chạy Pyspinel.

Tiền tố mạng cục bộ

Để nhận Tiền tố mạng cục bộ từ một thiết bị trong mạng Chuỗi mục tiêu:

  1. Sử dụng giao diện dòng lệnh (CLI) OpenThread:

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

  2. Sử dụng wpanctl với NCP:

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

  3. Sử dụng GUI Web OTBR, chọn Trạng thái. Tiền tố mạng cục bộ được liệt kê dưới dạng IPv6:MeshLocalPrefix tương tự như wpanctl.

Kênh

Để lấy Kênh từ một thiết bị trong mạng Chuỗi mục tiêu mục tiêu:

  1. Sử dụng giao diện dòng lệnh (CLI) OpenThread:

    channel
    15
    

  2. Sử dụng wpanctl với NCP:

    wpanctl getprop NCP:Channel
    NCP:Channel = 15
    

  3. Sử dụng GUI Web OTBR, chọn Trạng thái. Kênh được liệt kê dưới dạng NCP:Kênh tương tự như wpanctl.

Khóa mạng

Khóa mạng chuỗi được sử dụng bởi Wireshark để giải mã các gói sau khi chụp. Để lấy Khóa mạng từ một thiết bị trong mạng Thread mục tiêu:

  1. Sử dụng giao diện dòng lệnh (CLI) OpenThread:

    networkkey
    33334444333344443333444433334444
    

  2. Sử dụng wpanctl với NCP:

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

Khóa mạng chuỗi không khả dụng trong GUI Web OTBR.

Tùy chọn vuốt

Tùy chọn
-u or --uart
Giá trị mặc định
Không – phải cung cấp nếu bạn đang dùng thiết bị có kết nối nối tiếp chứ không phải kết nối với ổ cắm.
Mô tả
Cờ -u hoặc --uart theo sau là một đường dẫn trên thiết bị, chẳng hạn như /dev/ttyUSB0.
-c or --channel
Giá trị mặc định
11
Mô tả
Cờ -c hoặc --channel dẫn đến kênh đã định cấu hình trên Mạng chuỗi của bạn để xâm nhập các gói.
--no-reset
Giá trị mặc định
Cờ này sẽ ghi đè hoạt động mặc định.
Mô tả
Bạn cần gắn cờ --no-reset nếu thiết bị NCP của bạn kết nối với máy chủ bằng kết nối USB gốc.
--crc
Giá trị mặc định
Cờ này sẽ ghi đè hoạt động mặc định.
Mô tả
Bạn cần gắn cờ --crc cho các nền tảng như bảng TI và Cáp treo Bắc Âu. Cờ này sẽ tính toán lại câu trả lời soạn trước để tránh hiển thị cảnh báo "FCS" (trình tự kiểm tra khung) trong Wireshark.
-b or --baudrate
Giá trị mặc định
115200
Mô tả
Cờ -b hoặc --baudrate được dùng để ghi đè tốc độ truyền mặc định. Đặt giá trị này về cùng một tốc độ baud sử dụng với bản dựng NCP (bạn nên sử dụng 460800).
--rssi
Giá trị mặc định
Cờ này sẽ ghi đè hoạt động mặc định.
Mô tả
Cờ --rssi được dùng để đảm bảo RSSI đã được đưa vào dữ liệu đầu ra pcap. Bạn phải sử dụng cờ này nếu tùy chọn định dạng CC CC24xx FCS được bật trong Wireshark.
--tap
Giá trị mặc định
Cờ này sẽ ghi đè hoạt động mặc định.
Mô tả
Cờ --tap chỉ định DLT_IEEE802_15_4_TAP(283) cho định dạng khung, trong đó có tiêu đề giả chứa các TLV có siêu dữ liệu (chẳng hạn như FCS, RSSI, LQI, Kênh). Nếu không được chỉ định, theo mặc định, DLT_IEEE802_15_4_WITHFCS(195) sẽ được sử dụng cùng với RSSI và LQI bổ sung theo khung PHY, như ở định dạng TI CC24xx FCS. Bạn phải sử dụng cờ này nếu tùy chọn ITU-T CRC-16 được bật trong Wireshark. Nếu bạn không bật tùy chọn đó trong Wireshark, thì đừng sử dụng cờ này.

Chạy ssiffer

Hãy đảm bảo sử dụng đường dẫn thiết bị cụ thể cho NCP của bạn và kênh cho Mạng chuỗi mà bạn đang muốn phân tích.

Nếu làm theo hướng dẫn này, thì bạn nên đính kèm nRF52840 DK vào máy chủ bằng cổng gỡ lỗi, như mô tả trong phần Flash the nRF52840. Để chạy thao tác bắn tỉa Pyspinel, hãy sử dụng cờ -b để chỉ định tốc độ truyền (nếu đã thay đổi tùy chọn cài đặt mặc định) và bỏ qua cờ --no-reset.

Nếu định cấu hình Wireshark để hiển thị RSSI, bạn cũng phải bao gồm cờ --rssi khi chạy công cụ sniffer. Ví dụ: để phân tích nội dung trên Kênh 15 bằng cách sử dụng thiết bị được gắn ở /dev/ttyACM0, trong đó RSSI được đưa vào đầu ra Wireshark:

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

Bây giờ, bạn có thể xem các gói và giao thức có liên quan cho cấu hình này trong Wireshark:

Chụp dây điện

Hãy tham khảo Tài liệu tham khảo về chủ đề bắn tỉa ghim để biết thêm thông tin về cách chạy súng bắn đạn Pyspinel.

Kết nối USB gốc

Việc sử dụng cổng USB nRF52840 DK yêu cầu OpenThreadot-rcp nhị phân được xây dựng vớiUSB_trans :

./script/build nrf52840 USB_trans
Flash nRF52840 DK, kết nối bộ điều khiển đó với máy chủ bằng cổng USB, sau đó sử dụng--no-reset gắn cờ nhưng bỏ qua-b gắn cờ khi chạy bộ cắt:

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

Tài nguyên

Để biết thêm về các công cụ của Bắc Âu, hãy tham khảo Nordic Semiconductor — Thread Sniffer dựa trên nRF52840 với Wireshark.