1. 程式人生 > >Bus Hound抓包分析,USB設備識別為HID(轉)

Bus Hound抓包分析,USB設備識別為HID(轉)

mco port 一起 country ima ddr quest 事務 http

Device:17.0 —— 表示ID為17的設備的0號端點

Phase:階段列

Cmd.phase.ofs:命令數.階段數.每個階段中字節的偏移量

CTL:表示8字節的USB控制傳輸的Setup包

bmRequestType —— 80:數據方向從USB到PC;標準的請求;USB設備接收

bRequest —— 06:表示接下來發送的數據時GET_DESCRIPTOR(主控器讀取USB描述符)

wValue —— 00 01:從偏移地址0開始讀取設備描述符

wIndex —— 00 00:一般用於說明端點號或者接口標識

wLength —— 12 00:下一階段發送數據的長度為18個字節(小端格式理解)

First 【IN】:數據傳輸(USB設備到PC)

bLength —— 12:數據字節長度為18

bDescriptorType —— 01:設備描述符

bcdUSB —— 00 02:USB設備2.0協議
bDeviceClass —— ef:USB_DEVICE_CLASS_MISCELLANEOUS(雜項)

bDeviceSubClass —— 02

bDeviceProtocol —— 01

bMaxPacketSize0 —— 40:最大包長64個字節

idVendor —— 1Fc9

idProduct —— 100B

bcdDevice —— 0100

iManufacturer —— 01

iProduct —— 02

iSerialNumber —— 03

bNumConfigurations —— 01

Second 【IN】

bLength —— 09:該描述符結構體的大小為9個字節

bDescriptorType ——02:配置描述符

wTotalLength ——29 00:配置返回的所有數據大小為41個字節(其實是指明下一次傳輸的數據字節大小)

bNumInterfaces ——01:此配置的接口數量

bConfigurationValue ——01:此配置所需要的參數值

iConfiguration ——00:描述該配置的字符串的索引值

bmAttributes ——C0:供電模式的選擇USB_CONFIG_SELF_POWERED(自供電)

bMaxPower ——32:設備從總線提取的最大的電流100mA

Third 【IN】(前面數據和第二個IN一樣,從32後開始分析)

bLength —— 09:接口描述符結構體大小

bDescriptorType —— 04:USB_INTERFACE_DESCRIPTOR_TYPE

bInterfaceNumber —— 01:該接口的編號

bAlternateSetting —— 00:備用的接口描述符編號

bNumEndpoints —— 02:該接口使用的端點數,不包括端點0

bInterfaceClass —— 03:接口類型為USB_DEVICE_CLASS_HUMAN_INTERFACE(HID)

bInterfaceSubClass —— 00:接口子類型

bInterfaceProtocol —— 00:接口遵循的協議

iInterface —— 04:描述該接口的字符串索引值

HID Class Descriptor

bLength ——09:該HID描述符的大小

bDescriptorType —— 21:HID_HID_DESCRIPTOR_TYPE

bcdHID —— 00 01:HID類協議版本號,為1.1

bCountryCode —— 00:固件的國家地區代碼

bNumDescriptors —— 01:下級描述符的個數

bDescriptorType —— 22:下級描述符為HID_REPORT_DESCRIPTOR_TYPE(報告描述符)

wDescriptorLength —— 2C 00:下級描述符的長度

Endpoint HID Interrupt In

bLength —— 07

bDescriptorType —— 05:端點描述符

bEndpointAddress —— 84:HID_EP_IN Address

bmAttributes —— 03:USB_ENDPOINT_TYPE_INTERRUPT

wMaxPacketSize —— 04

bInterval —— 00 20:間隔為16ms

Endpoint HID Interrupt Out

bLength —— 07

bDescriptorType —— 05:端點描述符

bEndpointAddress —— 04:HID_EP_OUT Address

bmAttributes —— 03:USB_ENDPOINT_TYPE_INTERRUPT

wMaxPacketSize —— 04

bInterval —— 00 20:間隔為16ms

CTL:表示8字節的USB控制傳輸的Setup包

bmRequestType —— 00:數據方向從PC到USB;標準的請求;USB設備接收

bRequest —— 09:表示接下來的請求是SET_CONFIGURATION (設置配置)

wValue —— 00 01:從偏移地址0開始讀取設備描述符

wIndex —— 00 00:一般用於說明端點號或者接口標識

wLength —— 00 00

CTL:表示8字節的USB控制傳輸的Setup包

bmRequestType —— 21:數據方向從PC到USB;Class類的請求;接口接收

bRequest —— 0a:表示接下來的請求是GET_INTERFACE (獲取接口)

wValue —— 00 00:從偏移地址0開始讀取設備描述符

wIndex —— 01 00:接口標識為01

wLength —— 00 00

CTL:表示8字節的USB控制傳輸的Setup包

bmRequestType —— 81:數據方向從USB到PC;標準請求;接口接收

bRequest —— 06:表示接下來的請求是獲取描述符

wValue —— 00 22:從偏移地址00 22開始讀取描述符

wIndex —— 01 00:接口標識為01

wLength —— 6C 00:數據長度為108個字節

Fourth 【IN】——HID Report Descriptor

具體參考usbdesc.c內的設置

分析整個通信過程則可知其傳輸事務過程如下:

1、Setup事務,傳輸Setup數據格式包,告訴設備接下要獲取USB描述符,但不知道描述符的類型,並指明了接下來的數據傳輸方向和傳輸的數據大小

2、IN傳輸事務,表示設備傳輸數據到PC,傳輸中指明了這次傳輸的數據大小,類型是設備描述符以及其他相關的設備信息

3、Setup事務,改變了讀取描述符的偏移地址和傳輸數據的大小

4、N傳輸事務,但描述符類型是配置描述符,指明了接口數量、供電模式、最大電流等參數

5、Setup事務,再次獲取配置描述符,僅僅改變了獲取的傳輸數據的大小為41個字節,即下一次準備接收41個字節

6、IN事務,返回配置描述符時連並接口、端點描述符都一起返回,向PC指明了這是個HID接口以及其使用的端點數

7、Setup事務,設置配置

8、Setup事務,設置接口閑置狀態

9、Setup事務,獲取描述符

10、IN事務,設備發送HID報告描述符給PC
---------------------
作者:yhl_sophia
來源:CSDN
原文:https://blog.csdn.net/yhl_sophia/article/details/81875382
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

Bus Hound抓包分析,USB設備識別為HID(轉)