usbmon-wireshark之USB协议抓取分析
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
下载最新libpcap
和tcpdump
, 当前是libpcap-1.9.1
和tcpdump-4.9.3
. 下载地址 :
http://www.tcpdump.org/release/
将libpcap-1.9.1
和tcpdump-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 Zero
的Bus=04
, 利用tcpdump
截取usb数据 :
./tcpdump -i usbmon4 -w /home/config/usb_log.pcap
运行测试程序, 读写usb设备, 然后将usb_log.pcap
放到PC上进行解析.
wireshark
wireshark
中选择文件->打开
, 找到相应的数据, 打开. (如果没有, 安装稍微新一点的wireshark
)如图 :
接下来就可以对里面的数据进行分析了.
usbmon-wireshark之USB协议抓取分析相关推荐
- UDP协议抓包分析 -- wireshark
UDP协议抓包分析 – wireshark UDP是User Datagram Protocol用户数据报协议的简称.他是OSI七层模型中一种无连接的传输层协议,提供面向事务的简单的不可靠信息传送服务 ...
- ICMP协议抓包分析-wireshark
ICMP协议抓包分析-wireshark ICMP- (Internet Control Message Protocol,网际报文协议)是Internet协议族的核心协议之一,也可称为是网际控制报文 ...
- TCP协议抓包分析 -- wireshark
TCP协议抓包分析 – wireshark TCP- (Transmission Control Protocol,传输控制协议)是一种面向连接的.可靠的.基于IP的传输层协议.它的主要目的就是为数据 ...
- ARP协议抓包分析 -- wireshark
ARP协议抓包分析 – wireshark ARP- Address Resolution Protocol协议,即地址解析协议.该协议功能就是将IP地址解析成MAC地址. 在发送数据的时候,只知道目 ...
- IE安装HttpWatch使用教程HttpWatch协议抓取包不显示解决办法
给大家简单讲讲网页协议抓取包的使用,以及出现的问题 安装IEHttpWatch不显示怎么办,看看下面 HttpWatch是一个可用于录制HTTP请求信息的工具,由Simtec Limited公司开发 ...
- 高校新闻抓取分析之百度新闻篇---数据抓取
高校新闻抓取分析之百度新闻篇-数据抓取 tips: 本文代码使用python3编写 代码仓库 使用urllib抓取数据 百度新闻网页界面分析 在我读大学的时候(18年前),百度新闻还能基于新闻标题或者 ...
- 高校新闻抓取分析之百度新闻篇---数据清洗解析
高校新闻抓取分析之百度新闻篇-数据清洗解析 tips: 本文代码使用python3编写 代码仓库 使用re抓取解析数据 前言 在上一篇文章中,成功构建URL并获取到高校新闻数据. 现在将对请求回来的数 ...
- python 自动抓取分析房价数据——安居客版
引言 中秋回家,顺便想将家里闲置的房子卖出去.第一次卖房,没经验,于是决定委托给中介.中介要我定个价.最近几年,房价是涨了不少,但是长期在外,也不了解行情.真要定个价,心里还没个数.网上零零散散看了下 ...
- python 命令行抓取分析北上广深房价数据
引言 昨天在老家,发布了一篇<python 自动抓取分析房价数据--安居客版>.在文末,第6小节提供了完整代码,可以在 python3 环境,通过命令行传入参数 cookie 自动抓取房价 ...
最新文章
- Python for虚幻引擎编辑器工具脚本学习教程
- linux防火墙之 ufw
- 中国台湾芯片设计商 Realtek 的WiFi SDK漏洞影响数百万IOT设备
- Java常用API例子_Java常用API及Math类
- pipenv相关指令
- UIView 中常见的方法总结
- mysql 密码eba_MySQL-体系结构及授权管理
- 海缆修好之前,上网悠着点
- 20款超酷的404错误页面(上)
- Worksheet Crafter Premium Edition for Mac(教学工作表制作工具)
- 笨方法学Python 习题16
- 信杂比公式_信噪比怎么计算
- C语言 “百鸡问题”最优解
- [python] Python二维码生成器qrcode库入门
- 学习笔记:用冲激函数的傅里叶变换求阶跃函数的傅里叶变换
- 0基础学c语言txt下载,0基础学C语言.doc
- 腾讯企业邮箱解析到阿里云域名
- 如何破坏服务器系统,如何修正文件系统超块中毁坏的幻数
- ShapeFile预览神器QuickLook
- (Java高级程序设计-案例)-通过JDBC连接MySQL并对表进行增、删、改、查