Window系统下USB抓包软件工具很多,但linux下USB抓包软件较少,linux系统中可以用wireshark和tcpdump对USB数据进行抓取。Linux下Wireshark和windows版本使用方法相同,下面主要分析下tcpdump的使用方法。
使用Wireshark和tcpdump前需要先安装usbmon.ko驱动,一般系统都已经将其编译到内核,输入命令tcpdump –D查看系统是否安装usbmon驱动。
如果打印信息包含usbmon内容则说明已经安装usbmon驱动。如果没有安装查看驱动目录:/lib/modules/4.4.131-20200710.kylin.desktop-generic/kernel/drivers/usb/mon/中是否有usbmon.ko,(系统版本号根据自己的系统不同),如果没有需要配置内核,将USB Monitor编译成模块。USB Monitor配置项位置如下所示:
Device Drivers --->
USB support --->
<M> USB Monitor
然后重新编译内核。编译生成usbmon.ko后通过命令modprobe usbmon安装驱动,安装后通过lsmod命令可以查看是否安装成功:
安装驱动后再次输入tcpdump –D命令查看,如果相关usbmon接口信息存在,我们就可以通过tcpdump工具抓取usb包了。
根权限下输入命令:tcpdump -i usbmon1对USB总线1上的所有设备进行监测:
也可以使用命令:tcpdump -i usbmon1 -w usb.pcap将抓取的包数据存入文件usb.pcap中,然后用wireshark进行分析。