wireshark 抓 蓝牙数据_USB与BT HID reports描述符实践与抓包分析

本文详细介绍了如何理解HID报告描述符,包括如何使用USB HID Usage Table和USB HID Spec文档,以及借助hidrd-convert工具将hex描述符转化为C语言格式。同时,文章通过实例展示了如何使用usbhid-dump工具获取USB HID设备的报告描述符,并通过Wireshark抓包分析input report。此外,还讨论了如何通过Linux系统下调试接口获取BLE HoGP设备的报告描述符。
摘要由CSDN通过智能技术生成

文章内容提示

这篇文章主要说明如何获取与查看USB和BLE HoGP HID设备报告描述符,如何根据获取的描述符读懂report。然后说明了可以使用hidrd-convert工具,来如何根据hex报告描述符转化得到C语言格式的描述符,这对于我们编码是有意义的。 其中,还截取了USB 逻辑分析仪,Wireshark等工具来查看input report。

如何看懂HID report descriptor

对于如何看懂HID报告描述符,几乎离不开下面的这两个pdf:

USB HID Usage Table

USB HID Spec

先看文档(USB HID设备)弄明白一些基本概念:

项目Item的意义

collection与end collection:namespace的意义,相当于将多个usage page

usage page与 usage

Logical Minimum 与 Logical Maximum

Usage Minimum 与 Usage Maximum

input

report size 与 report count

个人认为先准备好这份文档,然后结合一些文章来理解比较快速。以下是个人认为的快速理解的步骤:

1. 看这篇(Tutorial about USB HID Report Descriptors)文章,理解一些基本的概念,主要弄明白概念4与5

2. 不要太过于纠结如何从hex转换到方便大家阅读的格式的report

例如下面这个描述符,我们应该直接看注释而,然后可以知道描述的是mouse,然后根据usage page和usage的值在usage table pdf中找到对应的描述,然后根据对基本概念的了解知道如果鼠标的一个按键按下那么会生成怎么样的report即可:

0x05, 0x01, // Usage Page (Generic Desktop)

0x09, 0x02, // Usage (Mouse)

0xA1, 0x01, // Collection (Application)

0x85, 0x01, // Report Id (1)

0x09, 0x01, // Usage (Pointer)

0xA1, 0x00, // Collection (Physical)

0x05, 0x09, // Usage Page (Buttons)

0x19, 0x01, // Usage Minimum (01) - Button 1

0x29, 0x03, // Usage Maximum (03) - Button 3

0x15, 0x00, // Logical Minimum (0)

0x25, 0x01, // Logical Maximum (1)

0x75, 0x01, // Report Size (1)

0x95, 0x03, // Report Count (3)

0x81, 0x02, // Input (Data, Variable, Absolute) - Button states

0x75, 0x05, // Report Size (5)

0x95, 0x01, // Report Count (1)

0x81, 0x01, // Input (Constant) - Padding or Reserved bits

0x05, 0x01, // Usage Page (Generic Desktop)

0x09, 0x30, // Usage (X)

0x09, 0x31, // Usage (Y)

0x09, 0x38, // Usage (Wheel)

0x15, 0x81, // Logical Minimum (-127)

0x25, 0x7F, // Logical Maximum (127)

0x75, 0x08, // Report Size (8)

0x95, 0x03, // Report Count (3)

0x81, 0x06, // Input (Data, Variable, Relative) - X & Y coordinate

0xC0, // End Collection

0xC0, // End Collection

3. 看后面的 “1. 使用usbhid-dump工具获取报告描述符” 章节了解report字节数的构成来源

需要注意的是input是报告给主机(例如PC,Android)的,因此只能算input的,在主机到设备的时候只能算output的

4. 看文章《HID reports》,结合pdf弄明白一个keyboard的report为何是8个字节,在USB interrupt IN中传输的数据是怎么样的。也可以看后面的USB分析仪给出的例子。

5. 了解hex如何对应不同的Tag,看这篇文章

BT中的HoGP, USB HID设备

如何看懂HID reports

蓝牙BLE的HoGP生成的report

Linux下如何查看report

这里需要区分USB HID与BT通过HoGP生成的HID设备,这两种方式生成的HID设备描述符可以使用的工具不一样。

USB HID设备

1. 使用usbh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值