openwrt下tcpdump抓取usb数据包

原文地址::https://blog.csdn.net/m0_38134493/article/details/72723733?utm_source=blogxgwz3

相关文章

1、linux下的usb抓包方法----https://www.cnblogs.com/listenerln/p/7263481.html

2、Linux下Tcpdump使用----https://www.cnblogs.com/hzl6255/p/6147985.html

3、linux下usb抓包方法----https://blog.csdn.net/tommy_ly/article/details/97666028

4、Linux 抓USB包----https://blog.csdn.net/zmnqazqaz/article/details/50497733?utm_source=blogxgwz2

 

这两天在看USB转串口的驱动,并在想办法解决一个4G设备通过USB插入openwrt后枚举的串口无法收发的问题。看了大概有一个星期了,大概把USB是什么搞清楚了。但是USB的世界实在是太复杂了,除了USB协议本身,枚举出来的设备和系统中的其他总线总是有一腿,才刚接触linux内核的东西,感觉头大,实在不是短时间能啃下来的。好了废话不多说,先看看我处理tcpdump是怎么抓取usb总线数据的吧。

相关软件

  • openwrt(我用的是bb版本,linux内核3.10.49)
  • wireshark(我用的最新版本2.2.6)
  • tcpdump(抓包神奇)
  • libpcap (tcpdump以来的库)
  • usbmonitor (usb数据包,就靠它了)

一,编译openwrt支持tcpdump和libpcap

1.1, 在 menuconfig中选择tcpdump和libpacap中的usb

Network-->
  [*] tcpdump

Libraries-->
  -*- libpcap-->
    Configuration--->
      [*] Include USB support  (注意这个一定要选上,否则你别想通过tcpdump抓usb包)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

下面还有一个 tcpdump mini,我没有用,也没管。

1.2, 在menuconfig 中选择usbmointor

Kernel modules--->
  USB support-->
    [*] kmod-usbmon
  • 1
  • 2
  • 3

1.3, 在kernel_menuconig 内核配置中选择usb monitor

Device Drivers -->
  [*] USB support  --->  
    <*>     USB Monitor 
  • 1
  • 2
  • 3

二,执行make编译

三,下载到目标板

具体的板子不一样,我这里就不写了

四,抓包

终于到了抓包了。

4.1,确认一下你的设备在USB哪个总线上

$ cat /sys/kernel/debug/usb/devices

T:  Bus=01 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=80ee ProdID=0021 Rev= 1.00
S:  Manufacturer=VirtualBox
S:  Product=USB Tablet
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=(none)
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=10ms
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

上面这个bus就表示总线号,Dev#表示设备号。不同的总线对应的usbmonx不一样。例如BUS=1就对应usbmon1,BUS=2对应usbmon2。

4.2,查看tcpdump是否可以检测到usbmonx设备

$ tcpdump -D
1.eth0
2.br-lan
3.usbmon1 (USB bus number 1)
4.any (Pseudo-device that captures on all interfaces)
5.lo
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

可以看到我这里有usbmon1设备可用了。

4.3,抓取usb数据

$ tcpdump -i usbmon1 -w usb.pcap
  • 1

4.4,好了可以插入你想要抓取的USB设备了,抓取完成后,导出usb.pcap

4.5,用wireshark查看usb数据包

将导出的usb.pcap文件,用wireshark打开,就可以看看usb交互的数据流程了,看起来已经比较直观了。比起原始的usbmon数据直观很多。


show一下效果

usb.png

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值