SHA256
29 lines
1005 B
Python
Executable File
29 lines
1005 B
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import argparse
|
|
import dns.query
|
|
import re
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('--domain', help='Helps if all records to query are on the same domain.')
|
|
parser.add_argument('--nameservers', nargs='+', help='IPv4 or IPv6 address of nameserver(s) to be queried.')
|
|
parser.add_argument('--records', nargs='+', help='Hostname to query.')
|
|
args = parser.parse_args()
|
|
|
|
if args.domain:
|
|
for rec in args.records:
|
|
qname = dns.name.from_text(f'{rec}.{args.domain}')
|
|
q = dns.message.make_query(qname, dns.rdatatype.A)
|
|
for ns in args.nameservers:
|
|
r = dns.query.udp(q, ns)
|
|
x = re.findall(fr'{str(rec)}.*', str(r))
|
|
print(x, ns)
|
|
else:
|
|
for rec in args.records:
|
|
qname = dns.name.from_text(rec)
|
|
q = dns.message.make_query(qname, dns.rdatatype.A)
|
|
for ns in args.nameservers:
|
|
r = dns.query.udp(q, ns)
|
|
x = re.findall(fr'{str(rec)}.*', str(r))
|
|
print(x, ns)
|