使用 usbmon 抓取 usb 总线上的数据

usbmon 即 usb monitor,是 linux 内置的 usb 抓包工具。usbmon 本质是一个内核模块,在我的 ubuntu14.0 4中,模块的位置:/lib/modules/4.4.0-31-generic/kernel/drivers/usb/mon/usbmon.ko

1、检测内核是否支持 debugfs 文件系统

  linux 系统支持很多类型的文件系统,像 ext3、sysfs、ramfs、tmpfs等文件系统,首先检测内核是否支持 debugfs 文件系统。

  

2、挂载 debugfs 文件系统

  执行 sudo mount -t debugfs none_debugs /sys/kernel/debug 命令,如果提示已经挂载,则下次抓包就无需运行该命令了,表示系统默认会挂载该文件系统。

  

  如上图所示,我的 ubuntu 系统默认已经挂载了 debugfs 文件系统,无需再去手动挂载。

3、确认内核支持 usbmon 模块

  

  如上图所示,目前内核不支持 usbmon 模块,需要手动安装 usbmon 模块。

4、安装 usbmon 模块

  执行 modprobe usbmon 命令,可以看到系统成功安装了 usbmon 这个模块。

  

  这里的原理是,usbmon是一个模块,使用 modprobe 安装该模块后,该模块内部调用 debugfs 相关的API,这样在 /sys/kernel/debug/usb 目录下便形成了 usbmon 这个目录。
     查看 /sys/kernel/debug/usb/usbmon 目录,发现该目录下有以下内容:0s、0u、1s、1t、1u、2s、2t、2u,其中1代表 bus1,2代表 bus2,0代表所有 usb 总线。

5、监测 usb 总线上的数据

  首先需要获取想要监测的设备所在的总线以及设备号。linux 中查看USB设备列表以及USB设备详细信息的两种方法
  方法1:执行 lsusb 命令
        

 lsusb命令参数

  -v:显示usb设备的详细信息
  -t:以树状结构显示usb设备的层次
  -s<总线:设备号>:仅显示指定的总线或设备号的设备
  -d<厂商:产品>:仅显示指定厂商和产品编号的设备

  方法2cat /sys/kernel/debug/usb/devices

         
 
  然后就可以根据上面的结果,查看 usb 总线上的数据。
  cat /sys/kernel/debug/usb/usbmon/1u | grep "1:005"  // 其中的1:005是根据第4步中确认的,分配给模块的设备号
  执行该命令,就可以查看模块所挂载的usb总线上的数据传输。
  关于该命令输出的数据所代表的含义,参考我的下一篇博文:详解 usbmon 抓取的 log 各字段的含义
 

使用 usbmon 抓取 usb 总线上的数据的更多相关文章

  1. 抓取 USB 总线LOG

    在实际工作中经常会遇到需要分析USB报文的情形.比如对比不同厂家4G/5G模块.解决实际IP over USB传输效率低下问题. 这时候如果能抓取到 USBMOM 总线的报文将会大有裨益.毕竟所有ho ...

  2. 利用wireshark抓取远程linux上的数据包

    原文发表在我的博客主页,转载请注明出处. 前言 因为出差,前后准备总结了一周多,所以博客有所搁置.出差真是累人的活计,不过确实可以学习到很多东西,跟着老板学习做人,学习交流的技巧.入正题~ wires ...

  3. 详解usbmon抓取的log各字段的含义

    详解 usbmon 抓取的 log 各字段的含义 在上篇文章中,我们已经介绍了如何在 linux 下使用 usbmon 抓取 usb 总线上数据的方法.(https://www.cnblogs.com ...

  4. fiddler如何抓取夜神模拟器上的包

    一.设置Fiddler代理 1.点击Tools-Fiddler Options进入Fiddler Options页面 2.点击Connections,将Fiddler listens on port设 ...

  5. SQL Server定时自动抓取耗时SQL并归档数据发邮件脚本分享

    SQL Server定时自动抓取耗时SQL并归档数据发邮件脚本分享 第一步建库和建表 USE [master] GO CREATE DATABASE [MonitorElapsedHighSQL] G ...

  6. Hawk: 20分钟无编程抓取大众点评17万数据

    1. 主角出场:Hawk介绍 Hawk是沙漠之鹰开发的一款数据抓取和清洗工具,目前已经在Github开源.详细介绍可参考:http://www.cnblogs.com/buptzym/p/545419 ...

  7. SQL Server定时自动抓取耗时SQL并归档数据脚本分享

    原文:SQL Server定时自动抓取耗时SQL并归档数据脚本分享 SQL Server定时自动抓取耗时SQL并归档数据脚本分享 第一步建库 USE [master] GO CREATE DATABA ...

  8. 测试开发Python培训:抓取新浪微博评论提取目标数据-技术篇

    测试开发Python培训:抓取新浪微博评论提取目标数据-技术篇   在前面我分享了几个新浪微博的自动化脚本的实现,下面我们继续实现新的需求,功能需求如下: 1,登陆微博 2,抓取评论页内容3,用正则表 ...

  9. 抓取摩拜单车API数据,并做可视化分析

    抓取摩拜单车API数据,并做可视化分析 纵聊天下 百家号|04-19 15:16 关注 警告:此篇文章仅作为学习研究参考用途,请不要用于非法目的. 摩拜是最早进入成都的共享单车,每天我从地铁站下来的时 ...

随机推荐

  1. 一、Spring的基本应用

    1.spring导包 导入maven包 <dependencies> <dependency> <groupId>org.springframework</g ...

  2. C#,js和sql实用技巧选1

    我刚开始.net 开发的那几年,差不多每天坚持搜集实用的技巧和代码片断.几年下来也搜集了上千条.现在选出一些不太容易找或者自己有较多体会的,写在这里.内容太多,分两次发. 1.上传文件超过设置允许的最 ...

  3. python列表的增删改查和嵌套

    列表 python常用的数据类型 可承载任意的数据类型 列表是有序的,可索引.切片(步长) 列表的创建 list1 = [1, 2, 'whll'] #1. list2 = list() #2. #3 ...

  4. 算法-利用队列实现逐行打印杨辉三角形的前n行

    分别打印二项式(a+b)^n展开项的系数,在程序中利用了一个队列,在输出上一行系数时,将下一行的系数预先放入队列中.在各行系数间插入0. void YANGVI(int n){ Queue q(n+) ...

  5. pandas 数据子集的获取

    有时数据读入后并不是对整体数据进行分析,而是数据中的部分子集,例如,对于地铁乘客量可能只关心某些时间段的流量,对于商品的交易可能只需要分析某些颜色的价格变动,对于医疗诊断数据可能只对某个年龄段的人群感 ...

  6. Maven通解

      参考博文:通俗理解maven 该篇文章篇幅很长,大概的思路如下 maven的介绍,初步认识,获取jar包的三个关键属性 --> 介绍仓库(获取的jar包从何而来)-->用命令行管理ma ...

  7. zero:如何找到SEO流量的突破口

    http://www.wocaoseo.com/thread-326-1-1.html 之前一篇文章已有提到过,SEO可以分为两个阶段: 一个阶段是了解点SEO知识,然后就到网站上去找页面,看哪些招式 ...

  8. Node中间层浅认知

    Node中间层允许前端来做网站路由.页面渲染.SEO优化,对以往从来不接触这些内容的前端选手来说,正是锻炼我们网站架构的好机会.另外,这也是一次深入了解Node的好机会,准备好迎接即将到来的前端工程化 ...

  9. python笔记-正则表达式

    什么是正则表达式: 正则表达式是一个特殊的字符序列,能帮助我们方便的检查一个字符串是否与某种模式匹配(定义往往都很枯燥) 也称之为”模式“,即可用于检查一个给定的字符串是否符合某种模式 举例: 我们定 ...

  10. Codeforces1348 题解

    AC代码连接 A Phoenix and Balance 显而易见,将前\(\frac{n}{2}-1\)个和最后1个分为1组,剩下的1组即为最优方案. B Phoenix and Science 这 ...