不学不知道,一看吓一跳!
前段时间因为工作需要,需要熟悉USB的HID协议,就使用wireshark抓包工具抓取了我们日常工作中用的比较多的一个设备,即USB鼠标与电脑之间的通信协议包,其中电脑为USB Host主机,USB鼠标为Slave从机;抓取协议包后,咋一看,没看明白,怎么会这么复杂?太复杂了!!
通过查资料对数据,逐个字段进行解析,才慢慢找到感觉。
下面就以将USB鼠标插入USB接口后,鼠标和电脑之间的一段通信协议包;
USB鼠标插上后,电脑会识别有USB设备插入,然后会向USB设备请求该设备的一些通用信息,即通过请求设备描述符的报文实现操作;
设备描述符介绍: 设备描述符说明了USB设备的通用信息,提供了关于设备、设备的配置以及任何设备所归属的类的信息; USB设备只有一个设备描述符,并且是在设备连接时主机读取到的第一个描述符; 设备描述符所含的信息,被主机用来取得设备的额外内容。 该报文如下:
主机请求设备的设备描述符的报文解析如下:
这只是所有通信中的一条报文,其实HID协议还有很多报文,涉及类型,请求和设置等操作,下面是截取的一部分报文:
总之,要深入理解和掌握USB的HID协议,肯定得消耗不少脑细胞!!!
|