概述
在windows上有不少抓取USB包的工具,但有种情况程序是基于linux开发的,所以。
这里内核的一个工具usbmon 和 tcpdump,这里在Ubutu下测试,其他嵌入式设备并没有测试,相信只要内核支持了问题就不大。
1. 配置内核
Device Driver ---->
[*] USB support --->
<M> USB Monitor
2.加载模块
modprobe usbmon 后者 sudo insmod 路径/usbmon.ko
mount -t debugfs none_debugs /sys/kernel/debug
检查是否存在目录 /sys/kernel/debug/usb/usbmon
ls /sys/kernel/debug/usb/usbmon
0s 0u 1s 1t 1u 2s 2t 2u 3s 3t 3u
如果总线号是1,则是1u,如果总线号是2,则是2u,依次类推。特殊情况是0u表示监听所有的
lsusb 确认需要监听的usb设备的pid 和vid
cat /sys/kernel/debug/usb/devices
# cat /sys/kernel/debug/usb/devices 确定你要监视的usb设备所在总线号和设备号
# 选择包含有 : Vendor=148f ProdID=5370 Rev= 1.01 的段落
# as follows:
# T: Bus=01Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 0
# D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
# P: Vendor=148f ProdID=5370 Rev= 1.01
# S: Manufacturer=Ralink
# S: Product=802.11 n WLAN
# S: SerialNumber=1.0
# C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=450mA
# I:* If#= 0 Alt= 0 #EPs= 5 Cls=ff(vend.) Sub=ff Prot=ff Driver=rtusbSTA
# E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
# E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
# E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
# E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
# E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
# 可以从第一行看到 Bus= 01,设备号是2
根据pid vid 得知 bus 和设备号,从而知道是1u 或者其他的文件
抓包:
cat /sys/kernel/debug/usb/usbmon/2u > ./log.txt
这里需要注意,由于我们的这个抓包命令,只能指定是抓哪个总线上,但同一个总线通常会有很多usb设备的,
如果我们只是关注特定的某个usb设备的话,我自己就需要留意设备地址字段,通过这个字段,我们就可以区分这个传输是不是我们要监听的设备发送出来的。
还有一个tcpdump 工具抓出来的包可以结合wireshark 工具来查看
下载tcpdump工具,
wireshark ,如果嵌入式设备不方面弄这个程序,可以在宿主机上装wireshark
tcpdump -D
1.usbmon1 (USB bus number 1)
2.usbmon2 (USB bus number 2)
3.eth4
4.any (Pseudo-device that captures on all interfaces)
5.lo
我们这里抓取usb2
tcpdump -i usbmon2 -w /data/usblog.pcap &
killall tcpdump
wireshark usblog.pcap
最后
以上就是凶狠画板为你收集整理的Linux 抓USB包的全部内容,希望文章能够帮你解决Linux 抓USB包所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复