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 
 

//-----------------------------------------------------------------------------------

挂载debugfs

[root@szclou /sys/kernel]# mount -t debugfs none_debugs /sys/kernel/debug
[root@szclou /sys/kernel/debug]#ls
bdi             gpio            memblock        sched_features
clk             hid             pinctrl         usb
extfrag         iio             pwm

输出设备信息:

#cat /sys/kernel/debug/usb/devices 

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12   MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev= 3.10
S:  Manufacturer=Linux 3.10.32 ohci_hcd
S:  Product=Nuvoton NUC970 OHCI Host Controller
S:  SerialNumber=nuc970-ohci
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 2
B:  Alloc=  0/800 us ( 0%), #Int=  1, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 3.10
S:  Manufacturer=Linux 3.10.32 ehci_hcd
S:  Product=Nuvoton NUC970 EHCI Host Controller
S:  SerialNumber=nuc970-ehci
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=480  MxCh= 4
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=14cd ProdID=8601 Rev= 0.00
S:  Manufacturer=USB Device  
S:  Product=USB 2.0 Hub            
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=256ms

T:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  3 Spd=12   MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0403 ProdID=6001 Rev= 6.00
S:  Manufacturer=FTDI
S:  Product=FT232R USB UART
S:  SerialNumber=A600aJhL
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 90mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms

T:  Bus=01 Lev=02 Prnt=02 Port=01 Cnt=02 Dev#=  5 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1221 ProdID=3234 Rev= 0.00
S:  Manufacturer=USB2.0
S:  Product=Flash Disk
S:  SerialNumber=1000000000007B54
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

查看总线类型:

[root@szclou /sys/kernel/debug/usb/usbmon]#ls
0s  0u  1s  1t  1u  2s  2t  2u

查看接口设备:

[root@szclou /sys/kernel/debug/usb/usbmon]#/mnt/ext/tcpdump -D
1.usbmon1 (USB bus number 1)
2.usbmon2 (USB bus number 2)
3.any (Pseudo-device that captures on all interfaces)
4.lo

启动抓包工具:

[root@szclou /sys/kernel/debug/usb/usbmon]#/mnt/ext/tcpdump -i usbmon1 -w /mnt/data/usblog.cap &

在linux运行时出现了一个问题,应该是tcpdump导致。直接导出文件到windows环境下通过wireshark打开:

[root@szclou /mnt/app]#/mnt/ext/tcpdump -r /mnt/data/usblog.cap 
reading from file /mnt/data/usblog.cap, link-type USB_LINUX_MMAPPED (USB with padded Linux header)
tcpdump: packet printing is not supported for link type USB_LINUX_MMAPPED: use -w

wireshark解析报文:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值