克服usbmon的数据字长限制

克服usbmon的数据字长限制

当使用 usbmon 捕获 USB 流量时,我有时会看到以下内容:

ffff8801ed3703c0 2599784347 S Bo:1:008:2 -115 74 = 24484880 087ffa7f dd7ffc08 d87fec7e d3000080 5e80a30c d1d43300 00803c9b

据报道,数据长度为 74 字节长,但实际数据字长要短得多(上例中为 32 字节)。

看来这是设计使然:引用自https://www.kernel.org/doc/Documentation/usb/usbmon.txt:“收集的数据的长度是有限的,可以小于数据长度字中报告的数据长度。”

可以克服这个限制以捕获所有数据字吗?

答案1

关于这个有一个不错的线程这里。 USBMon 的文本接口限制为 32 个字节,但二进制输出将包含所有内容,因此您可以使用它。 Wireshark 能够理解 usbmon 的二进制格式,以及虚拟USB分析仪,或者您可以编写自己的工具。

我实际上还没有尝试过,但我将 tcpdump 获取的一些小转储与 /dev/usbmon# 的简单猫进行了比较,除了 pcap 标头之外,它们几乎是相同的。我已经研究过 Wireshark 中的大量 USB 批量数据传输,所以我冒昧地回答你的问题是肯定的。

答案2

这个回复迟了,但有一个实用的 https://www.mankier.com/8/usbmon

-s 设置要打印的 USB 数据的最大长度。默认值是打印 32 个字节,就像内核的文本接口一样。除非明确设置,否则捕获大小会自动调整以匹配。

https://src.fedoraproject.org/rpms/usbmon

相关内容