usbmon有多个节点

usbmon有多个节点

为什么 usbmon 在文件夹中的单个总线有多个节点/sys/kernel/debug/usb/usbmon/(如 2s、2u、2t)?

当我尝试使用我的设备嗅探 USB 流量时,似乎丢失了一些 USB 帧。 (我的应用程序使用U2F-HiD与设备通信,并且一些数据包长度超过128字节。)

嗅探所有流量并将其解析为可用形式的正确方法是什么? (任何教程都会非常有用)现在我只使用cat重定向到文件。

答案1

来自Documentation/usb/usbmon.txt内核源代码:

目前支持两种格式:原始格式或“1t”格式和“1u”格式。内核 2.6.21 中已弃用“1t”格式。 “1u”格式添加了一些字段,例如 ISO 帧描述符、间隔等。它产生的行稍长,但在其他方面是“1t”格式的完美超集。

然后它继续解释这些字段的含义。 etc.节点1s提供某种状态(例如nreaders= 读者数量 = usbmon 事件的消费者),但我不知道详细信息,也从未使用过它们。

您可以使用类似wireshark虚拟分析仪更轻松地分析流量。还可以通过捕获tcpdump和事后分析进行:wireshark

sudo tcpdump -i usbmon1 -w usbmon.pcap &

编辑

您可以将该usbmon.pcap文件加载到wireshark中,就像通过tcpdump或其他方式获取的其他pcap文件一样。

IIRC,usbhid-dump读取并转储 HID描述符 由内核获取(因此它不会通过交换消息来获取它),并且有一些内核 API 更改和/或您必须取消绑定 USB 设备才能访问 HID,但我忘记了详细信息。

您可以通过挂载直接访问 HID 描述符,无论是原始描述符还是内核解析debugfs

mount -t debugfs none /sys/kernel/debug

然后看着/sys/kernel/debug/hid/<dev>/rdeschid-rd还可以解析原始 HID 描述符。

如果您正在寻找 HID报告,使用相应的hidraw设备。

相关内容