Bonjour,
Je suis en train de d’étudier le comportement une clef USB capteur de température. Celle-ci est reconnu comme une interface HID.
Avec le logiciel usbsniff, je récupère les trames d’échange lors d'une utilisation avec son logiciel d'origine.
Voici le genre de trame que je recupere:
J'arrive a reproduire ce comportement en appelant WriteFile sur le handle du device et en rajoutant 0 au premier byte du buffer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 [2590219 ms] UsbSnoop - FdoHookDispatchInternalIoctl(a2dff1ea) : fdo=89263b70, Irp=891e4008, IRQL=0 [2590219 ms] >>> URB 134 going down >>> -- URB_FUNCTION_CLASS_INTERFACE: TransferFlags = 00000000 (USBD_TRANSFER_DIRECTION_OUT, ~USBD_SHORT_TRANSFER_OK) TransferBufferLength = 00000020 TransferBuffer = a75f8f91 TransferBufferMDL = 00000000 00000000: 0a 0b 0c 0d 00 00 02 00 00 00 00 00 00 00 00 00 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 UrbLink = 00000000 RequestTypeReservedBits = 00000022 Request = 00000009 Value = 00000200 Index = 00000001 [2590242 ms] UsbSnoop - MyInternalIOCTLCompletion(a2dff126) : fido=88d6c480, Irp=891e4008, Context=8906b548, IRQL=2 [2590242 ms] <<< URB 134 coming back <<< -- URB_FUNCTION_CONTROL_TRANSFER: PipeHandle = 88f3d548 TransferFlags = 0000000a (USBD_TRANSFER_DIRECTION_OUT, USBD_SHORT_TRANSFER_OK) TransferBufferLength = 00000020 TransferBuffer = a75f8f91 TransferBufferMDL = 88e78b30 UrbLink = 00000000 SetupPacket = 00000000: 21 09 00 02 01 00 20 00
Maintenant j'ai un autre type de trame :
On voit qu'il n'existe pas de grande différence avec la trame précédente si ce n'est le TransferFlags, et Request. Comment est-il possible de générer ce type de trame? Il me semble qu'avec WriteFile le request est forcé à 9.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 [2590920 ms] UsbSnoop - FilterDispatchAny(a2dfefd2) : IRP_MJ_INTERNAL_DEVICE_CONTROL [2590920 ms] UsbSnoop - FdoHookDispatchInternalIoctl(a2dff1ea) : fdo=89263b70, Irp=88b1f810, IRQL=0 [2590920 ms] >>> URB 144 going down >>> -- URB_FUNCTION_CLASS_INTERFACE: TransferFlags = 00000001 (USBD_TRANSFER_DIRECTION_IN, ~USBD_SHORT_TRANSFER_OK) TransferBufferLength = 00000100 TransferBuffer = a72f9501 TransferBufferMDL = 00000000 UrbLink = 00000000 RequestTypeReservedBits = 00000022 Request = 00000001 Value = 00000300 Index = 00000001 [2591051 ms] UsbSnoop - MyInternalIOCTLCompletion(a2dff126) : fido=88d6c480, Irp=88b1f810, Context=8906b548, IRQL=2 [2591051 ms] <<< URB 144 coming back <<< -- URB_FUNCTION_CONTROL_TRANSFER: PipeHandle = 88f3d548 TransferFlags = 0000000b (USBD_TRANSFER_DIRECTION_IN, USBD_SHORT_TRANSFER_OK) TransferBufferLength = 00000100 TransferBuffer = a72f9501 TransferBufferMDL = 892b34f0 00000000: 57 5a 14 00 14 00 53 00 00 00 00 00 00 00 00 00 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .../...
Merci d'avance pour tout information.
Partager