2011-10-05 459 views

回答

5
import random 
M = 16**4 
"2001:cafe:" + ":".join(("%x" % random.randint(0, M) for i in range(6))) 
4

从问题中不确定您想要随机选择哪部分地址。我假设最后2个字节。

使用Python netaddr库:

import random 
from netaddr.ip import IPNetwork, IPAddress 

random.seed() 
ip_a = IPAddress('2001::cafe:0') + random.getrandbits(16) 
ip_n = IPNetwork(ip_a) 
ip_n.prefixlen = 64 

print ip_a 
print ip_n 

输出示例:

2001::cafe:c935 
2001::cafe:c935/64 

在简单的字符串格式化的优点,就是它会很容易定制的起始地址,随机比特LEN。而且netaddr类有许多有用的属性,例如网络的广播地址。

0

只是使用字符串格式化:

import random 

random.seed() 
print '2001::cafe:%x/64' % random.getrandbits(16) 
0

Scapy的具有内置生成随机IPv6地址的功能。

source = RandIP6("2000::cafe:*:*") 
print source 

需要注意的是,如果它与zero's胡闹了,你需要在Scapy的/ volatile.py的broncode行前加2线286

if n == 0: 
     ip.append("0")