5

有谁知道如何在 Python 中编写一个实时数据嗅探器来提取原始 IP 地址和正在访问的完整 URL?我已经查看了从 urlsnarf 中提取数据,但是不支持 IPv6(并且连接将指向 IPv6 主机)。

虽然我可以从 tcpdump 和 greping 获取数据以获取 GET/POST,但我只剩下网络服务器上的路径,而且我不会获得相关的 FQDN。不幸的是,由于环境的配置,使用带 IPv6 TPROXY 的 SQUID 不是一个选项。

有人对如何使用 Python 绑定 libpcap 有任何想法吗?您的帮助将不胜感激:)

谢谢 :)

4

1 回答 1

2

不幸的是,使用 IPv6 时,您会被困在自己的 TCP 重组中。好消息是您只关心应该(通常)在一两个数据包中的 URL 数据。

你应该能够使用 pylibpcap 来做到这一点。您需要在 pcap 对象上使用 setfilter 以确保您只查看 TCP 流量。随着您在 pcap 循环中前进,您将向有效负载应用一些 HTTP 正则表达式。如果您有看起来像 HTTP 的流量,请继续尝试解析标头以获取 URL 数据。希望您能在数据包结束前获得带有换行符的完整 URL。如果没有,您将不得不进行一些轻量级的 TCP 重组。

哦,你会想要使用 socket.inet_ntop 和 socket.getaddrinfo 打印出有关 IPv6 主机的信息。

于 2011-03-27T02:10:55.060 回答