我知道以前有人问过这个问题,但我没有得到明确的答案。我正在尝试下载一个简单的 17GB .txt 文件,其中包含整个 IPv4 地址空间。网上一定有这样的文件。
完整的 IPv4 地址空间
数据挖掘
文本
2022-03-16 21:19:24
1个回答
您可以简单地自己生成它们。它们只是所有整数的简单表示,直到
您想要哪种格式的地址?有很多方法可以根据您的要求来表示它们,因为它们只是一组正常数字的表示:
- 标准点分隔,例如 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