1、USB传输协议基本概念
一个传输(控制、批量、中断、等时):由多个事务transaction组成; 一个事务transaction (IN、OUT、SETUP):由一多个包Packet组成。USB数据在主机与usb设备间被传输,之间的关联叫做管道pipe。一个USB设备可以有多个管道。
包是USB总线上数据传输的最小单位,不能被打断或干扰,否则会引发错误。若干个数据包组成一次事务传输,一次事务传输也不能打断,属于一次事务传输的几个包必须连续,不能跨帧完成。一次传输由一次到多次事务传输构成,可以跨帧完成。USB包由四部分组成,即包标识符字段(PID)、数据字段、循环冗余校验字段(CRC)和包结尾字段(EOP)。
2、抓包工具准备
(1) Wireshark,https://www.wireshark.org/download.html。下载安装,注意安装过程中勾选install USBPcap...
如果是已经安装wireshark,也可以另外安装usbpcap,下载地址为USBPcap download | SourceForge.net(包括wincap或者ncap都可以单独卸载或者安装,WinPcap · Download)
(2) Bus Hound, Bus Hound 可以选择下载免费版本,但是使用时会有限制。一次抓包只能包含32的命令,每个数据传输只能抓取前8字节。
3、使用Wireshark抓包
打开wireshark软件,选择USBPcap*作为捕获对象,这里出现多个USBPcap接口取决于主机包含几个usb接口,需要正确选择对应需要专包的usb端口。另外,每次停止后重新抓包,建议关闭wireshark后重新打开选择接口。
开始抓包,此时在usb端口没有插入任何设备(包括蓝牙鼠标等),结果如下。
下面是对蓝牙鼠标设备的抓包。