zoukankan      html  css  js  c++  java
  • 抓取 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...

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

    如果这个命令也失败了。。。。 那么你需要检查你的系统 usbmon 驱动相关的是否都打开了。

    如何分析报文

    参见小伙伴写的另一个博客:详解 usbmon 抓取的 log 各字段的含义

  • 相关阅读:
    NGUI的sprite的使用(九宫切图)
    NGUI的button的创建的问题(Button Script)
    NGUI的Lebal需注意问题
    untiy3D-初学NGUI遇到问题
    MVC路由学习:自定义路由参数(用户看不到参数名),重新定义路由规则
    C#设计模式:工厂模式
    C#设计模式:抽象工厂(Abstract Factory)
    2014年计算机求职总结--准备篇
    UVA OJ 10035
    UVa OJ 455 Periodic Strings
  • 原文地址:https://www.cnblogs.com/sinpo828/p/13579929.html
Copyright © 2011-2022 走看看