30 lines
725 B
Python
30 lines
725 B
Python
import subprocess
|
|
|
|
def resolve_by_spf(domain):
|
|
output = subprocess.run(["nslookup", "-q=TXT", domain], capture_output=True)
|
|
lines = output.stdout.decode().split('\n')
|
|
|
|
result = []
|
|
|
|
for line in lines:
|
|
res = line.find('v=spf')
|
|
|
|
if res == -1:
|
|
continue
|
|
|
|
values = line[res:].split()
|
|
|
|
for val in values:
|
|
if val.startswith("include:"):
|
|
result += resolve_by_spf(val[8:].strip())
|
|
|
|
if val.startswith("ip4:"):
|
|
result.append(val[4:].strip())
|
|
|
|
return list(dict.fromkeys(result))
|
|
|
|
ips = resolve_by_spf("_spf.google.com")
|
|
|
|
with open('ips.txt', 'a') as out:
|
|
for ip in ips:
|
|
out.write(ip + '\n') |