WireShark在Windows上无法解码gzip压缩的http流量。

16

你们知道为什么WireShark在Windows上可能拒绝解码gzip压缩的http流量吗?

我的配置:

  • WireShark 1.8.3
  • Windows 7 Ultimate x64
  • WinPcap 4.1.2

选项“未压缩的实体正文”在首选项 / 协议 / HTTP中被选中。

这是我的“跟随TCP流”对话框的样子:

enter image description here

当我打开这个对话框时,下面的单选按钮最初设置为“原始”,但是当我点击“ASCII”时,没有任何变化。

有什么想法吗?

3个回答

24

如果你查看“基于行的文本数据”条目下的协议树,你会看到未压缩的数据。"Follow TCP Stream"对话框只显示TCP负载内容,不会将其解释为HTTP或gzipped数据或其他任何内容。对话框上的按钮允许你设置流字节的显示格式。

你可以右键点击未压缩的数据(见下面的红色#)并选择“导出选定的数据包字节...”来保存到文件。

enter image description here


谢谢!不幸的是,我不确定你指的是什么。在用户界面中我找不到“基于行的文本数据”。你能否详细说明一下或者提供截图? - expert
在列出所有协议的数据包详细信息窗格中,"超文本传输协议"条目下方将有一个名为"基于行的文本数据"的项目。在十六进制字节窗格中,还将显示数据的完整十六进制和ASCII转储,其中包括"未压缩实体正文"。此外,还有一个长期存在的增强请求,位于https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=3528,以使跟踪TCP流对话框显示未压缩的数据。 - Graham Bloice
1
这真是太不幸了。我会查看源代码。也许我可以实现它。 - expert
1
在答案中添加了一个屏幕截图。 - rupello
1
@GrahamBloice 错误编号3528已被解决并修正。 - rofrol

5

现在Wireshark内部支持此功能。只需右键点击标识为HTTP的数据包(协议列= HTTP),然后选择“跟踪”和“HTTP流”。这将把压缩的响应解码为纯文本。


1
看起来只有在网站使用HTTP 1时才会解码gzip。如果网站使用HTTP 2(例如使用Cloudflare的网站),gzip不会被解码,而跟随“HTTP steam”的选项也会变灰。有什么办法可以让它工作吗? - baptx

4

在目前的Wireshark中,被接受的答案是正确的答案,但在我看来使用起来相当笨拙。

因此我编写了一个小脚本wireshark-http-gunzip(需要Ruby)将整个输出转换为预期格式。希望任何偶然发现这里的人会发现它有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接