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

dee*_*sky 2 python string ipv6 scapy

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

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

如何在Python或Scapy中实现?

Gar*_*rwe 5

从问题中不确定您希望地址的哪些部分是随机的。我假设最后 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
Run Code Online (Sandbox Code Playgroud)

示例输出:

2001::cafe:c935
2001::cafe:c935/64
Run Code Online (Sandbox Code Playgroud)

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


Rug*_*rra 5

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