Skip to content

Instantly share code, notes, and snippets.

@Will-Beninger
Created June 12, 2021 01:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Will-Beninger/53d45969e582dc9ce7022d4db4db1d90 to your computer and use it in GitHub Desktop.
Save Will-Beninger/53d45969e582dc9ce7022d4db4db1d90 to your computer and use it in GitHub Desktop.
Doing an extremely quick & dirty zone transfer python script
#!/usr/bin/python2
# Borrowing heavily from https://github.com/internetwache/Python-AXFR-Test
import argparse
import sys
import dns.resolver
import dns.query
import dns.zone
parser = argparse.ArgumentParser(description='Perform Zone Transfer')
parser.add_argument('-d', '--domain', type=str, nargs=1, help="Domain to zone transfer")
args = parser.parse_args()
domain = str(args.domain[0])
ns_query = dns.resolver.resolve(domain,'NS')
for ns in ns_query:
nameserver = str(ns)[:-1]
print("NS:",nameserver)
if nameserver is None or nameserver == "":
print(domain,"has no nameserver")
continue
ip = dns.resolver.resolve(nameserver,'A')
try:
zone = dns.zone.from_xfr(dns.query.xfr(ip[0].address, domain),)
if zone is None:
print(nameserver,"failed axfr")
continue
for name, node in zone.nodes.items():
rdatasets = node.rdatasets
for rdataset in rdatasets:
print(str(name),str(rdataset))
except Exception as e:
print(e)
continue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment