USB软件抓包分析工具之三:Wireshark-华山派华山剑法 (qq.com)
Wireshark是世界上最流行的网络协议分析软件,并且是一个免费的、开源的工具。相信做过网络开发的一定用过这个工具进行过抓包分析。
借助USBPcap还可以进行USB的抓包和分析,USBPcap参考:https://desowin.org/usbpcap/
USBPcap从I/O请求包(IRP)中携带的USB请求块(URBs)中捕获数据。Wireshark将报文以帧的形式呈现。USBPcap的数据包与USB规范的数据包不完全相同,Wireshark的帧与USB帧也不同。
由于USBPcap捕获的是功能设备对象(FDO)和物理设备对象(PDO)之间传递的URBs,如下图
以下信息USBPcap可以抓取:
- 控制传输:
SETUP阶段只能抓取DATA,不能抓取SETUP和ACK
DATA阶段:USBPcap包包含来自事务的DATA包的组合数据。
STATUS阶段:与STATUS阶段相关的USBPcap包不包含任何数据。
- 同步传输:
单个IRP通常携带多个等时数据包。每个同步数据包都包含来自data数据包的数据。对于每个IRP都有两个USBPcap包。第一个包含IRP从FDO到PDO时捕获的数据,第二个包含从FDO到PDO的数据。在OUT传输的情况下,第一个USBPcap包包含完整的数据,第二个包包含有关事务完成状态的信息。在In传输的情况下,第一个USBPcap包仅包含有关用于接收数据的分配缓冲区的信息,第二个包包含接收到的数据。
- 中断传输:只能抓取DATA包,不能抓取IN,OUT和ACK。
- 批量传输:每次批量传输都会产生一个USBPcap数据包,包含来自属于给定传输的所有事务的所有数据包的组合数据。
- 大容量存储设备:每次与USB大容量存储设备的数据交换都会产生三个USBPcap数据包,其中第一个包含命令,第二个包含数据,最后一个包含状态。
以下一些信息不能通过USBPcap抓取:
- 总线状态 (Suspended, Power ON, Power OFF, Reset, High Speed Detection Handshake)
- 包ID (PID)
- 拆分事务 (CSPLIT, SSPLIT)
- 总线状态的持续时间和用于在线路上传输数据包的时间
- 传输速度 (Low Speed, Full Speed, High Speed)
另外也不能够抓取完整的USB枚举过程,只能看到USB控制传输发送到设备后,设备已分配其地址。
从官网下载最新版
我这里下载的是Wireshark-win64-4.0.5.exe,直接双击打开,安装
我们可以把所有选项都勾选
勾选安装桌面图标和快速启动图标
指定安装路径
注意这里勾选安装USBPcap
安装USBPcap
注意保存数据重启
打开wireshark程序
一个USB根集线器会对应一个USBPcap设备,如果没有可能是安装完后没有重启或者没有安装USBPcap。
可以进去安装路径D:Program FilesWiresharkextcap下命令行输入.USBPcapCMD.exe查看每个根集线器挂载的设备
设备过滤
我这里接入了一个UVC设备,可以看到对应的是USBPcap2的端口2
我们双击USBPcap2可以看到抓到了数据
其中2.6.3正好对应的是我们这个设备其中2对应PORT2 6对应USB设备地址为6,3对应端点3
我们也可以使用usb.addr==2.6.3进行过滤
点击包可以显示解析的信息和原始数据如下
USBPcap没有完整的文档,只能去官网看一些相关的信息https://desowin.org/usbpcap/tour.html。Wireshark有完善的文档可以参考https://www.wireshark.org/docs/。
https://www.wireshark.org/docs/wsdg_html_chunked/ChapterDissection.html
Wireshark使用USBPcap抓包相对于Bus Hound的优点是有更详细的协议解析,缺点是不能进行数据发送调试。
Wireshark虽然以以太网抓包闻名于江湖,尤其是其包分析能力,借助USBPcap其也在USB抓包领域也占有一席之地。好比“以气为体、以剑为用”,以气御剑,气就是Wireshark强大的包解析能力,USBPcap就是剑,以USBPcap为剑即能抓取解析USBPcap,以NPcap,WinPcap为剑即能抓取分析以太网包。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !