如何使用Python(或Scapy)生成随机IPv6地址?

如何使用Python(或Scapy)生成随机IPv6地址?,python,string,ipv6,scapy,Python,String,Ipv6,Scapy,在我的测试用例中,我需要发送带有随机IPv6源地址和固定前缀的NA。 例如: 固定前缀2001::cafe:/64。地址的其余部分应该是随机的 如何在Python或Scapy中实现?从问题中不确定地址的哪些部分是随机的。我假设最后2个字节 使用python库: 样本输出: 2001::cafe:c935 2001::cafe:c935/64 与简单的字符串格式相比,它的优点是可以轻松自定义起始地址、随机位len。NetAddress类还有许多有用的属性,例如网络的广播地址 仅使用字符串格式:

在我的测试用例中,我需要发送带有随机IPv6源地址和固定前缀的NA。 例如:

固定前缀2001::cafe:/64。地址的其余部分应该是随机的


如何在Python或Scapy中实现?

从问题中不确定地址的哪些部分是随机的。我假设最后2个字节

使用python库:

样本输出:

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

与简单的字符串格式相比,它的优点是可以轻松自定义起始地址、随机位len。NetAddress类还有许多有用的属性,例如网络的广播地址

仅使用字符串格式:

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

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

Scapy内置了一个生成随机ipv6地址的功能

source = RandIP6("2000::cafe:*:*")
print source
请注意,如果它与
zero的
混淆,则需要在scapy/volatile.py的broncode中第286行之前添加2行

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