我使用pcapy / impacket库来解码Python中的网络数据包。它有一个IP解码器,它知道IPv4数据包的语法,但显然没有IPv6解码器。
有人得到一个吗?
在私人通讯中,Impacket维护人员说最好从Scapy开始
答案 0 :(得分: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 :(得分:1)
答案 2 :(得分:-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流量,因为pcapy API可能需要一些更改来支持它,而且这是在pcapy开发人员的屋顶上。
更新:显然pylibpcap是libpcap的python包装器,它有比pcapy更新的版本,因此应该更好地支持更新的libpcap功能。
关于PCAP(libpcap)的更多信息here。
答案 3 :(得分:-1)
您可以使用Google提供的非常实用的单文件库
http://code.google.com/p/ipaddr-py/
支持IPv4,IPv6,ip验证,网络掩码和前缀管理等。它编码良好且有文档记录。
祝你好运 埃米利奥