Last active
May 31, 2023 18:43
-
-
Save wido/af7811113a5d1a9a2fe6448954839d33 to your computer and use it in GitHub Desktop.
Generate a random IPv6 address
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
""" | |
Generate a random IPv6 address for a specified subnet | |
""" | |
from random import seed, getrandbits | |
from ipaddress import IPv6Network, IPv6Address | |
subnet = '2001:db8:100::/64' | |
seed() | |
network = IPv6Network(subnet) | |
address = IPv6Address(network.network_address + getrandbits(network.max_prefixlen - network.prefixlen)) | |
print(address) |
It would be very useful if this is modified to give X amount of IPv6 IPs? for example it would generate 1000 IPv6 IPs starting from the lowest range. or does such script already exist?
It would be very useful if this is modified to give X amount of IPv6 IPs? for example it would generate 1000 IPv6 IPs starting from the lowest range. or does such script already exist?
$ for ip in {1..1000}; do python random-ipv6-addr.py ; done
? not exactly what you asked for but you can work from there..
Here's a way to generate them a bit faster
from random import getrandbits
from socket import inet_ntop, AF_INET6
from struct import pack
def random_ipv6():
return inet_ntop(AF_INET6, pack('>QQ', getrandbits(64), getrandbits(64)))
for _ in range(400):
print(random_ipv6())
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I needed to write it like this to get it to work:
subnet = u'2001:db8:100::/64'
Can you create it to make 1 random IPv6 address from multiple different IPv6 subnets?