How to do it...

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 ...

Get Python Network Programming now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.