使用 Extcap 进行数据包嗅探

<ph type="x-smartling-placeholder"></ph> 在 GitHub 上查看源代码

本指南介绍如何为 Wireshark 配置 extcap 以嗅探来自 Thread 网络。

要在不使用 extcap 的情况下使用 Pyspinel 进行数据包嗅探,请参阅数据包嗅探 Pyspinel

设置嗅探器环境

在开始之前,请完成以下步骤:

验证

本指南已通过 Zolertia Firefly (Texas Instruments CC2538) 认证 SoC)(在以下主机系统上):

  • Debian 4.19.37 - Wireshark 3.0.4
  • macOS Mojave 10.14.6 - Wireshark 3.0.5
  • 64 位 Windows 10 版本 17134 - Wireshark 3.0.6

构建并刷写 Sniffer

构建和刷写说明因平台而异。

有关构建和刷写 CC2538 的说明,请参阅 CC2538 示例 README 文件。

如需了解常规构建说明,请参阅如何构建 OpenThread

使用嗅探器

Wireshark 首次启动时会显示 Wireshark 捕获屏幕。它 应列出连接到 OpenThread 嗅探器的硬件接口。

从单个接口捕获

如果这是您第一次使用界面,请点击选项按钮 :

OT Sniffer Wireshark Extcap 捕获

  1. 频道设置为所需的值。
  2. 检查 IEEE 802.15.4 TAP,确保信道信息 包含在 pcap 输出中,并可在 Wireshark GUI 中显示。
  3. 选中在拍摄开始时保存参数,确保这些参数 参数会在捕获开始后保存,从而避免 请在下次使用界面时再次进行设置(除非您需要 更改渠道)。
  4. 点击开始

OT Sniffer Wireshark Extcap 选项

如果参数已保存,则通过选择硬件开始嗅探 然后点击左上角的 Wireshark 图标

从多个接口捕获

选择截取屏幕中列出的所有硬件接口,然后点击 左上角的 Wireshark 图标。

在从多个嗅探器捕获数据时,请使用这些字段标识各个嗅探器 接口:

  • 接口 ID (frame.interface_id) - Wireshark 使用的接口标识符 识别捕获接口
  • 接口名称 (frame.interface_name) - 由 Wireshark 来识别捕获接口
  • 信道 (wpan-tap.ch_num) - IEEE 802.15.4 捕获通道(范围:11-26)

OT Sniffer Wireshark Extcap 数据包

问题排查

OpenThread 嗅探器未被列为 Wireshark 接口

  1. 如果您安装了多个 Python 解释器,请确保 Python 3 extcap 脚本会使用解释器。Pyspinel 不支持 Python 2。
  2. 检查 USB 上是否枚举了硬件以及驱动程序是否已加载。
  3. 检查是否已将正确的固件(NCP 或 RCP)刷写到 硬件。
  4. 验证位于 extcap 路径中的 Python 脚本可执行。
    • 对于 OS X 和 Linux: <ph type="x-smartling-placeholder">
        </ph>
      1. 验证 extcap_ot.py 是否存在执行权限 文件:
        ls -l extcap_ot.py
        
      2. 如果缺少 execute (x) 权限,请修改权限:
        chmod +x extcap_ot.py
        
      3. 验证接口是否已列出:
        extcap_ot.py --extcap-interfaces
        
    • 对于 Windows:
      1. 验证接口是否已列出:
        extcap_ot.bat --extcap-interfaces
        
      2. 如果此命令退出并显示 Python 错误,请验证 Python 版本是 3.x:
        py -3 --version
        

Wireshark 仅允许根用户捕获数据包

在 Ubuntu 上安装 Wireshark 期间,系统会提示用户选择一个 以下选项之一:

  1. 创建 wireshark 用户群组并允许该群组的所有成员执行以下操作: 捕获数据包
  2. 仅允许 root 用户捕获数据包。

强烈建议不要将 Wireshark 用作 root 用户。如果您选择 更改设置:

sudo dpkg-reconfigure wireshark-common

如果 Wireshark 配置为仅限 wireshark 群组,那么您可能需要将正确的用户添加到该群组:

sudo usermod -a -G wireshark user

此外,将正确的用户添加到 dialout 群组:

sudo usermod -a -G dialout user

关闭并重启 Wireshark,以便应用新的用户组设置。

在 Windows 上通过多个 USB 接口捕获音频时,出现 Wireshark 格式错误

这是一个已知问题 一些旧版本的 Wireshark确保您使用的是 Wireshark 3.0.6 或 。