编辑“︁
USB
”︁(章节)
跳转到导航
跳转到搜索
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
=== 流量包是如何捕获的? === 首先我们从上面的数据包分析可以知道,这是个 <code>USB</code> 的流量包,我们可以先尝试分析一下 <code>USB</code> 的数据包是如何捕获的。 在开始前,我们先介绍一些 <code>USB</code> 的基础知识。 <code>USB</code> 有不同的规格,以下是使用 <code>USB</code> 的三种方式: <syntaxhighlight lang="shell">l USB UART l USB HID l USB Memory</syntaxhighlight> <code>UART</code> 或者 <code>Universal Asynchronous Receiver/Transmitter</code> 。这种方式下,设备只是简单的将 <code>USB</code> 用于接受和发射数据,除此之外就再没有其他通讯功能了。 <code>HID</code> 是人性化的接口。这一类通讯适用于交互式,有这种功能的设备有:键盘,鼠标,游戏手柄和数字显示设备。 最后是 <code>USB Memory</code> ,或者说是数据存储。 <code>External HDD</code> , <code>thumb drive/flash drive</code> 等都是这一类的。 其中使用的最广的不是 <code>USB HID</code> 就是 <code>USB Memory</code> 了。 每一个 <code>USB</code> 设备(尤其是 <code>HID</code> 或者 <code>Memory</code> )都有一个供应商 <code>ID(Vendor ID)</code> 和产品识别码<code>(Product Id)</code> 。 <code>Vendor ID</code> 是用来标记哪个厂商生产了这个 <code>USB</code> 设备。 <code>Product ID</code> 用来标记不同的产品,他并不是一个特殊的数字,当然最好不同。如下图: [[File:./figure/Product-ID.png|Product-ID]] 上图是我在虚拟机环境下连接在我电脑上的 <code>USB</code> 设备列表,通过 <code>lsusb</code> 查看命令。 例如说,我在 <code>VMware</code> 下有一个无线鼠标。它是属于 <code>HID</code> 设备。这个设备正常的运行,并且通过<code>lsusb</code> 这个命令查看所有 <code>USB</code> 设备,现在大家能找出哪一条是这个鼠标吗??没有错,就是第四个,就是下面这条: <syntaxhighlight lang="shell">Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse</syntaxhighlight> 其中,<code>ID 0e0f:0003</code> 就是 <code>Vendor-Product ID</code> 对, <code>Vendor ID</code> 的值是 <code>0e0f</code> ,并且 <code>Product ID</code> 的值是 <code>0003</code> 。 <code>Bus 002 Device 002</code> 代表 <code>usb</code> 设备正常连接,这点需要记下来。 我们用 <code>root</code> 权限运行 <code>Wireshark</code> 捕获 <code>USB</code> 数据流。但是通常来说我们不建议这么做。我们需要给用户足够的权限来获取 <code>Linux</code> 中的 <code>usb</code> 数据流。我们可以用 <code>udev</code> 来达到我们的目的。我们需要创建一个用户组 <code>usbmon</code> ,然后把我们的账户添加到这个组中。 <syntaxhighlight lang="shell">addgroup usbmon gpasswd -a $USER usbmon echo 'SUBSYSTEM=="usbmon", GROUP="usbmon", MODE="640"' > /etc/udev/rules.d/99-usbmon.rules</syntaxhighlight> 接下来,我们需要 <code>usbmon</code> 内核模块。如果该模块没有被加载,我们可以通过以下命令加载该模块: <syntaxhighlight lang="shell">modprobe usbmon</syntaxhighlight> 打开 <code>wireshark</code> ,你会看到 <code>usbmonX</code> 其中 <code>X</code> 代表数字。下图是我们本次的结果(我使用的是<code>root </code>): [[File:./figure/usbmon0.png|usbmon0]] 如果接口处于活跃状态或者有数据流经过的时候, <code>wireshark</code> 的界面就会把它以波形图的方式显示出来。那么,我们该选那个呢?没有错,就是我刚刚让大家记下来的,这个X的数字就是对应这 <code>USB Bus</code> 。在本文中是 <code>usbmon0</code> 。打开他就可以观察数据包了。 [[File:./figure/analysis-usbmon0.png|analysis-usbmon0]] 通过这些,我们可以了解到 <code>usb</code> 设备与主机之间的通信过程和工作原理,我们可以来对流量包进行分析了。 <span id="如何去分析一个usb流量包"></span>
摘要:
请注意,所有对gamedev的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Gamedev:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
不转换
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息