1717- Automated reporting and visualization
1818
1919Usage:
20+ python dns_recon.py example.com
2021 python dns_recon.py --domain example.com
2122 python dns_recon.py --ip 192.168.1.1
2223 python dns_recon.py --range 192.168.1.0/24
@@ -116,6 +117,11 @@ def save_results(results, output, domain=None, ip=None, ip_range=None, dns_serve
116117def parse_arguments ():
117118 """Parse command line arguments."""
118119 parser = argparse .ArgumentParser (description = "DNS Reconnaissance Tool" )
120+
121+ # Add a positional argument for domain
122+ parser .add_argument ("domain" , nargs = "?" , help = "Target domain (positional argument)" )
123+
124+ # Keep all the existing named arguments
119125 parser .add_argument ("--domain" , "-d" , help = "Target domain" )
120126 parser .add_argument ("--ip" , "-i" , help = "Target IP address for reverse lookup" )
121127 parser .add_argument ("--range" , "-r" , help = "IP range in CIDR notation (e.g., 192.168.1.0/24)" )
@@ -129,14 +135,19 @@ def parse_arguments():
129135
130136 args = parser .parse_args ()
131137
138+ # If positional domain is provided but --domain is not, use the positional one
139+ if args .domain and not args .domain :
140+ args .domain = args .domain
141+
132142 # Validate that at least one target is specified
133143 if not (args .domain or args .ip or args .range ):
134- parser .error ("At least one target (--domain, --ip, or --range) must be specified" )
144+ parser .error ("At least one target (domain, --domain, --ip, or --range) must be specified" )
135145
136146 return args
137147
138148# Main DNS class
139149class DNSRecon :
150+ # ... keep existing code (DNSRecon class definition, class methods)
140151 def __init__ (self , domain = None , ip = None , ip_range = None , dns_servers = None ,
141152 timeout = 5 , threads = 10 , verbose = False , output = None ,
142153 subdomains = None , history = False ):
@@ -593,8 +604,11 @@ def main():
593604 args = parse_arguments ()
594605
595606 try :
607+ # Determine the domain from either positional or named argument
608+ domain = args .domain
609+
596610 recon = DNSRecon (
597- domain = args . domain ,
611+ domain = domain ,
598612 ip = args .ip ,
599613 ip_range = args .range ,
600614 dns_servers = args .server ,
@@ -615,3 +629,4 @@ def main():
615629
616630if __name__ == "__main__" :
617631 main ()
632+
0 commit comments