Использование PyUSB для воспроизведения пакета, захваченного Wireshark

Я перехватил пакет URB с помощью wireshark:

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 и т. д. Есть идеи, как я могу это исправить?


person siemanko    schedule 18.04.2014    source источник


Ответы (1)


Быстро взглянув, я замечаю, что переменные данные довольно длинные. То, что вы отправляете с переменными данными, вероятно, является пакетом, но должно быть отформатировано. Структура пакета URB форматируется различными данными, такими как _URB_HEADER, _URB_HEADER...

Взгляните на эту ссылку, может объяснить лучше. https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/usb/ns-usb-_urb

person Miroslav Toffolon    schedule 13.04.2020