Bus Hound数据分析:

CTL:表示8字节的USB控制传输的Setup包----------------------------重点分析

控制传输setup(token包)和对应数据包(DATA0)来告诉设备目的和要求,结束以数据流的反方向通知DATA1包.

setup包有5个参数,分别是bmRequestType,bRequest,

wValue:此字段的内容因请求而异。它用于向设备传递特定于请求的参数。

wIndex:Windex字段经常用于指定端点或接口的请求。

wLength:(bm指Bitmap;b指byte;w指word,即double byte.).

   

以下是对设备在Bus Hound捕获到的数据进行分析:

bmRequestType  ——  80:数据方向从USB到PC;标准的请求;USB设备接收

bRequest  ——  06:表示接下来发送的数据时GET_DESCRIPTOR(主控器读取USB描述符)

wValue  ——  00 01:从偏移地址0开始读取设备描述符

wIndex  ——  00 00:一般用于说明端点号或者接口标识

wLength  ——  12 00:下一阶段发送数据的长度为18个字节(小端格式理解)

First  【IN】:数据传输(USB设备到PC)

bLength  ——  12:数据字节长度为18

bDescriptorType  ——  01:设备描述符

bcdUSB  ——  00 02:USB设备2.0协议
bDeviceClass  ——  ef:USB_DEVICE_CLASS_MISCELLANEOUS(杂项)

bDeviceSubClass  ——  02

bDeviceProtocol  ——  01

bMaxPacketSize0  ——  40:最大包长64个字节

idVendor  ——  1Fc9

idProduct  ——  100B

bcdDevice  ——  0100

iManufacturer  ——  01

iProduct ——  02

iSerialNumber  ——  03

bNumConfigurations  ——  01

Second 【IN】

bLength —— 09:该描述符结构体的大小为9个字节

bDescriptorType ——02:配置描述符

wTotalLength  ——29 00:配置返回的所有数据大小为41个字节(其实是指明下一次传输的数据字节大小)

bNumInterfaces  ——01:此配置的接口数量

bConfigurationValue  ——01:此配置所需要的参数值

iConfiguration  ——00:描述该配置的字符串的索引值

bmAttributes  ——C0:供电模式的选择USB_CONFIG_SELF_POWERED(自供电)

bMaxPower  ——32:设备从总线提取的最大的电流100mA

Third 【IN】(前面数据和第二个IN一样,从32后开始分析)

bLength  ——  09:接口描述符结构体大小

bDescriptorType  —— 04:USB_INTERFACE_DESCRIPTOR_TYPE

bInterfaceNumber  ——  01:该接口的编号

bAlternateSetting   ——   00:备用的接口描述符编号

bNumEndpoints  —— 02:该接口使用的端点数,不包括端点0

bInterfaceClass  ——  03:接口类型为USB_DEVICE_CLASS_HUMAN_INTERFACE(HID)

bInterfaceSubClass  ——  00:接口子类型

bInterfaceProtocol  ——  00:接口遵循的协议

iInterface  ——  04:描述该接口的字符串索引值

HID Class Descriptor

bLength  ——09:该HID描述符的大小

bDescriptorType —— 21:HID_HID_DESCRIPTOR_TYPE

bcdHID  —— 00 01:HID类协议版本号,为1.1

bCountryCode  —— 00:固件的国家地区代码

bNumDescriptors  —— 01:下级描述符的个数

bDescriptorType  —— 22:下级描述符为HID_REPORT_DESCRIPTOR_TYPE(报告描述符)

wDescriptorLength  —— 2C 00:下级描述符的长度

Endpoint HID Interrupt In

bLength  ——  07

bDescriptorType  ——  05:端点描述符

bEndpointAddress  ——  84:HID_EP_IN Address

bmAttributes  ——  03:USB_ENDPOINT_TYPE_INTERRUPT

wMaxPacketSize  ——  04

bInterval  ——  00 20:间隔为16ms

Endpoint HID Interrupt Out

bLength  ——  07

bDescriptorType  ——  05:端点描述符

bEndpointAddress  ——  04:HID_EP_OUT Address

bmAttributes  ——  03:USB_ENDPOINT_TYPE_INTERRUPT

wMaxPacketSize  ——  04

bInterval  ——  00 20:间隔为16ms

CTL:表示8字节的USB控制传输的Setup包

bmRequestType  —— 00:数据方向从PC到USB;标准的请求;USB设备接收

bRequest  ——  09:表示接下来的请求是SET_CONFIGURATION (设置配置)

wValue  ——  00 01:从偏移地址0开始读取设备描述符

wIndex  ——  00 00:一般用于说明端点号或者接口标识

wLength  ——  00 00

CTL:表示8字节的USB控制传输的Setup包

bmRequestType  —— 21:数据方向从PC到USB;Class类的请求;接口接收

bRequest  ——  0a:表示接下来的请求是GET_INTERFACE (获取接口)

wValue  ——  00 00:从偏移地址0开始读取设备描述符

wIndex  ——  01 00:接口标识为01

wLength  ——  00 00

CTL:表示8字节的USB控制传输的Setup包

bmRequestType  —— 81:数据方向从USB到PC;标准请求;接口接收

bRequest  ——  06:表示接下来的请求是获取描述符

wValue  ——  00 22:从偏移地址00 22开始读取描述符

wIndex  ——  01 00:接口标识为01

wLength  ——  6C 00:数据长度为108个字节

Fourth 【IN】——HID Report Descriptor

具体参考usbdesc.c内的设置

传输事务过程如下:

1、Setup事务,传输Setup数据格式包,告诉设备接下要获取USB描述符,但不知道描述符的类型,并指明了接下来的数据传输方向和传输的数据大小

2、IN传输事务,表示设备传输数据到PC,传输中指明了这次传输的数据大小,类型是设备描述符以及其他相关的设备信息

3、Setup事务,改变了读取描述符的偏移地址和传输数据的大小

4、IN传输事务,但描述符类型是配置描述符,指明了接口数量、供电模式、最大电流等参数

5、Setup事务,再次获取配置描述符,仅仅改变了获取的传输数据的大小为41个字节,即下一次准备接收41个字节

6、IN事务,返回配置描述符时连并接口、端点描述符都一起返回,向PC指明了这是个HID接口以及其使用的端点数

7、Setup事务,设置配置

8、Setup事务,设置接口闲置状态

9、Setup事务,获取描述符

10、IN事务,设备发送HID报告描述符给PC
---------------------

参考博文链接:https://blog.csdn.net/yhl_sophia/article/details/81875382

Bus Hound抓包分析,基于HID设备(原创)的更多相关文章

  1. 实战录 | 基于openflow协议的抓包分析

    <实战录>导语 云端卫士<实战录>栏目定期会向粉丝朋友们分享一些在开发运维中的经验和技巧,希望对于关注我们的朋友有所裨益.本期分享人为云端卫士安全SDN工程师宋飞虎,将带来基于 ...

  2. Wireshark抓包分析TCP 3次握手、4次挥手过程

    Wireshark简介 更多有关Wireshark的教程.软件下载等,请见:http://www.52im.net/thread-259-1-1.html,本文只作简要介绍. 1Wireshark 是 ...

  3. LVS 负载均衡器理论基础及抓包分析

    LVS 是 Linux Virtual Server 的简写,即 Linux 虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.(百 ...

  4. 抓包分析SSL/TLS连接建立过程【总结】

    1.前言 最近在倒腾SSL方面的项目,之前只是虽然对SSL了解过,但是不够深入,正好有机会,认真学习一下.开始了解SSL的是从https开始的,自从百度支持https以后,如今全站https的趋势越来 ...

  5. Wireshark抓包分析HTTPS与HTTP报文的差异

    一.什么是HTTPS: HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换 ...

  6. Wireshark和TcpDump抓包分析心得

    Wireshark和 TcpDump抓包分析心得  1. Wireshark与tcpdump介绍 Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Window ...

  7. python编写网络抓包分析脚本

    python编写网络抓包分析脚本 写网络抓包分析脚本,一个称手的sniffer工具是必不可少的,我习惯用Ethereal,简单,易用,基于winpcap的一个开源的软件 Ethereal自带许多协议的 ...

  8. ipv6地址抓包分析

    拓扑图: 因为多路由,所以采用ospf配置将路由实现互通,从而进行抓包 ospf配置以R1为例 查看R4路由表 做完进行ping通测试 R4pingR3 R4pingR5 进行抓包分析 128报文 1 ...

  9. nmap参数原理抓包分析

    nmap参数原理抓包分析 实验环境: Nmap7.70 实验步骤: 1.主机发现 2.端口扫描 3.服务版本探测 一.主机发现 主机发现,如果主机活跃,扫描1000个常用的tcp端口 1.Nmap i ...

随机推荐

  1. 如何在linux环境上挂载磁盘

    1.1      fdisk -l 命令 查看可用的磁盘信息(如果没有显示可用的磁盘,可重启一下主机:reboot) 1.2      df –h 命令 可查看已挂的磁盘情况 1.3      pvs ...

  2. 学习Spring

    一.Spring 概述 1.概述   Spring 框架是一个开源的 Java 平台,它最初是由 Rod Johnson 编写的,并且于 2003 年 6 月首次在 Apache 2.0 许可下发布. ...

  3. python并发_线程

    关于进程的复习: # 管道 # 数据的共享 Manager dict list # 进程池 # cpu个数+1 # ret = map(func,iterable) # 异步 自带close和join ...

  4. 四、fgets与fputs

    fgets 描述:从流中读取最多size个字符,遇到文件末尾或\n则停止读取,该函数会在读取到的字符最后加上\0. 原型:char *fgets(char *s, int size, FILE *st ...

  5. C++标准库之迭代器

    迭代器大致可分为: 输入迭代器,InputIterator 输出迭代器,OutputIterator 前行迭代器,ForwardIterator 双向迭代器,BidirectinalIterator ...

  6. 精进之路之volatile

    volatile 首先了解下Java 内存模型中的可见性.原子性和有序性. 可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉.通常,我们无法确保执行读操作的线程能适时地看到其他 ...

  7. 国内第一本cbuilder开发web的宝典震撼登场(delphi也可参考)

    uniGUI入门到精通cBuilder版 众所周知,cbuilder和delphi是曾经风靡多年的强悍的万能的开发工具,岂奈大浪淘沙,B/S时代的到来让这对孪生兄弟隐姓埋名.然,无数风流人物依然对他们 ...

  8. Galera Cluster——一种新型的高一致性MySQL集群架构

    原文链接:https://www.sohu.com/a/147032902_505779,最近被分配定位mysql的问题,学习下. 1. 何谓Galera Cluster 何谓Galera Clust ...

  9. 关于mybatis配置文件mapper传int值的问题

    1.首先看mapper代码,这是个更新语句. <set> <if test="sendmode!='' && sendmode!=null"> ...

  10. 2018-08 【bug汇总】

    1. 问题描述:更细参数时更新失败. 报错信息:无报错信息,返回为成功. 问题分析:代码查看逻辑无问题.说明可能不是逻辑的问题,dubug查看发现,参数并没有传入进来,查看传递参数的requestBe ...