从tcpflow输出中提取有效负载

时间:2010-05-19 15:20:55

标签: shell http-headers packet-capture

Tcpflow输出一堆文件,其中许多是来自Web服务器的HTTP响应。在内部,它们包含HTTP标头,包括Content-type:和其他重要的标头。我正在尝试编写一个只能提取有效负载数据的脚本(即image / jpeg; text / html;等)并将其保存到文件中[可选:具有适当的名称和文件扩展名]。

EOL字符是\ r \ n(CRLF),因此很难在GNU发行版中使用(根据我的经验)。

我一直在尝试以下方面:

sed /HTTP/,/^$/d  

要删除从HTTP(incl)开头到\ r \ n \ r \ n(incl)末尾的所有文本,但我没有找到运气。我正在寻找sed和/或awk具有良好经验的人的帮助。我没有使用Perl的经验,请我更喜欢使用常见的GNU命令行实用程序

在此处查找示例tcpflow输出文件。(错误链接)

谢谢,
菲利普

1 个答案:

答案 0 :(得分:2)

This article建议在tcpflow的输出上运行foremost来提取图像。它可以在该链接和(至少)Debian,Fedora和Ubuntu的存储库中获得。

我在您链接到的示例文件上尝试了它,它似乎工作正常。

foremost -i tcpflow.out

它创建了一个名为“output”的目录,其子目录名为“gif”和“jpeg”,每个目录中都有文件。但是,文件的名称与标题中的文件名不匹配。

要更改文件的行结尾,请执行以下操作:

dos2unix filename

或在管道中:

dos2unix < filename | nextcommand

其他感兴趣的链接: