用于pcapy / impacket的IPv6解码器

问题描述 投票:1回答:4

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

有没有人得到一个?

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

python ipv6 packet-capture impacket pcapy
4个回答
1
投票

由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.


1
投票

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


-1
投票

我之前从未使用过pcapy,但我确实在C项目中使用了libpcap。由于pcapy页面声明它与libcap没有静态链接,因此您可以升级到支持IPv6的较新版本。

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

我不知道这是否足以让你能够捕获IPv6流量,因为scapy API可能需要一些改变以支持它,而且这是在scapy开发人员的屋檐下。

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

有关PCAP(libpcap)的更多信息,一般here


-1
投票

您可以使用Google提供的非常有用的单文件库

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

它支持IPv4,IPv6,ip验证,网络掩码和前缀管理等。它编码良好且记录在案。

祝好运 埃米利奥

© www.soinside.com 2019 - 2024. All rights reserved.