我使用pcapy/impacket库来解码Python中的网络数据包。它有一个知道IPv4分组语法的IP解码器,但显然没有IPv6解码器。用于pcapy/impacket的IPv6解码器
有没有人得到一个?
在私人对应关系,在Impacket维护人员说,这可能是更好的开始Scapy
我使用pcapy/impacket库来解码Python中的网络数据包。它有一个知道IPv4分组语法的IP解码器,但显然没有IPv6解码器。用于pcapy/impacket的IPv6解码器
有没有人得到一个?
在私人对应关系,在Impacket维护人员说,这可能是更好的开始Scapy
我从来没有使用过pcapy,但我在C项目中使用libpcap的。由于pcapy页面指出它不是静态链接到libcap,所以你可以升级到一个新的IPv6支持。
根据libpcap changelog,2008年10月27日发布的版本1.0具有默认的IPv6支持(它应该有更长的IPv6,但现在默认使用该选项编译),所以您应该能够捕获IPv6与此版本的交通。最新的pcapy版本是从2007年3月27日开始的,所以最多它应该包含2007年9月10日发布的0.9.8版本的libcap。
我不知道这是否足够让你能够捕获IPv6流量,因为pcapy API可能需要一些更改才能支持它,这是在pcapy开发人员的屋顶上。
更新:显然pylibpcap,一个Python包装,以libpcap的,具有比pcapy新版本,所以新的libpcap的功能应该得到更好的支持。
关于PCAP(libpcap)的更多信息一般here。
我不是在说关于IPv6数据包的捕获*(libpcap长期以来的工作),而关于它们的解码。 libpcap不解码,你必须用低级C技巧自己做。 pcapy附带解码器。 – bortzmeyer 2008-12-21 21:00:18
由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.
您可以从
http://code.google.com/p/ipaddr-py/
即支持IPv4,IPv6的IP验证使用一个真正有用的一个文件库从谷歌,网络掩码和前缀管理等等。它有很好的编码和记录。
好运
埃米利奥
这可以通过`apt-get install python-ipaddr`在Ubuntu上完成 – 2013-05-30 20:16:05
看起来IPv6已被添加到反病毒软件:http://code.google.com/p/impacket/downloads/detail?name=impacket-0.9.9.9.tar.gz&can=2&q= – rupello 2012-11-25 11:11:20