windows平台下捕获USB数据包并实时处理

背景

最近工作需要,要在windows平台下抓取分析一个USB设备的数据包,原本使用的是BusHound,但他有两个缺点:

  • 只能抓取数据保存到文件,不能调用其他程序实时分析处理;
  • 该设备数据量非常大(图像数据,使用的USB3.0),BusHound的buffer很快就满了,抓不了几帧数据;

解决方案

最终找到了USBPcap,它是专门为windows平台设计的,他由两部分组成, 滤型驱动命令行工具

  • 驱动捕获USB数据包,暂存在内部buffer中;
  • 命令行工具通过驱动创建的的设备文件来读取捕获的数据包,可以保存到文件或直接从stdout输出;

由于驱动内部的buffer大小和捕获设置是通过ioctl控制,而我的分析处理程序是python写的,不方便直接去操作设备文件,因此,处理程序开了一个进程运行命令行工具,通过命令行参数设置了驱动的buffer大小和捕获参数;处理程序通过读取命令行工具的stdout获取数据;
命令行工具的输出是usbpcap格式是,定义比较简单,参见 pcapusbpcap 文件格式;

参考代码

https://github.com/t1ngyu/snippet

参考

  • USBPcap官网 http://desowin.org/usbpcap/
  • usbpacp文件格式 http://desowin.org/usbpcap/captureformat.html
  • pcap文件格式 https://wiki.wireshark.org/Development/LibpcapFileFormat

转载于:https://www.cnblogs.com/whltingyu/p/5369665.html

你可能感兴趣的:(windows平台下捕获USB数据包并实时处理)