2

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

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

因为我更喜欢用 python 来实现它,我尝试了 scapy 的HTTP 扩展,但它似乎不起作用,因为我看到请求被解析了 3 次(我想知道这是否是由于使用了桥)而我我无法看到回复。

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

另一个小问题

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

4

3 回答 3

3

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

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

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

于 2013-07-16T10:25:12.570 回答
0

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

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

-s说写出整个数据包并保存-w。我假设您的 http 通过端口 80,但您可以制作任意复杂的过滤器表达式。确保接口是通向服务器的接口,以便您查看它发送和接收的内容以及流量如何到达您的网桥主机。

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

rdpcap("/tmp/file.pcap")
于 2013-07-12T14:12:03.507 回答
0

周围已经有一些值得尊敬的流量嗅探器,所以你可能不需要自己实现一个。Wireshark是最受欢迎的。它不仅允许您捕获流量,而且还有一些用于过滤和分析数据包的强大工具。

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

如果您有非常特定的需求或只是想学习新东西,pylibpcap是一个 Pythonlibpcap库接口,(几乎)所有流量捕获程序都在使用它。

UPD:修正了 URL 中的拼写错误pylibpcap

于 2013-07-12T14:28:24.290 回答