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 O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.