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

标签 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 为数据添加了多少元数据,wireshark 省略了多少元数据等等。有什么想法可以解决这个问题吗?

最佳答案

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

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

关于python - 使用 PyUSB 重放 Wireshark 捕获的数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23163254/

相关文章:

ssl - 如何测试使用 HTTP 组件编写的 tls 实现

c++ - 是否有用于 Wireshark 的 API,用于开发与其交互/增强的程序/插件?

python - 对 NumPy 数组中的每 x 个数字进行平均

python - 如何使用 pygtk 创建弹出窗口?

python - 无法使用pipenv创建虚拟环境

java - 当 Keystore 是 USB 加密 token 时如何从 Keystore.load 抑制 PIN 错误对话框

与 USB 设备通信

c++ - 分析pcap文件的代码

python - 我想让命令 python3 运行 python3.7

c - 在 Linux 中通过串口通信发送十六进制数据