我是靠谱客的博主 凶狠画板,最近开发中收集的这篇文章主要介绍Linux 抓USB包,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述


在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包所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部