使用 usbmon 抓取 usb 总线上的数据
usbmon 即 usb monitor,是 linux 内置的 usb 抓包工具。usbmon 本质是一个内核模块,在我的 ubuntu14.0 4中,模块的位置:/lib/modules/4.4.0-31-generic/kernel/drivers/usb/mon/usbmon.ko。
1、检测内核是否支持 debugfs 文件系统
linux 系统支持很多类型的文件系统,像 ext3、sysfs、ramfs、tmpfs等文件系统,首先检测内核是否支持 debugfs 文件系统。
2、挂载 debugfs 文件系统
执行 sudo mount -t debugfs none_debugs /sys/kernel/debug 命令,如果提示已经挂载,则下次抓包就无需运行该命令了,表示系统默认会挂载该文件系统。
如上图所示,我的 ubuntu 系统默认已经挂载了 debugfs 文件系统,无需再去手动挂载。
3、确认内核支持 usbmon 模块
如上图所示,目前内核不支持 usbmon 模块,需要手动安装 usbmon 模块。
4、安装 usbmon 模块
执行 modprobe usbmon 命令,可以看到系统成功安装了 usbmon 这个模块。
5、监测 usb 总线上的数据

lsusb命令参数
-v:显示usb设备的详细信息
-t:以树状结构显示usb设备的层次
-s<总线:设备号>:仅显示指定的总线或设备号的设备
-d<厂商:产品>:仅显示指定厂商和产品编号的设备
方法2:cat /sys/kernel/debug/usb/devices
