step1. 加载usbmon模块
-
sudo mount -t debugfs none /sys/kernel/debug
#这一步一般不用做,debugfs默认都是挂载的
-
sudo modprobe usbmon #如果这个命令找不到usbmon,那手动从/lib/modules中insmod
-
sudo apt-get install wireshark
若加载成功,则 sudo ls /sys/kernel/debug/usb,可以看到usbmon文件夹。
step2. 添加udev规则,使得wireshark可以捕获到usb接口数据
-
sudo addgroup usbmon
-
sudo gpasswd -a
$USER
usbmon
-
sudo vi /etc/udev/rules.d/99-usbmon.rules
#加入下面一行,保存退出
-
SUBSYSTEM==
"usbmon"
, GROUP=
"usbmon"
, MODE=
"640"
step3. lsusb查看usb设备在哪条总线上
-
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
-
# Bus 003: 设备在第3条总线上,地址是01
step4. 运行wireshark,注意要在root用户下,否则看不到usbmon
-
sudo wireshark
运行时可能会报权限之类的错误,直接跳过,选取后直接点击Start即可
开始界面,或者点击设置,选择usbmon3, 表示抓取bus 003上的数据。
数据抓取界面如下,可以在过滤器中写入: usb.addr contains "3.1", 表示只显示bus3,device1的数据。