zoukankan      html  css  js  c++  java
  • 如何用Wireshark捕获USB数据?

    usb.jpg

    现在越来越多的电子设备采用USB接口进行通讯,通讯标准也在逐步提高。那么,我们就会好奇这些设备是如何工作的?而无论你是一个硬件黑客,业余爱好者或者只是对它有一点兴趣的,USB对我们都是具有挑战性的。

    Powered by WS Oval.png

    事实上通过wireshark,我们可以捕获到usb设备发送给我们主机的数据,这样就可以进一步研究了。

    本文中,我们将向大家介绍怎样通过wireshark捕获usb数据,使用的环境如下:

    l Wireshark 2.0.1(SVN)
    l Linux kernel 4.1.6

    你也可以用其他版本的wireshark,只要是1.2.0以上的都行。这里并没有测试window上能不能行。

    简介

    在开始前,我们先介绍一些USB的基础知识。USB有不同的规格,以下是使用USB的三种方式:

    l USB UART
    l USB HID
    l USB Memory

    UART或者Universal Asynchronous Receiver/Transmitter。这种方式下,设备只是简单的将USB用于接受和发射数据,除此之外就再没有其他通讯功能了。

    HID是人性化的接口。这一类通讯适用于交互式,有这种功能的设备有:键盘,鼠标,游戏手柄和数字显示设备。

    最后是USB Memory,或者说是数据存储。External HDD, thumb drive / flash drive,等都是这一类的。

    其中使用的最广的不是USB HID 就是USB Memory了。

    每一个USB设备(尤其是HID或者Memory)都有一个供应商IDVendor Id)和产品识别码(Product Id)。Vendor Id是用来标记哪个厂商生产了这个USB设备。Product Id用来标记不同的产品,他并不是一个特殊的数字,当然最好不同。如下图:

    图片1.png

    上图是连接在我电脑上的USB设备列表,通过lsusb查看命令。

    例如说,我有一个无线鼠标Logitech。它是属于HID设备。这个设备正常的运行,并且通过lsusb这个命令查看所有usb设备,现在大家能找出哪一条是这个鼠标吗??没有错,就是第四个,就是下面这条:

    Bus 003 Device 010: ID 046d:c52f Logitech, Inc. Unifying Receiver

    其中,ID 046d:c52f就是Vendor-Product Id对,Vendor Id的值是046d,并且Product Id的值是c52fBus 003 Device 010代表usb设备正常连接,这点需要记下来

    准备

    我们用root权限运行Wireshark捕获USB数据流。但是通常来说我们不建议这么做。我们需要给用户足够的权限来获取linux中的usb数据流。我们可以用udev来达到我们的目的。我们需要创建一个用户组usbmon,然后把我们的账户添加到这个组中。

    addgroup usbmon
    gpasswd -a $USER usbmon
    echo 'SUBSYSTEM=="usbmon", GROUP="usbmon", MODE="640"' > /etc/udev/rules.d/99-usbmon.rules

    接下来,我们需要usbmon内核模块。如果该模块没有被加载,我们可以通过以下命令家在该模块:

    modprobe usbmon

    捕获

    打开wireshark,你会看到usbmonX其中X代表数字。下图是我们本次的结果(我使用的是root):

    图片2.png 

    如果接口处于活跃状态或者有数据流经过的时候,wireshark的界面就会把它以波形图的方式显示出来。那么,我们该选那个呢?没有错,就是我刚刚让大家记下来的,这个X的数字就是对应这USB Bus。在本文中是usbmon3。打开他就可以观察数据包了。

    图片3.png

    最后

    那么我们获取到了这些有什么用呢?通过这些,我们可以了解到usb设备与主机之间的通信过程和工作原理,也许我们就可以把这些知识用到逆向工程中,得到一些东西。好了,就到这里!!!

    ‍‍*参考来源:Xathrya.id,FB小编老王隔壁的白帽子翻译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

  • 相关阅读:
    HDU4366 Successor 线段树+预处理
    POJ2823 Sliding Window 单调队列
    HDU寻找最大值 递推求连续区间
    UVA846 Steps 二分查找
    HDU3415 Max Sum of MaxKsubsequence 单调队列
    HDU时间挑战 树状数组
    UVA10168 Summation of Four Primes 哥德巴赫猜想
    UESTC我要长高 DP优化
    HDUChess 递推
    HDU4362 Dragon Ball DP+优化
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/6144528.html
Copyright © 2011-2022 走看看