我正在使用webservices,我需要转储所有HTTP请求和响应,以便我可以调试设备之间的互操作性。
我有一台带有3个nic桥接的小型电脑,因此它可以充当集线器,我可以点击流量。我正在寻找一种轻松转储HTTP流量的方法,以便我可以分析这两个设备交换的SOAP消息。
因为我更喜欢用python实现它,我尝试使用HTTP extension scapy,但它似乎不起作用,因为我看到请求解析了三次(我想知道这是否是由于使用一座桥梁),我无法看到答案。
有没有其他方法可以实现这样的工具?我更喜欢python,但它不是强制性的。
另一个小问题
我添加了一个子问题:通过使用我在前一个问题中链接的HTTP解释器,我发现有时我会得到只能被识别为HTTP而不是HTTPRequest或HTTPResponse的数据包。这些数据包看起来像是gzip,我认为它们与响应主体不适合单个数据包这一事实有关。有没有办法scapy将这些数据包合并在一起?我需要一种方法来获取消息的正文。同样,不仅仅是在python中,而且不仅仅是scapy。
答案 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数据包解析引擎,例如过滤数据包。
如果您有非常具体的需求或只是想学习新的东西,pylibpcap是libpcap
库的Python接口,(几乎)每个流量捕获程序都使用它。
UPD :修复了pylibpcap
的网址拼写错误。