在我的测试案例中,我需要发送带有随机IPv6源地址和固定前缀的NA。 例如:如何使用Python(或Scapy)生成随机IPv6地址?
固定前缀2001 :: cafe:/ 64。地址的其余部分应该是随机的。
如何在Python或Scapy中实现?
在我的测试案例中,我需要发送带有随机IPv6源地址和固定前缀的NA。 例如:如何使用Python(或Scapy)生成随机IPv6地址?
固定前缀2001 :: cafe:/ 64。地址的其余部分应该是随机的。
如何在Python或Scapy中实现?
import random
M = 16**4
"2001:cafe:" + ":".join(("%x" % random.randint(0, M) for i in range(6)))
从问题中不确定您想要随机选择哪部分地址。我假设最后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类有许多有用的属性,例如网络的广播地址。
只是使用字符串格式化:
import random
random.seed()
print '2001::cafe:%x/64' % random.getrandbits(16)
Scapy的具有内置生成随机IPv6地址的功能。
source = RandIP6("2000::cafe:*:*")
print source
需要注意的是,如果它与zero's
胡闹了,你需要在Scapy的/ volatile.py的broncode行前加2线286
if n == 0:
ip.append("0")