如何使用 tshark 捕获设备特定的 USB 数据包?

如何使用 tshark 捕获设备特定的 USB 数据包?

我有一个 USB 仪器,我想捕获它上面的数据包。我运行了.\tshark.exe -D,USB 接口是 6 号。然后我运行了命令:.\tshark.exe -c 100 -i 6它似乎捕获了我设备上的 USB 流量。

然后我突然想到,当此设备运行时,可能会有多个 USB 设备连接到系统,仅指定可能还不够。我知道设备 ID(0x0009) 和供应商 ID(0x08f7),如何通过 tshark 指定我想要捕获的确切设备?

我在 Windows 8 命令行中运行 tshark。

答案1

如何使用 tshark 捕获设备特定的 USB 数据包?

我知道设备 ID(0x0009)和供应商 ID(0x08f7),如何通过 tshark 指定我想要捕获的确切设备?

你可能想看看tshark(1) - Linux 手册页tshark——Wireshark 手册页以及-f-i切换选项。

另外看看Wireshark 捕获过滤器Wireshark USB 显示过滤器参考您可能会发现它对于构建适用的命令来过滤和满足您的需求很有用。

您可能能够使用捕获过滤器表达式(例如usb.device_address == #usb.addr == #-f开关一起使用)来告诉嗅探仅捕获来自特定 USB 设备的数据包。

tshark——Wireshark 手册页

可以使用以下命令指定捕获或读取过滤器 -F或者 -R 选项,在这种情况下,整个过滤器表达式必须指定为单个参数(这意味着如果它包含空格,则必须用引号引起来),或者可以在选项参数后使用命令行参数指定,在这种情况下,过滤器参数后的所有参数都被视为过滤器表达式。捕获过滤器仅在进行实时捕获时受支持;读取过滤器在进行实时捕获和读取捕获文件时受支持,但过滤时需要 TShark 做更多工作,因此如果您使用读取过滤器,在重负载下丢失数据包的可能性会更大。如果过滤器在选项参数后使用命令行参数指定,则如果正在进行捕获(即,如果未指定 -r 选项),则为捕获过滤器;如果正在读取捕获文件(即,如果-r选项已指定)。

-f <capture filter>

设置捕获过滤表达式。

此选项可以多次出现。如果在第一次出现 -i 选项之前使用,它将设置默认捕获过滤器表达式。如果在 -i 选项之后使用,它将为此选项之前出现的最后一个 -i 选项指定的接口设置捕获过滤器表达式。如果没有明确设置捕获过滤器表达式,则使用默认捕获过滤器表达式(如果提供)。

来源


tshark(1) - Linux 手册页

-i <capture interface>|-

设置用于实时数据包捕获的网络接口或管道的名称。

网络接口名称应与“tshark-D 命令“(如上所述);正如“tshark-D 命令”也可以使用。如果你使用的是 UNIX ,“网络状态“ 或者 ”配置文件“也可能用于列出接口名称,尽管并非所有 UNIX 版本都支持 ifconfig 的 -a 选项。

如果没有指定接口,沙克搜索接口列表,如果有非环回接口,则选择第一个非环回接口;如果没有非环回接口,则选择第一个环回接口。如果没有接口,沙克报告错误并且不开始捕获。

管道名称应为 FIFO(命名管道)的名称或“-”,以便从标准输入读取数据。从管道读取的数据必须采用标准 libpcap 格式。

注意:Win32 版本的沙克不支持从管道捕获!

来源

相关内容