拙网论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 161|回复: 0

使用wireshark抓取USB包

[复制链接]

949

主题

1001

帖子

3736

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3736
发表于 2020-4-1 14:12:03 | 显示全部楼层 |阅读模式

https://blog.csdn.net/shiailan/article/details/97305163

前段时间做项目时里面用到了usb,当时usb驱动不是我写的,项目开发过程中usb驱动出现了一些bug,但写驱动的那个同事又在忙别的,所以自己硬着头皮看了一些。网上搜了大量有关于usb的资料,同时看看usb驱动的代码,然而还是没看懂,bug也没解决(网上说usb驱动挺难得,现在看来确实是),后来bug还是写驱动的同事解决的。当时就想着有空了,一定要好好看一下usb驱动的代码。
现在项目也算告一段落了,所以就想着回头好好看看usb驱动。学习usb驱动,抓取usb包是比不可少的。网上查阅了发现抓取usb包的工具,主要有以下三个:Bus Hound,USBlyzer 和-USBTrace,我使用的是Bus hound和USBlyzer。关于这两个工具的使用我就不在这班门弄斧了,我今天想说的是wireshark这个工具。无意中发现wireshark也可以抓取usb数据包,而且列出来的信息也比较直观。
可能有些人的wireshark无法抓取usb包,那是因为你在安装的过程中都是一路默认下去的。所以如果想用wireshark抓取usb数据的话,可以考虑重新安装。
在这个步骤时选中USBcap,然后其他默认安装即可:

安装成功后,打开wireshark便会出现下面的USBcap接口:

双击USBcap就可以抓取usb的各种数据包了。
这是抓到的usb报文:

可以抓到电脑上所有usb设备的报文,如:usb鼠标、usb键盘等等
报文太多可以通过一些过滤条件,筛选出我们需要的报文。在过滤器中输入usb.addr==“1.5.0”,即可只显示我们想要的报文(因为我想保留的usb设备的地址是5,所以addr等于1.5.0,其中0表示端点0)。
(注:此处的过滤条件比网络的过滤条件多一个" ",网络过滤条件只需ip.addr==192.168.1.1即可)

下面便是过滤后的报文。可以看出每个所传输的数据,以及该字节所代表的意思(这样就不用hus bound抓到包后一个字节的和协议手册对照了),最下面的是整个包的内容。

(上图中的wLength:18,对应数据包中最好两个字节 12 00,数据包中都是16进制的)
————————————————
版权声明:本文为CSDN博主「石马不吃草」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/shiailan/java/article/details/97305163

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|抱朴守拙BBS

GMT+8, 2025-5-26 02:46 , Processed in 0.205608 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表