![如何在外设或 OTG 模式下跟踪 USB 流量?](https://linux22.com/image/102816/%E5%A6%82%E4%BD%95%E5%9C%A8%E5%A4%96%E8%AE%BE%E6%88%96%20OTG%20%E6%A8%A1%E5%BC%8F%E4%B8%8B%E8%B7%9F%E8%B8%AA%20USB%20%E6%B5%81%E9%87%8F%EF%BC%9F.png)
我已在 Raspberry Pi Zero 上设置了 Raspbian Jessie,以将 USB OTG 与该dwc2
模块配合使用。我现在想做的是嗅探外设端传入的 USB 流量。我找到并测试了usbmon
内核模块,但它(显然,就我有限的知识而言)似乎不起作用:没有记录任何内容。
出于测试目的,我在主机端(Linux 上的另一台计算机)尝试了完全相同的操作,并且我可以使用usbmon
.不幸的是,这不是我需要的。
结论:这可能吗?如果是的话,怎么办?我可以使用usbmon
还是必须做其他事情(例如使用特定选项重新编译内核)?
答案1
该工具USBMon
尚未完成
有一个同名的内核模块是最新的
确保内核模块usbmon
可用加载它(modprobe usbmon
)并且您可以使用以下命令嗅探USB流量
usbdump
(作为内核模块的前端usbmon
)- 按照说明进行操作https://www.kernel.org/doc/Documentation/usb/usbmon.txt
- 线鲨https://www.wireshark.org/CaptureSetup/USB
答案2
由于我手头没有 RPi,所以我不能确定这是否适合您,但我已成功使用 和tcpdump
并wireshark
使用以下命令来监控远程计算机上的 USB 流量:
$ ssh user@remotehost 'tcpdump -U -i usbmon2 -w -' | wireshark -k -i -
此处,usbmon2
是2
连接 USB 设备的总线 ID。你可以通过 得到这个lsusb
。
答案3
经过大量挖掘后,当控制器处于状态时,似乎不可能(或者如果是的话,我只是在任何地方都找不到任何信息)跟踪 USB 流量设备(或外围设备)模式。仅当控制器配置为主持人。
由于 没有生成任何跟踪usbmon
,不幸的是我无法使用任何工具(Wireshark、dumpcap...),因为它们首先需要该跟踪。
因此,我现在要做的就是修改libcomposite
内核模块以添加调试信息,甚至编写一个专为嗅探而设计的特定模块(但这远远超出了我目前对此事的了解)。