Skip to content

Instantly share code, notes, and snippets.

@vay3t
Forked from Will-Beninger/zonetransfer.py
Created August 4, 2023 18:25
Show Gist options
  • Save vay3t/815dde38b2ec69b1f78dc7fb3899c83f to your computer and use it in GitHub Desktop.
Save vay3t/815dde38b2ec69b1f78dc7fb3899c83f 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