如何使用usbmon进行usb抓包调试

本文介绍了Linux内核工具usbmon的使用方法,用于监控USB总线上的I/O操作。首先,需要挂载debugfs文件系统并加载usbmon模块。接着,通过ls命令查看可用的设备号,并根据设备信息找到目标总线。然后,使用cat命令抓取特定总线或所有总线的数据到指定文件。在抓取过程中,操作USB设备以生成流量。最后,使用Control-C结束监控进程,抓取的数据将保存在指定文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、概述

usbmon是linux内核的一个小工具,主要是用来收集在USB总线上进行I/O操作记录。这个功能类似于工具(如tcpdump、Ethereal)进行网络套接字监控。

2、使用方法

(1)准备

挂载debugfs文件系统(需要内核配置使能),然后加载usbmon模块(如果以模块方式编译)。如果是编译进内核,则不需要加载usbmon。

# mount -t debugfs none_debugs /sys/kernel/debug
# modprobe usbmon
#

(2)查看usbmon监控可以识别到的设备号

# ls /sys/kernel/debug/usb/usbmon
0s  0u  1s  1t  1u  2s  2t  2u  3s  3t  3u  4s  4t  4u
#

(3)找到所需监控的总线编号

运行“cat /sys/kernel/debug/usb/devices”。分别设备的信息,包括设备描述、Vendor、ProdID等。例如:

T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0557 ProdID=2004 Rev= 1.00
S:  Manufacturer=ATEN
S:  Product=UC100KM V2.00

"Bus=03"指的是3号总线。通常使用使用lsusb得到设备的总线号。例如:

Bus 003 Device 002: ID 0557:2004 ATEN UC100KM V2.00

(4)抓取

如果想只抓取3号总线,则:

# cat /sys/kernel/debug/usb/usbmon/3u > /tmp/1.mon.out

如果想抓取所有总线,则

# cat /sys/kernel/debug/usb/usbmon/0u > /tmp/1.mon.out

这个进程会一直获取,直到被杀死。

(5)操作USB设备

此时可以对设备操作以创造一些总线流量,例如可以插入flash设备、复制文件、控制网络摄像头等等。

(6)关闭cat

通常使用Control-C结束cat进程,此时保存的内容在/tmp/1.mon.out里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值