如何转储http流量?

时间:2013-07-12 14:03:52

标签: python http scapy sniffing

我正在使用webservices,我需要转储所有HTTP请求和响应,以便我可以调试设备之间的互操作性。

我有一台带有3个nic桥接的小型电脑,因此它可以充当集线器,我可以点击流量。我正在寻找一种轻松转储H​​TTP流量的方法,以便我可以分析这两个设备交换的SOAP消息。

因为我更喜欢用python实现它,我尝试使用HTTP extension scapy,但它似乎不起作用,因为我看到请求解析了三次(我想知道这是否是由于使用一座桥梁),我无法看到答案。

有没有其他方法可以实现这样的工具?我更喜欢python,但它不是强制性的。

另一个小问题

我添加了一个子问题:通过使用我在前一个问题中链接的HTTP解释器,我发现有时我会得到只能被识别为HTTP而不是HTTPRequest或HTTPResponse的数据包。这些数据包看起来像是gzip,我认为它们与响应主体不适合单个数据包这一事实有关。有没有办法scapy将这些数据包合并在一起?我需要一种方法来获取消息的正文。同样,不仅仅是在python中,而且不仅仅是scapy。

3 个答案:

答案 0 :(得分:3)

我终于通过在管道中使用tshark并使用python脚本解析其输出来解决我的问题。大多数解码活动由以下命令执行

tshark -l -f "tcp port 80" -R "http.request or http.response " -i br0 -V

输出解码的HTTP数据包。我的脚本执行所有必要的操作。

答案 1 :(得分:0)

对于原始嗅探,我会使用tcpdump写入pcap文件。

tcpdump -i <interface> -s 65535 -w file.pcap  port 80

-s表示写出整个数据包,-w保存。我假设您的http超过端口80,但您可以制作任意复杂的过滤器表达式。确保该界面是通向服务器的界面,以便您了解其发送和接收的内容以及流量到达桥接主机的方式。

然后,您可以在闲暇时用scapy解析pcap,知道捕获是以经过良好测试,快速且可靠的方式进行的。

rdpcap("/tmp/file.pcap")

答案 2 :(得分:0)

已经有一些值得尊敬的交通嗅探器,所以你可能没有必要实施自己的嗅探器。 Wireshark是最受欢迎的。它不仅可以捕获流量,而且还有一些很好的工具来过滤和分析数据包。

sharktools允许您使用Python中的Wireshark数据包解析引擎,例如过滤数据包。

如果您有非常具体的需求或只是想学习新的东西,pylibpcaplibpcap库的Python接口,(几乎)每个流量捕获程序都使用它。

UPD :修复了pylibpcap的网址拼写错误。