@@ -98,7 +98,10 @@ def get_name(self, domain):
98
98
except NameError :
99
99
addresses .add (ipaddr (str (address )))
100
100
101
- if domain != target and args .recurse : # Don't scan root domain twice
101
+ if ( domain != target and \
102
+ args .recurse and \
103
+ domain .count ('.' ) - target .count ('.' ) <= args .maxdepth
104
+ ):
102
105
add_target (domain ) # Recursively scan subdomains
103
106
except :
104
107
pass
@@ -317,6 +320,7 @@ def get_args():
317
320
parser .add_argument ('-6' , '--ipv6' , help = 'Scan for AAAA records' , action = "store_true" , dest = 'ipv6' , required = False , default = False )
318
321
parser .add_argument ('-z' , '--zonetransfer' , action = "store_true" , default = False , help = 'Only perform zone transfers' , dest = 'zonetransfer' , required = False )
319
322
parser .add_argument ('-r' , '--recursive' , action = "store_true" , default = False , help = "Recursively scan subdomains" , dest = 'recurse' , required = False )
323
+ parser .add_argument ('-m' , '--maxdepth' , help = 'Maximal recursion depth (for brute-forcing)' , dest = 'maxdepth' , required = False , type = int , default = 5 )
320
324
parser .add_argument ('-R' , '--resolver' , help = "Use the specified resolver instead of the system default" , dest = 'resolver' , required = False )
321
325
parser .add_argument ('-T' , '--tld' , action = "store_true" , default = False , help = "Scan for TLDs" , dest = 'tld' , required = False )
322
326
parser .add_argument ('-o' , '--output' , help = "Write output to a file" , dest = 'output_filename' , required = False )
0 commit comments