基于wireshark的USB 全速硬件抓包工具USB Sniffer Lite的使用
1、前言
随着MCU的发展和需求的增多,USB已成为主流MCU的标配外设,但很多还是全速或低速IP,因此往往用不上高速抓包设备。
2、安装wireshark和拷贝抓包插件
将抓包插件拷贝到wireshark的extcap目录里,可参考基于wireshark的USB 高速硬件抓包工具USB Sniffer的使用-CSDN博客
抓包插件下载链接 【免费】USBSnifferLite全速版Wireshark抓包插件中文版资源-CSDN下载
3、抓包工具选购链接
有需要的朋友可支持一下,小巧实惠,且满足常见MCU的USB软件开发工作,支持自动速度识别,支持硬件包过滤、端点过滤,支持硬件时间戳及包序号
淘宝链接
4、线路连接
USB Sniffer Lite 的Type A公头接装有wireshark的Monitor(监控)电脑,接入后红灯闪烁,Type C接测试主机(Host),可以和Monitor是同一台,也可以是不同的,Type A 母座接被测试设备(Device),如下示意图
接入后红灯闪烁
5、抓包设置
5.1 打开wireshark,点击USB Sniffer Lite前的选项按钮
5.2 Device页内容如下:
5.2.1 设备选择:当有多个Sniffer时选择用哪个Sniffer进行捕获
5.2.2 序号类型:
a) 包间隔时间,数据包出现时的时间戳,精度为微秒,在捕获页面显示时可设置为
捕获后的效果如下:
b) 捕获时包序号,数据包被捕获时的顺序号,第一包为0,第二包为1,以此类推,这样可以知道是否有丢包,只是显示格式目前还没研究清楚,如何让它显示整数
c) 过滤后包序号,数据包经过滤后的顺序号,过滤掉的就不计入,比如设置为不捕获SOF,不勾选IN的NAK(也就是不捕获未应答的IN数据包),这样上传上来的序号就是连续的
5.2 SOF页,用于设置是否捕获SOF包,当您不需要SOF包时,可以选择不捕获,从而减少包数
5.3 SETUP页,用于设置是否捕获SETUP包
可以是不捕获,可以是捕获所有端点的,可以是捕获指定端点的,也可以是捕获与指定端点不相等的,指定的端点在端点列表里给出。比如只想捕获端点1的控制传输,则选择相等的,端点列表填1
SETUP令牌包后只能使用DATA0数据包,且只能发送到设备的控制端点,而且设备必须接收,所以NAK其实是没有必要,这里只是保留着。
一般来说SETUP包都不是很多,所以可捕获所有端点的。
5.4 IN 页,用于设置如何捕获输入数据包
和SETUP类似,不同在于,当勾选NAK时,Device否认(NAK)包也会被捕获,这是可能会产生大量的无效数据包;当不勾选时,只捕获Device应答(ACK)的数据。
如下是勾选的情况,可以看出有大量的NAK的IN包
如下是不勾选的情况,可以看出只有被Device ACK的包被捕获下来
5.5 OUT页,用于设置如何捕获输出数据包
功能和IN 页类似,如勾选NAK,有大量的未应答包别捕获进来
如下是不勾选,只有被ACK的包被捕获进来了
设置好后,进行保存
6、开始抓包
双击 USB Sniffer Lite,即可启动抓包
这时Sniffer的绿灯亮起,然后插入USB 全速或低速Device,绿灯开始闪烁
如下是捕获的数据
5、结语
USB协议比较复杂,不对的地方欢迎大家批评指正