用于pcapy/imp的IPv6解码器

2024-05-15 22:08:46 发布

您现在位置:Python中文网/ 问答频道 /正文

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

有人买吗?在

在一个私有对应中,Impacket维护者说从Scapy开始可能更好


Tags: ip网络语法维护者解码器解码数据包scapy
3条回答

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

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

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

Update:显然,libpcap的python包装器pylibpcap的版本比pcapy更新,因此应该更好地支持更新的libpcap特性。在

有关PCAP(libpcap)的一般信息here。在

Impacket维护人员推荐的Scapy目前没有IPv6解码。但是有一个unofficial extension可以这样做。在

通过这个扩展,它可以工作:

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

您可能需要查看^{},这是另一个包解析/构建库。它是由一个不同的libpcap包装器^{}的作者编写的,但是要让它与pcapy一起工作应该不会太困难,看看它是否比Scapy更快。在

相关问题 更多 >