#!/bin/python3 import dns.resolver import dns.zone def dns_zone_xfer(address): ns_answer = dns.resolver.resolve(address, 'NS') for server in ns_answer: print("[*] Found NS: {}".format(server)) ip_answer = dns.resolver.resolve(server.target, 'A') for ip in ip_answer: print("[*] IP for {} is {}".format(server, ip)) try: zone = dns.zone.from_xfr(dns.query.xfr(str(ip), address)) hosts = zone.nodes.keys() # a node is a set of rdatasets for host in hosts: print(zone[host].to_text(host)) # convert a node to text format except dns.xfr.TransferError: print("[*] NS {} refused zone transfer !".format(server)) continue except dns.exception.FormError: print("No answer or RRset for {}".format(address)) continue #dns_zone_xfer('megacorpone.com') if __name__ == "__main__": import sys try: dns_zone_xfer(sys.argv[1]) except IndexError: print(f"{sys.argv[0]} demande un nom de domaine en argument")