我正在尝试对使用GATT上的USB HID与主机通信的BLE设备进行逆向工程。我可以使用usbpcap捕获流量,但是当将结果加载到wireshark时,数据包似乎包含表示通过空中传输的数据的字节(即设备描述符),但是数据包不会根据USBHID协议进行解码。一切都被解码为USB,只包含URB_INTERRUPT_IN,URB_BULK输入/输出和URB_CONTROL_OUT,而我正在寻找像GET DESCRIPTOR请求/响应设备之类的东西。我可以采取额外的步骤来正确地格式化和解析数据包吗?
答案 0 :(得分:1)
使用中有一些特征。您有一个包含报告地图的特征。这通常只在设备配对时读取一次。此映射包含稍后通过报告通知发送的数据的布局/规范。这主要是将USB规范中的规范“复制粘贴”到BLE中。
现在,当您运行HID-over-GATT并且您的蓝牙控制器通过USB与主机通信时,您将在usbpcap中看到的是包含L2CAP数据的ACL数据,其中包含GATT数据,而后者又包含报告HID的数据。然后主机上的蓝牙堆栈将对此进行解码并将其提供给内核的HID解析器。
我建议您将HID-over-GATT设备连接到Android手机,然后查看HCI snoop日志会发生什么,这可以在Wireshark中解码(但它不会解析您的HID数据)