没事总爱瞎琢磨
前言
有关 Wireshark 导出特定数据包的一个问题,这个问题实际上一两年前就已经注意到了,但一直也没细研究,直到上半年反馈给开发者社区,经沟通后才确认说是一个 Windows 版本上的 Bug 或者说是功能缺失。
注:该问题存在于 v4.2.4 及之前版本,v4.2.5 之后版本已修复。
问题
测试数据包如下,包括 TCP 三次握手以及 HTTP 传输数据包。
当使用显示过滤表达式 http
时,如下只过滤出 2 个数据包。
之后再通过 File
-> Export Specified Packets...
导出特定数据包时,你会发现 Displayed 显示过滤后的数据包数量为 9,并不是 2 ,当时就感觉是不是哪有 Bug 了。
但后来仔细分析了下数据包,实际上是因为 TCP 选项默认开启了 Allow subdissector to reassemble TCP streams
, 在关闭后可以显示出的 HTTP 数据包确实是 9 个。
所以即使是开启选项时,显示过滤 http
后的结果是 2 个,但导出特定数据包时依据的是上层应用协议数据包的真实数量,譬如 9 个。
想明白了这一些,因此当时也就并没有再继续深入研究,或者说以为就是这样的功能设计了。
修复
当再次想起这个问题的时候,也是碰到了另一个类似的数据包文件分析(另一种协议),同样的现象,转换到上面 HTTP 问题上,就是需求只要导出特定数据包 2 个,而不是 9 个。
琢磨了下,感觉部分场景确实需要该功能,所以向开发者社区反馈了该问题,经交流后才知道在当时的 Mac 版本(或者说更早以前版本)就已经有了该功能,而 Windows 版本该功能一直就缺失,有了一番讨论后确认在 Windows 系统 v4.2.5 版本上会进行修复,也就是说在 v4.2.4 及之前的版本都没有如下功能。
Windows v4.2.5
当使用显示过滤表达式 http
时,仍是仅过滤出 2 个数据包。
但通过 File
-> Export Specified Packets...
导出特定数据包时,虽然 Displayed 显示过滤后的数据包数量仍为 9,但是最下面已经多出来一个选项,提示包含依赖的数据包,数量 7 。
去除勾选后,Displayed 显示过滤后的数据包数量就变为了 2 ,需求达成,nice~
往期推荐
原文始发于微信公众号(Echo Reply):小记 Wireshark Bug 之导出特定数据包
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论