1 USBlyzer 抓包协议分析
- USB 数据是小端模式
小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。
1.1 USB 请求
1. 获取设备描述符
- 首先接收到主机发送的 USB 请求
0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00
DEVICE_DESCRIPTOR 0x01
CONFIGURATION_DESCRIPTOR 0x02
STRING_DESCRIPTOR 0x03
INTERFACE_DESCRIPTOR 0x04
ENDPOINT_DESCRIPTOR 0x05
域 | 值 | 说明 |
---|---|---|
bmRequest | 0x80 | 数据传输方向是设备到主机 |
bRequest | 0x06 | 主机获取描述符 |
wValue | 0x0100 | 高字节01,表示设备描述符 |
wIndex | 0x0000 | |
wLength | 0x0040 | 请求返回的数据 64 字节 |
然后给主机发送 18 字节的设备描述符。
2. 主机发送设置地址的请求
域 | 值 | 说明 |
---|---|---|
bmRequest | 0x00 | 传输方向主机到设备 |
bRequest | 0x05 | 设置地址 |
wValue | 0x0025 | 地址值为 37 |
wIndex | 0x0000 | |
wLength | 0x0000 |
3. 设置地址后重新请求设备描述符
域 | 值 | 说明 |
---|---|---|
bmRequest | 0x80 | 数据传输方向是设备到主机 |
bRequest | 0x06 | 主机获取描述符 |
wValue | 0x0100 | 高字节01,表示设备描述符 |
wIndex | 0x0000 | |
wLength | 0x0012 | 请求返回的数据 18 字节 |
USBlyzer 抓包的数据分析
- 返回给主机的设备描述符
- 数据包分析结果
4. 获取设备描述符后,获取配置描述符
域 | 值 | 说明 |
---|---|---|
bmRequest | 0x80 | 数据传输方向是设备到主机 |
bRequest | 0x06 | 主机获取描述符 |
wValue | 0x0200 | 高字节02,表示配置描述符 |
wIndex | 0x0000 | |
wLength | 0x0022 | 请求返回的数据 255 字节 |
USBlyzer 抓包结果
- 发送到主机的设备描述符
- 数据包分析结果
5. 获取报告描述符
域 | 值 | 说明 |
---|---|---|
bmRequest | 0x81 | 数据传输方向是设备到主机,1-接口 |
bRequest | 0x06 | 主机获取描述符 |
wValue | 0x2200 | 高字节22,表示报告描述符 |
wIndex | 0x0000 | |
wLength | 0x0072 | 请求返回的数据 114 字节 |
USBlyzer 抓包
1.2 发送数据
-
向上移动数据包分析
-
向右移动数据包分析