使用计算机作为USB通信的中间人

本文关键字:通信 中间人 USB 计算机 | 更新日期: 2023-09-27 18:21:58

我想用我的Windows 7 x64 PC作为通信中间人来开发一个USB协议分析器。

使用嵌入式系统时,有时我有两个设备通过USB"通话",我需要看看它们在"说什么"。

我的想法是把这两个设备连接到我的电脑上,并告诉我的应用程序这是通信中使用的两个端口。接下来,应用程序将监听这两个端口,记录消息并将其重定向到另一个端口

如果有一种方法可以使用原始usb数据做到这一点,而不需要为这些usb设备安装驱动程序(其中一些设备没有Windows驱动程序),那将是完美的。

我有C#和Java的知识,但其他语言也可以接受。

使用计算机作为USB通信的中间人

您需要使用像SnoopyPro(免费软件开源)这样的USB嗅探程序来获取数据。我不知道它是否有办法将捕获实时转发到您的程序,但您可以保存捕获,然后在自己的代码中进行后期处理。只有当其中一个端点是您的计算机时,这才会起作用。

如果你有两台从未使用过你的电脑的设备,你可能需要专门的硬件(最便宜的一台是400美元,它无法实现更高的传输速率,你需要1200美元的型号才能实现。)

对于以太网数据:参考Linux的Netfilter架构,可以使用iptables和simple Module来修改数据包。这源于Linux内核开发人员在Netfilter上的五个挂钩点,可以方便开发人员合理地操作不同阶段的数据包。USB数据似乎没有类似neifilter的挂钩架构。要拦截和修改,这意味着您需要将自己的程序嵌入到设备&lt-->主机交互阶段。找到合适的位置并将您自己的内核代码放入其中以使其工作并不是一件简单的事情。