抓取 USB 总线LOG
在实际工作中经常会遇到需要分析USB报文的情形。比如对比不同厂家4G/5G模块。解决实际IP over USB传输效率低下问题。 这时候如果能抓取到 USBMOM 总线的报文将会大有裨益。毕竟所有host(Linux/Windows)与外设(USB)交互的信息都是经由 USB 总线才发送到设备上。
如上,我们计划抓取 USB 总线上的报文信息。但是怎么做呢?
Wireshark
Wireshark 是最简单最熟悉的方案。在Windows 上靠USBPCAP 组件抓USB,这需要在Wireshark 安装时候选择安装上。
在Linux 上依赖于操作系统 USBMON 驱动。Linux 发行版可以直接modprobe -a usbmon来加载 USBMON 驱动(默认不加载),然后打开 Wireshark 就能看到 usbmon1,usbmon2...
如下图,选中设备对应的总线就可以抓了

tcpdump
tcpdump 抓取 USB 报文和抓取网卡语法是一样的, 如下图

在嵌入式设备/Android上这里会有个坑。就是用tcpdump -D能看到 usbmon 节点。但是,执行tcpdump -i usbmon1类似的命令时候会提示 usbmon1 不存在???
这是因为操作系统被裁剪掉了 udev,导致没有生成设备节点。我们可以用mknod命令来手动创建这些节点!

如何确定总线
太简单了!!! 既然要抓LOG,肯定有目标,知道要抓哪个设备的。比如你知道外设的 VID&PID,那么通过 lsusb 就可以看到! 总线1 就是usbmon1,总线 2 就是usbmon2...

那么如果我是嵌入式系统,没有lsusb、urb-devices这样的命令怎么办???
好吧! 其实你可以这么看:

如果这个命令也失败了。。。。 那么你需要检查你的系统 usbmon 驱动相关的是否都打开了。
如何分析报文
参见小伙伴写的另一个博客:详解 usbmon 抓取的 log 各字段的含义
抓取 USB 总线LOG的更多相关文章
- 使用 usbmon 抓取 usb 总线上的数据
使用 usbmon 抓取 usb 总线上的数据 usbmon 即 usb monitor,是 linux 内置的 usb 抓包工具.usbmon 本质是一个内核模块,在我的 ubuntu14.0 4中 ...
- 如何抓取崩溃的log日志
4.手机录屏工具的推荐 Andriod:录屏大师,易录屏等等. iOS:AirPlayer,iTools. 5.如何抓取崩溃的log日志? android闪退获取日志方法: 1.下载adb工具包 2. ...
- 高通qxdm抓取sensor的log【学习笔记】
高通qxdm抓取sensor的log 打开qxdm,打开设置界面,去掉其他无关的log,打开Log packets .Message packets的SNS的log 之后需要把端口打开,把端口打开之后 ...
- 抓取崩溃的log日志
1.下载adb工具包 也就是解锁软件,如果要解锁的话,需确认有fastboot 安装jdk.sdk 2.注意事项 请确保电脑上只连接了一台手机设备(最好只连接一条USB线),同时确保手机已开启USB调 ...
- android adb命令 抓取系统各种 log
getLog.bat: adb root adb remount adb wait-for-device adb logcat -v time > C:\log.txt 在Android中不同的 ...
- Wireshark 抓取USB的数据包
需要使用root权限来运行Wireshark,并利用Wireshark来嗅探USB通信数据.当然了,我们并不建议大家利用root权限来进行操作.我们可以使用Linux提供的usbmon来为我们获取和导 ...
- 抓取git的log文件批处理命令示例
@echoset sincedate="2016-04-28 00:00:01" ::变量set beforedate="2016-04-29 00:0 ...
- Android平台抓取native crash log
Android开发中,在Java层可以方便的捕获crashlog,但对于 Native 层的 crashlog 通常无法直接获取,只能通过系统的logcat来分析crash日志. 做过 Linux 和 ...
- linux抓取usb包设置usbmon
随机推荐
- 金题大战Vol.0 A、凉宫春日的叹息
金题大战Vol.0 A.凉宫春日的叹息 题目描述 给定一个数组,将其所有子区间的和从小到大排序,求第 \(k\) 小的是多少. 输入格式 第一行两个数\(n\),$ k\(,表示数组的长度和\)k$: ...
- 搭建vue开发环境的步骤,六步完成
搭建vue开发环境的步骤,其实也挺简单的,之前这环境的配置也困扰着我一:在搭建vue的开发环境之前,一定一定要先下载node.js,vue的运行是要依赖于node的npm的管理工具来实现,下载地址:h ...
- DataGrid添加进度条列
DataGridColumn类型的继承树 DataGridColumn的派生类: 一般情况下DataGridBoundColumn和DataGridComboBoxColumn足以满足多数列的样式,如 ...
- linux驱动之内核多线程(三)
本文摘自 http://www.cnblogs.com/zhuyp1015/archive/2012/06/13/2548458.html 接上 一篇文章 ,这里介绍另一种线程间通信的方式:compl ...
- JavaScript学习系列博客_16_JavaScript中的函数(Function)简介
函数(Function) - 函数也是一个对象,也具有普通对象的功能 - 函数中可以封装一些代码,在需要的时候可以去调用函数来执行这些代码:当调用函数时,函数中封装的代码会按照顺序执行. - 使用ty ...
- CSP-J2019 NOIP普及组初赛真题(选择题部分)
NOIP初赛考试提纲 时间:10月的第2/3个星期六下午14:30~16:30 分数及形式:满分100分,形式为笔试(今年可能上机) 1.单项选择题,共15题,每题2分,共30分 2.阅读程序题,共3 ...
- SpringBoot整合SpringAdmin搭建监控平台
在SpringBoot整合Actuator进行健康监控中,胜金讲述了通过Actuator进行健康监控,但是学习API并根据API开发前端需要花费相当大的精力,本次胜金就写一下通过SpringAdmin ...
- 数据操纵DML
数据操纵DML 1. 在dept表中插入两行数据 (1)50,'IT','SHENYANG';(2)60,'HR','DALIAN'; 2. 设置保存点beforeup 3. 更新dept表,将60号 ...
- Oracle数据库教程-数据定义语言(表操作)
创建表 建表语法: CREATE TABLE 表名 ( 列1 数据类型 [primary key], 列2 数据类型 default 默认值 [not null], …, constraint 约束名 ...
- ent orm笔记2---schema使用(上)
在上一篇关于快速使用ent orm的笔记中,我们再最开始使用entc init User 创建schema,在ent orm 中的schema 其实就是数据库模型,在schema中我们可以通过Fiel ...