精华内容
下载资源
问答
  • USB学习总结】抓包工具使用
    2020-11-29 22:13:05

    USB协议在常见的外部总线协议中是比较复杂的存在。对于USB协议的理解,借助于抓包工具来抓取常见的USB外设,会起到事半功倍的效果。常见的USB抓包工具分为两类:纯软件的抓包工具和带硬件协议分析设备的软件。

    纯软件的抓包工具无论是安装在Windows或者linux下,由于软件只能调用计算机上USB host驱动,这些USB host设备一般都是由具体的芯片来实现,这些芯片的特点是,硬件实现了 transaction 的过程。软件控制硬件的时候只需要控制到 transaction的层面。所以,这类抓包工具的抓到的包只能具体到 transaction ,而不能抓到具体的 数据包。这类软件有 BUS HOUND 、 wireshark

    协议分析仪工具的软件,一般就是协议分析仪工具的上位机。这些协议分析仪大都比较贵。但是可以抓取到具体的数据包。包括令牌包、数据包和握手包。

    淘宝上有一款比较便宜的USB协议分析仪:USB Packet Viewer。

    对应的软件可以直接下载到,并且提供了一些设备运行过程的数据包,可以帮助我们来分析枚举和运行是的数据收发过程

     

    更多相关内容
  • USB协议详解第30讲(USB枚举过程详解及抓包分析)

    千次阅读 热门讨论 2021-02-01 23:17:47
    16.USB枚举抓包图 1.本文部分素材来源网络,版权归原作者所有,如涉及作品版权问题,请与我联系删除; 2.未经原作者允许不得转载本文内容,否则将视为侵权; 3.转载或者引用本文内容请注明来源及原作者; 4.对于不...

    目录

    1.设备上电

    2.Hub检测电压变化,报告主机

    3.主机了解连接设备

    4.主机检测所插入的设备是全速还是低速

    5.主机通过hub复位设备

    6. 主机进一步检测全速设备是否是支持高速模式

    7.通过Hub建立主机和设备之间的信息通道

    8.主机获取默认控制管道的最大数据包长度

    9.主机请求hub再次复位设备

    10.主机给设备分配一个新地址

    11.主机获取并解析设备描述符信息

    12.主机获取字符串描述符

    13.主机获取标准配置描述符

    14.主机获取配置描述符集合

    15.主机为设备挂载驱动并选择一个配置

    16.USB枚举抓包图


    当USB设备连接到或从USB中移除时,主机使用总线枚举过程来识别和管理接入的设备。当USB设备连接到一个已经被上电的端口,采取以下顺序行动:

    1.设备上电

    用户把USB设备插入USB端口(主机下的根hub或主机下行端口上的hub端口)或系统启动时设备上电。此时,USB设备处于加电状态,它所连接的端口是无效的。

    2.Hub检测电压变化,报告主机

    hub会实时监测端口的电平变化,一旦HUB检测到端口有电压变化,hub将利用自己的中断端点将信息反馈给主控制器,告诉主机有设备连接。

    3.主机了解连接设备

    如果有连接/断开事件发生,那么主机会发送一个 Get_Port_Status请求给hub以了解此次状态改变的确切含义。Get_Port_Status等请求属于所有hub都要求支持的hub类标准请求,hub相关的标准我们暂时不研究,大家知道这一点就好。

    4.主机检测所插入的设备是全速还是低速

     hub通过检测USB总线空闲时的差分线的高低电压来判断所连接设备的速度类型,当host发来Get_Port_Status请求时,hub就可以将此设备的速度类型信息回复给host。USB 2.0规范要求速度检测要先于复位(Reset)操作。

    根据是D+还是D-被拉高来判断到底是什么设备(全速/低速)插入端口。如下图。

    5.主机通过hub复位设备

    主机一旦得知新设备已连上以后,它至少等待100ms以使得插入操作的完成以及设备电源稳定工作。然后主机控制器就向hub发出一个 Set_Port_Feature请求让hub复位刚才设备插上的端口。hub通过驱动数据线到复位状态(D+和D-全为低电平 ),并持续至少10ms。当然,hub不会把这样的复位信号发送给其他已有设备连接的端口,所以其他连在该hub上的设备自然看不到复位信号,不会受影响。hub集线器具体电路实现原理大家可以进行搜索查看。

    6. 主机进一步检测全速设备是否是支持高速模式

     因为根据USB 2.0协议,高速(High Speed)设备在初始时是默认全速(Full Speed )状态运行,所以对于一个支持USB 2.0的高速hub,当它发现它的端口连接的是一个全速设备时,会进行高速检测,看看目前这个设备是否还支持高速传输,如果是,那就切到高速信号模式,否则就一直在全速状态下工作。同样的,从设备的角度来看,如果是一个高速设备,在刚连接到hub时或上电只能用全速模式运行。随后hub会进行高速检测,之后这个设备才会切换到高速模式下工作。假如所连接的hub不支持USB 2.0,即不是高速hub,不能进行高速检测,设备将一直以全速工作。

    7.通过Hub建立主机和设备之间的信息通道

    主机不停地向hub发送Get_Port_Status请求,以查询设备是否复位成功。Hub返回的报告信息中有专门的一位用来标志设备的复位状态。当hub撤销了复位信号,设备就处于默认/空闲状态(Default state),准备接收主机发来的请求。设备和主机之间的通信通过控制传输管道,默认管道为地址0、端点0。此时,设备能从总线上得到的最大电流是100mA。此后主机就可以通过默认控制管道和设备进行控制传输。


    8.主机获取默认控制管道的最大数据包长度

    默认管道其实连接到设备一端其实就是端点0。主机此时发送的请求是默认地址0,端点0,虽然所有未分配地址的设备都是通过地址0来获取主机发来的请求,但由于枚举过程不是多个设备并行处理,而是一次枚举一个设备的方式进行,所以不会发生多个设备同时响应主机发来的请求。

    主机会发送Get_Descriptor获取设备描述符,设备描述符的第8字节代表设备端点0的最大包大小,只有知道端点0 的最大包长度,才知道一次控制传输要从设备请求多少字节数据。

    9.主机请求hub再次复位设备

    Get_Descriptor获取设备描述符请求成功,系统会要求hub对设备进行再一次的复位操作(USB规范里面可没这要求),再次复位的目的是使设备进入一个确定的状态。

    10.主机给设备分配一个新地址

    主机控制器通过Set_Address请求向设备分配一个唯一的地址。在完成这次传输之后,设备进入地址状态,之后就启用新地址与主机通信。这个地址对于设备来说是终生制的,设备在,地址在;设备消失(被拔出,复位,系统重启),地址被收回。同一个设备当再次被枚举后得到的地址不一定是上次那个了。

    11.主机获取并解析设备描述符信息

    主机发送Get_Descriptor请求读取设备描述符,这次主机发送Get_Descriptor请求使用新地址,它会解析设备描述符的每一项内容。设备描述符内信息包括端点0的最大包长度、设备所支持的配置个数、设备类型、VID、 PID、字符串索引等信息。如下图所示。

    12.主机获取字符串描述符

    根据如果有字符串描述符,主机会获取语言ID描述符和字符串描述符。

    13.主机获取标准配置描述符

    主机发送Get_Descriptor_Configuration请求并解析标准配置描述符,标准配置描述符内信息包括配置描述符集合长度、接口数、设备属性、设备所需电流。如下图所示。

    14.主机获取配置描述符集合

    配置描述符集合包括标准配置描述符、接口描述符、端点描述符,如果是HID设备还会包括HID描述符,主机会根据上面得到的标准配置描述符的wTotalLength,发送了一个Get_Descriptor_Configuration请求获取到配置描述集合并解析所有描述符,从而知道设备到底是什么样的设备。

    15.主机为设备挂载驱动并选择一个配置

    主机通过解析描述符后对设备有了足够的了解,会选择一个最合适的驱动给设备,现在就将控制权交到设备驱动了。对于复合设备,通常应该是不同的接口配置给不同的驱动。

    主机发送Set_Configuration请求来正式确定选择设备的哪个配置作为工作配置(对于大多数设备来说,一般只有一个配置被定义)。至此,设备处于配置状态(Configured)。

    16.USB枚举抓包图


    1.本文部分素材来源网络,版权归原作者所有,如涉及作品版权问题,请与我联系删除;

    2.未经原作者允许不得转载本文内容,否则将视为侵权;

    3.转载或者引用本文内容请注明来源及原作者;

    4.对于不遵守此声明或者其他违法使用本文内容者,本人依法保留追究权等。

    下面是我的个人微信公众号,关注【一个早起的程序员】精彩系列文章每天不断。

    展开全文
  • USB抓包

    2020-11-19 11:40:10
    文章目录 分享三个USB抓包软件—Bus Hound,USBlyzer 和-USBTrace https://blog.csdn.net/chentengkui/article/details/72566859 bushound对usb协议进行抓包的使用方法 ...重点:修改最大数据长度 ...

    文章目录

    分享三个USB抓包软件—Bus Hound,USBlyzer 和-USBTrace
    https://blog.csdn.net/chentengkui/article/details/72566859

    BusHound v6.0.1下载地址
    https://www.jb51.net/softs/528543.html

    bushound对usb协议进行抓包的使用方法
    https://forum.huawei.com/enterprise/zh/thread-329153.html

    重点:修改最大数据长度
    在这里插入图片描述

    展开全文
  • USB 枚举过程

    2021-06-04 17:22:20
    Windows 对USB设备的枚举过程流程图如下所示:WP8的USB功能只支持一个配置,三个接口,也就是分别有如下的字段:设备描述符的bNumConfigurations=1,配置描述符的bNumInterfaces=3,主要有3个接口:PTP、WINUSB、...

    Windows 对USB设备的枚举过程流程图如下所示:

    5285da89e9d67dbdda36f95e7641ff89.gif

    WP8的USB功能只支持一个配置,三个接口,也就是分别有如下的字段:

    设备描述符的bNumConfigurations=1,

    配置描述符的bNumInterfaces=3,

    主要有3个接口:PTP、WINUSB、WINUSB

    Android是支持多USB配置描述符的,但是我们平时见到的手机都是一个配置的,接口数按照你在Android状态栏上选择的功能而定:

    设备描述符的bNumConfigurations=1,

    配置描述符的bNumInterfaces=x, 根据用户选择的功能而定

    IOS支持4个USB配置,也即是有4个配置描述符,配置描述符中的bConfigurationValue分别是1、2、3、4,然后每个配置描述符都有自己的接口和端点描述符:

    设备描述符的bNumConfigurations=4,

    配置描述符的bNumInterfaces=x,根据Windows选择哪个配置而定,

    当我们的电脑上没有安装iTunes时,Windows选择的是配置3,电脑上显示的是PTP Camera协议,当我们电脑上安装了iTunes时,Windows选择的配置4:

    当安装了iTunes时,bushound抓包截图如下:

    887d97c5cf18c812d6783e8fef57326f.gif

    展开全文
  • 图解USB协议分析USB枚举过程

    热门讨论 2010-04-24 14:42:21
    使用USB协议分析仪分析USB枚举过程,包括数据包的分析,USB标准描述符的介绍,USB枚举失败常见原因分析等。
  • USB枚举过程图解

    2014-07-17 23:09:19
    USB枚举过程图解。。比较全。。。。包括USB的命令
  • usb枚举过程详解

    2011-11-09 20:04:46
    usb枚举过程详解,收发抓包,图解案例,是学习usb驱动开发的好帮手
  • 详细的图文解释USB枚举过程,本文属于USB协议入门总结的文章
  • 取字符串描述符枚举过程~~~~~~~~~~*device插入HUB*HUB开始让HOST每秒产生的的帧开始(SOF)能通过该HUB*设备枚举默认使用地址0(HOST会子枚举过程中为设备分配新的地址,其实就是ID号)端口0(Spec规定)开始与主机通信*...
  • wireshark的usb抓包分析 2 - 分析数据

    千次阅读 2020-06-05 08:37:40
    抓取的数据包括所有的usb设备,这里需要使用过滤器过滤出想看的设备数据。 过滤器在下图红圈内 可以通过IP(即USB设备的地址)来过滤设备。 注意上图中的设备IP值为1.255.0,第一个数字0表示USBPcap1, 第二个...
  • 实例抓包分析USB鼠标枚举数据流 .

    千次阅读 2013-07-18 23:03:20
    新建session,选择新插入的HID鼠标开始抓包,拔掉鼠标,清空记录,再次插入鼠标,现在就抓到了USB鼠标枚举数据流 要看懂这些数据流,需要 http://hi.baidu.com/deep_pro/blog/item/3f97effa7048f814a9d31115.html ...
  • USB抓包工具Bus Hound

    千次阅读 2021-10-09 09:22:32
    Bus Hound是一款超级软件总线协议分析器,它是一种专用于PC机各种总线数据包监视和控制的开发工具...Bus Hound对于正在研究USB相关协议,需要对USB数据进行抓取分析效果非常不错,是一看所见即所得的USB抓包工具。 ...
  • USB枚举过程详解

    千次阅读 2020-03-22 09:57:39
    USB枚举过程详解
  • USB抓包工具分为纯软件的和硬件的两种,纯软件usb抓包工具需要在系统能正确枚举usb设备的前提下才能让内核的钩子函数捕抓到数据,而后者在usb不正常时也能捕捉到链路数据(令牌包等),属于更底层的抓包方式。...
  • 前言:最近这段时间在学USB的知识,看的是<<圈圈教你玩USB>>,本想买个USB芯片跟着敲代码,发现时间太久了,芯片没得买(飞利浦的PDIUSBD12),于是就拆解了一个USB接口,通逻辑分析仪抓取的数据来分析和...
  • USB枚举过程

    2021-12-04 11:05:58
    USB device 插入,和 host 连接后,host 会对 device 进行枚举。 通过枚举:获取设备的描述符信息。(主机根据此信息,加载对应驱动,确定通信方式等等) 枚举过程如下: 1、usb host 检测到 usb device 插入后,...
  • 原网页地址:http://blog.chinaunix.net/uid-11848011-id-4508834.... 1 linux下的usb抓包方法 1)配置内核使能usb monitor: make menuconfig Device Drivers --> USB Support --> USB Monitor --&...
  • USB枚举过程

    千次阅读 2018-11-21 22:06:08
    本人在学习STM32 USB...根据STM32的USB库做移植,介绍枚举过程,SetSystem函数是一些初始化化设置。 首先系统执行USB中断设置:USB_Interrupts_Config(); //中断向量表设置 然后执行USB时钟设置:Set_USBClock();...
  • 转载于:https://blog.51cto.com/7090376/1256523
  • USB抓包工具, 用于协议 分析 https://blog.csdn.net/ZCShouCSDN/article/details/81448023
  • Linux下USB抓包工具UsbMon的使用和包数据格式解析UsbMon的使用步骤1、挂载debugfs2、加载usbmon模块3、确认usbmon是否可用4、确认usb设备挂在哪条总线5、使用usbmon抓取通讯数据包UsbMon抓取的数据包格式解析 ...
  • (实例讲解USB枚举(配置)过程) 结合自己用BUShound的数据(下图),发现几乎完全一致。 中间涉及到一个USB Mass Storage协议,可以参考这个: https://blog.csdn.net/melvda/article/details/38370437 和这...
  • STM32的USB枚举过程介绍

    千次阅读 2018-12-24 14:42:11
    文件涉及到的USB各种传输各个位的含义以及USB标准设备请求的含义都没有做说明,推荐看《圈圈教你玩USB》里面有详细的说明 一、枚举前的工作  系统上电后,程序开始运行,简单介绍一下USB的初始化  ...
  • 先看第一行,CTL意为“USB control transfer”,即控制传输,熟悉USB通信的朋友应该都知道USB有四种数据传输方式,其中“控制传输”为仅有的双向传输方式,USB枚举过程中就是用的控制传输方式与USB从机的端点0进行...
  • Bus Hound抓包学习(抓取相机数据学习UVC协议) 参考文档和资料 1. Bus Hound的使用方法 在Bus Hound的界面选择easy camera时要把路径的上一级也要选择在内,才能在Settings中显示UVC协议的驱动程序,此时打开相机...
  • usb hound抓包完整数据流分析
  • usb驱动开发之USB协议枚举过程详解

    千次阅读 2017-09-08 09:30:34
    本文把usb枚举过程通过文字、程序和图形三种形式描述出来,并形成对照。 一 枚举过程之文字描述  •主机集线器监视着每个端口的信号电压,当有新设备接入时便可觉察。(集线器端口的两根信号线的每一根都有15kΩ...
  • 使用STM32的库进行USB-HID开发时,会出现某些电脑枚举不出设备的情况,通过bus hound 来抓包分析会出现 PC 发送set idle命令下去后,从设备没有响应,所以PC变为stall状态,之后枚举失败。通过分析源代码和HID协议,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 481
精华内容 192
热门标签
关键字:

usb枚举 抓包