背景

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

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

解决方案

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

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

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

参考代码

https://github.com/t1ngyu/snippet

参考

posted on 2016-04-29 09:57  t1ngyu  阅读(2336)  评论(0编辑  收藏  举报