为什么usbmon在/sys/kernel/debug/usb/usbmon/
文件夹中有多个节点用于单个总线(比如2s,2u,2t)?
当我试图用我的设备嗅探usb的交易时,它看起来像是错过了一些USB帧。(我的应用程序使用U2F-HiD与设备通信,有些数据包超过128个字节。)
什么是正确的方法来嗅探所有的贸易,并将其解析成可用的形式?(任何教程都会非常有用)现在我只使用重定向到文件的cat
。
发布于 2017-07-15 12:30:28
来自内核源代码中的Documentation/usb/usbmon.txt
:
目前支持两种格式:原始格式或“1t”格式和“1U”格式。内核2.6.21中不推荐使用“1t”格式。“1U”格式增加了一些字段,如ISO帧描述符、间隔等。它产生稍长的行,但否则是'1t‘格式的完美超集。
然后继续解释这些字段的含义。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,但我忘记了细节。
您可以通过挂载debugfs
直接访问HID描述符,包括原始的和内核解析的。
mount -t debugfs none /sys/kernel/debug
然后看看/sys/kernel/debug/hid/<dev>/rdesc
。hid-rd
还可以解析原始HID描述符。
如果您只是在HID报告之后,使用相应的hidraw
设备。
https://unix.stackexchange.com/questions/378630
复制相似问题