usbmon + wireshark 协议抓取

usbmon

内核开启CONFIG_USB_MON=m, 重新编译内核, 编译ko :

make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- CONFIG_USB_MON=m  M=./drivers/usb/ modules

设备挂载debugfs, 加载ko :

mount -t debugfs debugfs /sys/kernel/debug/
insmod usbmon.ko

查看是否成功产生/sys/kernel/debug/usb/usbmon/目录 :

[root@dvrdvs config] # ls /sys/kernel/debug/usb/usbmon/
0s  0u  1s  1t  1u  2s  2t  2u  3s  3t  3u  4s  4t  4u

接着下一步.

tcpdump

下载最新libpcaptcpdump, 当前是libpcap-1.9.1tcpdump-4.9.3. 下载地址 :

http://www.tcpdump.org/release/

libpcap-1.9.1tcpdump-4.9.3放在同一个目录下, 先编译libcap :

./configure --host=aarch64-himix100-linux --with-pcap=linux
make

再编译tcpdump :

./configure --host=aarch64-himix100-linux
make

tcpdump放到设备上, 运行./tcpdump -D :

[root@dvrdvs ] # ./tcpdump -D
1.eth0 [Up, Running]
2.lo [Up, Running, Loopback]
3.any (Pseudo-device that captures on all interfaces) [Up, Running]
4.usbmon0 (Raw USB traffic, all USB buses) [none]
5.usbmon1 (Raw USB traffic, bus number 1)
6.usbmon2 (Raw USB traffic, bus number 2)
7.usbmon3 (Raw USB traffic, bus number 3)
8.usbmon4 (Raw USB traffic, bus number 4)
9.eth1 [none]

可以看到有多个usbmon, 这里查看一下我们需要的设备 :

[root@dvrdvs config] # cat /sys/kernel/debug/usb/devicesT:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 1
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 4.09
S:  Manufacturer=Linux 4.9.37 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=12300000.xhci_0
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=256msT:  Bus=01 Lev=01 Prnt=01 Port=00 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=05e3 ProdID=0608 Rev=85.37
S:  Product=USB2.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=256msT:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=5000 MxCh= 1
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 3.00 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev= 4.09
S:  Manufacturer=Linux 4.9.37 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=12300000.xhci_0
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=256msT:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 1
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 4.09
S:  Manufacturer=Linux 4.9.37 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=12310000.xhci_1
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=256msT:  Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=5000 MxCh= 1
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 3.00 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev= 4.09
S:  Manufacturer=Linux 4.9.37 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=12310000.xhci_1
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=256msT:  Bus=04 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  3 Spd=5000 MxCh= 0
D:  Ver= 3.10 Cls=ff(vend.) Sub=00 Prot=00 MxPS= 9 #Cfgs=  2
P:  Vendor=0525 ProdID=a4a0 Rev= 4.09
S:  Manufacturer=Linux 4.9.37 with dwc3-gadget
S:  Product=Gadget Zero
S:  SerialNumber=0123456789.0123456789.0123456789
C:* #Ifs= 1 Cfg#= 3 Atr=c0 MxPwr=  8mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
E:  Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:  If#= 0 Alt= 1 #EPs= 4 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
E:  Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=82(I) Atr=01(Isoc) MxPS=1024 Ivl=1ms
E:  Ad=02(O) Atr=01(Isoc) MxPS=1024 Ivl=1ms
C:  #Ifs= 1 Cfg#= 2 Atr=c0 MxPwr=  8mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=
E:  Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms

选择包含有 P: Vendor=xxx ProdID=xxx Rev= xxx 的段落(即筛选出你要抓包的USB设备的PID/VID号), 如果总线号是1(即Bus=01), 则是1u, 如果总线号是2, 则是2u, 依次类推.
特殊情况是0u表示监听所有总线.

Gadget ZeroBus=04, 利用tcpdump截取usb数据 :

./tcpdump -i usbmon4 -w /home/config/usb_log.pcap

运行测试程序, 读写usb设备, 然后将usb_log.pcap放到PC上进行解析.

wireshark

wireshark中选择文件->打开, 找到相应的数据, 打开. (如果没有, 安装稍微新一点的wireshark)如图 :

接下来就可以对里面的数据进行分析了.

usbmon-wireshark之USB协议抓取分析相关推荐

  1. UDP协议抓包分析 -- wireshark

    UDP协议抓包分析 – wireshark UDP是User Datagram Protocol用户数据报协议的简称.他是OSI七层模型中一种无连接的传输层协议,提供面向事务的简单的不可靠信息传送服务 ...

  2. ICMP协议抓包分析-wireshark

    ICMP协议抓包分析-wireshark ICMP- (Internet Control Message Protocol,网际报文协议)是Internet协议族的核心协议之一,也可称为是网际控制报文 ...

  3. TCP协议抓包分析 -- wireshark

    TCP协议抓包分析 – wireshark TCP- (Transmission Control Protocol,传输控制协议)是一种面向连接的.可靠的.基于IP的传输层协议.它的主要目的就是为数据 ...

  4. ARP协议抓包分析 -- wireshark

    ARP协议抓包分析 – wireshark ARP- Address Resolution Protocol协议,即地址解析协议.该协议功能就是将IP地址解析成MAC地址. 在发送数据的时候,只知道目 ...

  5. IE安装HttpWatch使用教程HttpWatch协议抓取包不显示解决办法

    给大家简单讲讲网页协议抓取包的使用,以及出现的问题  安装IEHttpWatch不显示怎么办,看看下面 HttpWatch是一个可用于录制HTTP请求信息的工具,由Simtec Limited公司开发 ...

  6. 高校新闻抓取分析之百度新闻篇---数据抓取

    高校新闻抓取分析之百度新闻篇-数据抓取 tips: 本文代码使用python3编写 代码仓库 使用urllib抓取数据 百度新闻网页界面分析 在我读大学的时候(18年前),百度新闻还能基于新闻标题或者 ...

  7. 高校新闻抓取分析之百度新闻篇---数据清洗解析

    高校新闻抓取分析之百度新闻篇-数据清洗解析 tips: 本文代码使用python3编写 代码仓库 使用re抓取解析数据 前言 在上一篇文章中,成功构建URL并获取到高校新闻数据. 现在将对请求回来的数 ...

  8. python 自动抓取分析房价数据——安居客版

    引言 中秋回家,顺便想将家里闲置的房子卖出去.第一次卖房,没经验,于是决定委托给中介.中介要我定个价.最近几年,房价是涨了不少,但是长期在外,也不了解行情.真要定个价,心里还没个数.网上零零散散看了下 ...

  9. python 命令行抓取分析北上广深房价数据

    引言 昨天在老家,发布了一篇<python 自动抓取分析房价数据--安居客版>.在文末,第6小节提供了完整代码,可以在 python3 环境,通过命令行传入参数 cookie 自动抓取房价 ...

最新文章

  1. Python for虚幻引擎编辑器工具脚本学习教程
  2. linux防火墙之 ufw
  3. 中国台湾芯片设计商 Realtek 的WiFi SDK漏洞影响数百万IOT设备
  4. Java常用API例子_Java常用API及Math类
  5. pipenv相关指令
  6. UIView 中常见的方法总结
  7. mysql 密码eba_MySQL-体系结构及授权管理
  8. 海缆修好之前,上网悠着点
  9. 20款超酷的404错误页面(上)
  10. Worksheet Crafter Premium Edition for Mac(教学工作表制作工具)
  11. 笨方法学Python 习题16
  12. 信杂比公式_信噪比怎么计算
  13. C语言 “百鸡问题”最优解
  14. [python] Python二维码生成器qrcode库入门
  15. 学习笔记:用冲激函数的傅里叶变换求阶跃函数的傅里叶变换
  16. 0基础学c语言txt下载,0基础学C语言.doc
  17. 腾讯企业邮箱解析到阿里云域名
  18. 如何破坏服务器系统,如何修正文件系统超块中毁坏的幻数
  19. ShapeFile预览神器QuickLook
  20. (Java高级程序设计-案例)-通过JDBC连接MySQL并对表进行增、删、改、查

热门文章

  1. php中文返回乱码,php中文返回乱码怎么办
  2. SVN导入项目,去除svn标记
  3. 驱动人生英文版官方版
  4. matlab验证对称三相电路,实验四period;三相交流电路 - 范文中心
  5. 6万字解决算法面试中的深度学习基础问题
  6. C++ 泛型程序设计 模板
  7. 史上最全的厦门英语角!赶紧收藏啦!
  8. 定制电商进销存软件需要具备的模块与公式
  9. RTSP协议详解(转载)
  10. camera isp 介绍