【每周分享】对于不同的报文拷贝需求,Wireshark基本都能满足你
当我们通过Wireshark软件抓到需要的报文后有时候我们还需要将报文的相关内容拷贝出来用于其他用途比如发给别人、复制到专业报文分析软件或者复制到文档里面等等。这个时候Wireshark里面有一项比较强大的功能就可以用起来了就是可以以不同的方式进行报文拷贝以满足你不同的需求。下面我就以一条USB设备响应主机的设备描述符请求的报文为例向大家分享一下。我们打开报文在报文任意地方右键打开如下界面就可以看到拷贝之前我们所说的这个功能即可以以不同方式拷贝出我们需要的报文接下来我们逐一介绍和演示。1、“所有可见项目”这个功能就是拷贝当前你所能看到的报文内容比如当前显示如下操作此功能后效果是下面这样的相当于是看到什么拷贝什么2、“选中树的所有可见项目”这个功能就是拷贝当前你选中的树分支下面你所能看到的内容比如你需要拷贝树Endpoint下面的内容那就先要展开此树操作此功能后效果是下面这样的3、“描述”这个功能就是拷贝当前你选中的字段所显示的所有内容比如你需要拷贝URB transfer type字段的描述操作此功能后效果是下面这样的相当于字段内容全部拷贝4、“字段名称”这个功能其实蛮有意思的我也是最近才发现就是通过操作这个功能你可以知道你选中的字段的真正的名称是什么然后这个名称其实就是可以直接用于过滤器的名称比如你想知道Device address字段的实际名称操作此功能后效果是下面这样的是不是很像一种数据结构的调用造型在你的USB代码里面应该也是这么定义的在我们通过USB设备地址来设置过滤器的时候就是用的usb.device_address5、“值”这个功能是拷贝你所选中的字段的当前值比如**作了下面三个字段实际效果是下面这样的6、“作为过滤器”这个功能其实也是非常实用的有时候我们需要设置过滤器来查找报文但是我们又不知道不确定或者忘了该字段的实际名称是什么这个时候就可以试试这个功能比如我们想通过URB传输类型中断/控制/批量/同步传输来监控报文操作此功能后实际效果是下面这样的格式基本是字段名称 当前值你可以直接将usb.transfer_type 0x02粘贴到过滤器里面进行报文查找或者监控7、“将字节复制为十六进制ASCII转储”这个功能就是将整个报文按十六进制和ASCII方式拷贝出来我实际操作了整个报文得到的效果如下所示显然和报文数据是一模一样的造型8、“…as Hex Dump”Hex Dump其实就是十六进制转储的意思也就是是计算机数据的十六进制视图这种方式其实在MCU的可执行文件hex或bin里面比较常见的比如我们操作一下设备描述符的数据得到的实际效果是下面这样的每行固定16个字节比较适合脚本处理9、“…asPrintable Text”PrintableText直译是可打印的文本这个功能也没用过不知道怎么使用的我试了一下操作设备描述符数据得到的结果是下面这样的好奇怪后面搞清楚了再完善。然后我用UDP报文试了一下得到的效果是下面这样的查了一下资料貌似是直接复制文本内容的操作。10、“…as a Hex Stream”这个功能就是将报文数据以连续的无空格的十六进制数据拷贝出来还是以设备描述符为例实际效果是下面这样的这个功能也是很好用的特别是在针对USB报文进行USB设备的描述符分析的时候比如一款比较好用的免费的USB描述符在线分析工具需要输入的就是这种格式的数据然后会直接解析出结果另外如果你需要用上这些数据就可以将其输出结果直接拷贝到你的设备描述符数组代码里面高效可靠。在解析其他报文的时候应该也是非常有用的一个功能。11、“…as Raw Binary”此功能实际上是将数据包字节作为原始二进制文件复制到剪贴板数据使用MIME类型“application/octet stream”存储在剪贴板中适用于需要直接处理原始网络数据的场景。但**作了此功能粘贴时候啥也没有欺骗哦的感情也或许是我使用的方法不对吧12、“…as EscapedString”EscapedStrings是转义字符串的意思即将报文数据直接以转义字符串的格式输出操作了设备描述符的数据得到的实际效果如下所示以上通过实操介绍了Wireshark拷贝报文的常用功能有些功能应该是针对特定场景有用的等我以后遇到了再来补充。另外下面显示的报文数据默认是以每行16个字节的十六进制格式的我们也可以改成以每行8个字节的二进制数据来显示反正怎么说呢“会用工具”、“用好工具”是我们提高工作效率和更加快速排查问题定位问题的一种有效手段吧。。---------------------作者dffzh链接https://bbs.21ic.com/icview-3518903-1-1.html来源21ic.com此文章已获得原创/原创奖标签著作权归21ic所有任何人未经允许禁止转载。