完整的 IPv4 地址空间

数据挖掘 文本
2022-03-16 21:19:24

我知道以前有人问过这个问题,但我没有得到明确的答案。我正在尝试下载一个简单的 17GB .txt 文件,其中包含整个 IPv4 地址空间。网上一定有这样的文件。

1个回答

您可以简单地自己生成它们。它们只是所有整数的简单表示,直到232

您想要哪种格式的地址?有很多方法可以根据您的要求来表示它们,因为它们只是一组正常数字的表示:

  • 标准点分隔,例如 192.168.0.1
  • unsigned int32 : 例如 3548551264
  • 十六进制,点分十六进制,八进制字节

你可以像这样在 Python 中生成它们:

def generate_ips(): 
    """Generate all possible IPv4 addresses, on by one""" 
    for i in range(255): 
        for j in range(255):
            for k in range(255):
                for l in range(255):
                    yield "{0}.{1}.{2}.{3}".format(i, j, k, l)

您必须像这样循环生成器函数才能实际使用这些值:

for ip in generate_ips(): 
    print(ip) 

# output
0.0.0.0
0.0.0.1
0.0.0.2
0.0.0.3
0.0.0.4
0.0.0.5
0.0.0.6
0.0.0.7

我使用了一个生成器(使用yield关键字而不是将所有值保存在列表中),因为它一次只会给你一个,而不会消耗你提到的所有 Gb 内存!

如果出于某种原因要将所有值存储在列表中,可以更改函数以将每个 IP 地址附加到列表中,然后返回:

def generate_ips():
    """Return a list of all possible IPv4 addresses"""
    all_ips = []
    for i in range(255):
        for j in range(255):
            for k in range(255):
                for l in range(255):
                    ip = "{0}.{1}.{2}.{3}".format(i, j, k, l)
                    all_ips.append(ip)
    return all_ips