首页
社区
课程
招聘
[原创]实战解析 USB HID 协议 2
发表于: 2026-1-12 00:43 3335

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

2026-1-12 00:43
3335

本文是<实战解析 USB HID 协议>的后续,  文中只有一个细小的新知识点, 主要是补充USB HID MouseHID Report DescriptorInput Report作为例子, 供读者学习参考. 这回我换套工具, (昂贵的)Lecroy USB Protocol Suite捕捉/呈现USB Mouse数据(其实USB协议分析仪主要用在硬件产品设计阶段, 用于定位/分析回路或固件设计缺陷; 用来抓USB2.0 Full Speed设备的数据实属杀鸡用牛刀).

 

下图是USB Protocol SuiteUSB发射器插入后捕获的USB设备的SETUP Transfer:


上图中

Transfer 1# ~ Transfer 17#是所有USB2.0设备所共有的Standard Request;

Transfer 18# ~ Transfer 19#: USB HostUSB Device请求USB Keyboard HID Report Descriptor;

Transfer 20# ~ Transfer 21#: USB HostUSB 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 Keyboard1个虚拟设备; HID Mouse5个虚拟设备).


依然使用前一篇文章总结出来的方法,  按以下步骤进行解析:

    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).  


[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!

上传的附件:
收藏
免费 4
支持
分享
最新回复 (1)
雪    币: 2790
活跃值: (5694)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
学习了。之前还是做模拟锁驱动时研究过点,但是没有向你一样系统性整理。
2026-1-12 08:54
0
游客
登录 | 注册 方可回帖
返回