使用PyUSB重放Wireshark捕获的数据包

时间:2014-04-18 22:18:41

标签: python usb wireshark packet-sniffers pyusb

我使用wireshark捕获了一个URB数据包:

219774  438.775555000   host    31.0    USBVIDEO    66  SET CUR Request  [Brightness]

和Wireshark显示以下偏移十六进制文本:

0000   c0 f6 0b a3 00 88 ff ff 53 02 00 1f 01 00 00 00  ........S.......
0010   2c a1 51 53 00 00 00 00 57 5e 0b 00 8d ff ff ff  ,.QS....W^......
0020   02 00 00 00 02 00 00 00 21 01 00 02 00 02 02 00  ........!.......
0030   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0040   00 00                                            ..

现在我尝试使用PyUSB以下列方式重播此数据包:\

device = usb.core.find(idVendor=0x04f2, idProduct=0xb2ea)
device.detach_kernel_driver(0)
cfg = device.get_active_configuration()
intf = cfg[(0,0)]
ep = intf[0]
data = 'c03998300288ffff5302000401000000d78f51530000000084ad08008dffffff02000000020000002101000200020200000000000000000000000000000000003200'
data = [ int(''.join([data[i], data[i+1]]), base=16) for i in range(0, len(data), 2)]
print '%d/%d written' %(ep.write(object_to_write), len(object_to_write))

输出:

11/66 written

这让我觉得我不明白pyusb在数据前面添加了多少元数据,wirehark省略了多少元数据等等。任何想法我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:0)

快速查看,我发现可变数据很长。 您使用可变数据发送的内容可能是一个数据包,但必须进行格式化。 URB数据包结构由不同的数据格式化,例如_URB_HEADER,_URB_HEADER ...

看看这个链接可能会更好地解释。 https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/usb/ns-usb-_urb