美文网首页知识储备程序员@IT·互联网
openwrt下tcpdump抓取usb数据包

openwrt下tcpdump抓取usb数据包

作者: kevin_007 | 来源:发表于2017-05-24 17:16 被阅读233次

    这两天在看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包)
    

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

    1.2, 在menuconfig 中选择usbmointor

    Kernel modules--->
      USB support-->
        [*] kmod-usbmon
    

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

    Device Drivers -->
      [*] USB support  --->  
        <*>     USB Monitor 
    

    二,执行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
    
    

    上面这个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
    

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

    4.3,抓取usb数据

    $ tcpdump -i usbmon1 -w usb.pcap
    

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

    4.5,用wireshark查看usb数据包

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


    show一下效果

    usb.png

    相关文章

      网友评论

      • 兴华颖挚:涨知识了,一直以为tcpdump只能抓取网络包,usb也能搞定啊
        kevin_007:@兴华颖挚 嗯,抓包神奇

      本文标题:openwrt下tcpdump抓取usb数据包

      本文链接:https://www.haomeiwen.com/subject/gkjoxxtx.html