We will use dnspython for the DNS zone transfer.
Listing 11.4 gives a simple code for a zone transfer as follows:
#!/usr/bin/env python # Python Network Programming Cookbook, Second Edition -- Chapter - 11 # This program is optimized for Python 2.7.12 and Python 3.5.2. # It may run on any other version with/without modifications. import argparse import dns.zone import dns.resolver import socket def main(address): soa_answer = dns.resolver.query(address, 'SOA') master_answer = dns.resolver.query(soa_answer[0].mname, 'A') try: z = dns.zone.from_xfr(dns.query. xfr(master_answer[0].address, address)) names = z.nodes.keys() names.sort() for n in names: print(z[n].to_text(n)) except socket.error as e: print('Failed to perform zone ...