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.

Lặn với ống thở bằng Pyspinel

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Xem nguồn trên GitHub

Hướng dẫn này đề cập đến 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 trình bổ trợ tiện ích Wireshark cho tính năng phát hiện gói của ứng dụng, hãy tham khảo phần Packet Sniffing bằng cách sử dụng tiện ích.

Thiết lập môi trường kín

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

Xây dựng trò chơi bắn tỉa

Xây dựng và flash thiết bị NCP để phân phát dưới dạng phần tử riêng, sử dụng dữ liệu đầu ra nhị phân ot-rcp.

nRF52840 của Bắc Âu

Để thiết lập ví dụ của Nordic nRF52840 cho mục đích dùng làm trò chơi bắn tỉa, hãy sao chép openthread/ot-nrf528xx và thiết lập môi trường bản 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.

Tạo tệp nhị phân:

./script/build nrf52840 UART_trans

Chuyển đổi kết quả nhị phân ot-rcp thành giá trị hex:

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

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

Tắt Thiết bị lưu trữ hàng loạt (MSD) trên nRF52840 để tránh sự cố liên quan đến dữ liệu bị hỏng hoặc bị hỏng 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 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 phát hiện. Bạn sẽ cần có chúng để định cấu hình Wireshark và chạy Pssffer Pyspinel.

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

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

  1. Sử dụng 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 của Web OTBR, chọn Trạng thái. Tiền tố cục bộ Mesh được liệt kê là IPv6:MeshLocalprefix tương tự như wpanctl.

Kênh

Cách nhận Kênh từ một thiết bị trong mạng Chuỗi mục tiêu:

  1. Sử dụng CLI OpenThread:

    channel
    15
    

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

    wpanctl getprop NCP:Channel
    NCP:Channel = 15
    

  3. Sử dụng GUI của Web OTBR, chọn Trạng thái. Kênh này có tên là NCP:Channel tương tự như wpanctl.

Khóa mạng

Khóa mạng Thread được Wireshark sử dụng để giải mã các gói sau khi ghi lại. Để nhận Khóa mạng từ một thiết bị trong mạng Thread mục tiêu:

  1. Sử dụng CLI OpenThread:

    networkkey
    33334444333344443333444433334444
    

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

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

Khóa mạng Thread không có sẵn trong OTBR Web GUI.

Tùy chọn bắn tỉa

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

Chạy trò chơi bắn tỉa

Đảm bảo sử dụng đường dẫn thiết bị cụ thể cho NCP và kênh cho chuỗi mạng mà bạn đang cố gắng báo cáo.

Nếu làm theo hướng dẫn này, nRF52840 DK phải được đính kèm vào máy chủ bằng cổng gỡ lỗi, như được mô tả trong phần Flash nRF52840. Để chạy trình phân tích cú pháp Pyspinel, hãy sử dụng cờ -b để chỉ định tốc độ truyền (nếu tốc độ này đã thay đổ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ụ báo cáo. Ví dụ: để phát hiện trên Kênh 15 bằng một thiết bị được gắn ở /dev/ttyACM0 với RSSI có trong đầ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 liên quan cho cấu hình này trong Wireshark:

Ghi hình Wireshark

Tham khảo tài liệu tham khảo về bản cập nhật bằng giọng nói để biết thêm thông tin về cách chạy trình xử lý âm thanh Pyspinel.

Kết nối USB gốc

Để sử dụng cổng USB nRF52840 DK, cần phải tạo tệp nhị phân OpenThread ot-rcp bằng USB_trans:

./script/build nrf52840 USB_trans
Flash nRF52840 DK, kết nối tệp này với máy chủ theo cổng USB , sau đó sử dụng cờ --no-reset nhưng bỏ qua cờ -b khi chạy màn hình báo cáo:

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

Tài nguyên

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