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:
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
J'arrive a reproduire ce comportement en appelant WriteFile sur le handle du device et en rajoutant 0 au premier byte du buffer.
Maintenant j'ai un autre type de trame :
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
.../...
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.
Merci d'avance pour tout information.