Python中的URL嗅探

5

有没有人知道如何用Python编写一个实时数据嗅探器,提取访问来源IP地址和完整的URL?我已经查看了从urlsnarf获取数据的方法,但是IPv6不受支持(连接将是IPv6主机)。

尽管我可以从tcpdump中获取数据并使用GET/POST进行筛选,但这只能给我留下Web服务器上的路径,而我将无法获取相关的FQDN。 不幸的是,由于环境的配置,不能使用SQUID w / IPv6 TPROXY。

是否有人有任何关于如何使用Python绑定libpcap来实现此目的的想法?您的帮助将不胜感激 :)

谢谢 :)


2
Scapy 应该有一些 IPv6 绑定。一旦您跨越了 IPv6 障碍,它只是解析 HTTP 标头的问题。这都在应用层中,因此 IPv6 不应影响发送的数据。 - krs1
可能相关:在Python Windows中进行数据包嗅探。 - Stephen Paulger
1个回答

2

不幸的是,使用IPv6时您需要自己进行TCP重组。好消息是您只需要关注 URL 数据,这些数据通常只有一到两个数据包。

您可以使用 pylibpcap 来完成此操作。您需要在 pcap 对象上使用 setfilter 来确保只查看 TCP 流量。随着 pcap 循环的进行,您将对有效载荷应用一些 HTTP 正则表达式。如果您有类似于 HTTP 流量的内容,请尝试解析标头以获取 URL 数据。希望您能在数据包结束之前获得完整的 URL 和换行符。如果没有,则需要进行轻量级的 TCP 重组。

哦,您还需要使用 socket.inet_ntop 和 socket.getaddrinfo 来打印有关 IPv6 主机的信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接