1

我使用pcapy / impacket库在 Python 中解码网络数据包。它有一个 IP 解码器,它知道 IPv4 数据包的语法,但显然没有 IPv6 解码器。

有人得到吗?

Impacket维护人员在私人通信中表示,从 Scapy 开始可能会更好

4

4 回答 4

2

Impacket 维护者推荐的 Scapy 目前没有 IPv6 解码。但是有一个非官方的扩展来这样做。

使用此扩展程序,它可以工作:

for packet in traffic:
  if packet.type == ETH_P_IPV6 or packet.type == ETH_P_IP:
    ip = packet.payload
    if (ip.version == 4 and ip.proto == UDP_PROTO) or \
       (ip.version == 6 and ip.nh == UDP_PROTO):
        if ip.dport == DNS_PORT and ip.dst == ns:
            all_queries = all_queries + 1

但是对于大的痕迹来说它非常慢。所以,我可能不得不尝试 Impacket,甚至回到 C。

于 2008-12-22T15:21:28.103 回答
1

您可能想查看dpkt另一个数据包解析/构建库。它是由pypcap不同的 libpcap 包装器的作者编写的,但不难让它与 pcapy 一起工作,看看它是否比 Scapy 更快。

于 2009-07-02T21:15:57.567 回答
-1

我以前从未使用过 pcapy,但我确实在 C 项目中使用过 libpcap。正如 pcapy 页面所述,它没有静态链接到 libcap,因此您可以升级到支持 IPv6 的更新版本。

根据libpcap 更改日志,2008 年 10 月 27 日发布的 1.0 版具有默认 IPv6 支持(它应该具有更长的 IPv6,但现在默认使用该选项编译),因此您应该能够使用此选项捕获 IPv6 流量版本。最新的 pcapy 版本是从 2007 年 3 月 27 日开始的,所以它最多应该包括 2007 年 9 月 10 日发布的 0.9.8 版本的 libcap。

我不知道这是否足以让您能够捕获 IPv6 流量,因为 pcapy API 可能需要一些更改来支持它,而这在 pcapy 开发人员的屋顶上。

更新:显然pylibpcap是 libpcap 的 python 包装器,它的版本比 pcapy 更新,因此应该更好地支持更新的 libpcap 功能。

有关 PCAP (libpcap) 的更多信息,请点击此处

于 2008-12-21T12:05:34.380 回答
-1

您可以使用来自 google 的一个非常有用的单文件库

http://code.google.com/p/ipaddr-py/

支持 IPv4、IPv6、ip 验证、网络掩码和前缀管理等。它的编码和文档都很好。

祝你好运
埃米利奥

于 2009-06-27T19:43:23.427 回答