USB代理驱动程序还是等效解决方

时间:2011-01-14 17:06:10

标签: c++ c usb driver kernel

问题:调解USB流量/数据

我希望接受特定USB端口上的入站流量,并将其完全复制为另一个特定USB端口上的出站流量,实际上是完成USB代理。那么,通过扩展,连接需要是双向的。另一个要求是端口必须能够伪造其外部设备所看到的身份(供应商ID,产品ID,......)。如果给定的解决方案也能够转储/记录原始流量,那将是非常棒的,尽管不是必需的。目标平台是Windows和/或Linux(任何人都可以)。

在进行史诗般的旅程并编写一个很可能会导致脑损伤的自定义驱动程序之前,我想问一下是否有人做过类似的事情,或者可能想到组装这个拼图所需的部分。 :)

2 个答案:

答案 0 :(得分:3)

我不认为这是开箱即用的,没有额外的硬件。

您期望连接到代理的“上游”端口的设备类型是什么?假设在“下游”端口上有一个常规设备(比如一个鼠标,就像一个例子),上游的设备需要是USB主机才能以有意义的方式处理USB设备。

但是您无法将计算机的USB端口(已经是其所有USB根端口的主机)直接连接到另一台计算机,这完全违反了USB的网络拓扑。两个端口都包含+5 V电源轨,如果将它们连接在一起,您可能会感到震惊。和/或私人烟花汇演。或者去最近的主板和/或PSU零售商...

此外,由于USB非常动态等等,我认为如果重复输出另一个端口,您可以预期来自一个端口的比特流有意义,因为地址信息等可能会发生变化。

有100%的软件USB分析器,比如http://www.usblyzer.com/,但我不太确定代码就像你描述的那样。

答案 1 :(得分:2)

在我的工作中,我们使用了这款Beagle USB分析仪。它位于设备和主机之间,可以不间断地捕获所有流量。它适用于Windows和Linux,甚至可以使用USB 2.0高速端口。

http://www.totalphase.com/products/beagle_usb480/

强烈推荐。