论坛首页 安全工具分享区 阅读主题

[原创]实战解析 USB HID 协议 2

219 浏览 1 回复
#1 楼主 2026-06-01 21:09:04
本文是<实战解析 USB HID 协议>的后续,  文中只有一个细小的新知识点, 主要是补充USB HID Mouse的HID Report Descriptor和Input Report作为例子, 供读者学习参考. 这回我换套工具, 用(昂贵的)Lecroy USB Protocol Suite捕捉/呈现USB Mouse数据(其实USB协议分析仪主要用在硬件产品设计阶段, 用于定位/分析回路或固件设计缺陷; 用来抓USB2.0 Full Speed设备的数据实属杀鸡用牛刀). 下图是USB Protocol Suite在USB发射器插入后捕获的USB设备的SETUP Transfer:
上图中Transfer 1# ~ Transfer 17#是所有USB2.0设备所共有的Standard Request;Transfer 18# ~ Transfer 19#: USB Host向USB Device请求USB Keyboard HID Report Descriptor;Transfer 20# ~ Transfer 21#: USB Host向USB Device请求USB Mouse HID Report Descriptor.
USB Protocol Suite解析得到的Keyboard/Mouse Report Descriptor分别如下:USB Keyboard HID Report Descriptor (完整Keyboard Report Descriptor 报告见附件html文档)
USB Mouse HID Report Descriptor (完整Mouse Report Descriptor 报告见附件html文档)
USB Protocol Suite 为USB Keyboard生成的HTML文档大小32KB; 为USB Mouse生成的HTML文档大小 80KB. 可见USB Mouse的功能更为复杂(毕竟在设备管理器里HID Keyboard才1个虚拟设备; HID Mouse有5个虚拟设备).
依然使用前一篇文章总结出来的方法,  按以下步骤进行解析:    a). 按UsagePage/Usage/Collection & End Collection进行分组(绿框部分) ;    b). 把Collection & End Collection中相同的Main Item归为一类(红框部分), 同时计算Hid Report将占用的Size;    c).  解读各个字段含义;
Step a). 按UsagePage/Usage/Collection & End Collection进行分组.  按这个规则可以分5组, 如下图. 5个分组中只有第一个分组的用途是Mouse (Usage (Mouse)), 因此我们将注意力集中在此:
Step b). 把Collection & End Collection中相同的Main Item归为一类(下图中所有红框都属于Input Main Item).  


登录后可查看完整内容

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-289733.htm
#2 2026-06-01 21:09:04
学习了。之前还是做模拟锁驱动时研究过点,但是没有向你一样系统性整理。

请登录后参与讨论

立即登录 注册账号