Skip to content

Commit 50ff92f

Browse files
authored
New feature: Alterations
1 parent 4402dbd commit 50ff92f

File tree

1 file changed

+27
-15
lines changed

1 file changed

+27
-15
lines changed

dnscan.py

+27-15
Original file line numberDiff line numberDiff line change
@@ -303,12 +303,23 @@ def zone_transfer(domain, ns):
303303
pass
304304

305305
def add_target(domain):
306-
if '%%' in domain:
307-
for word in wordlist:
308-
queue.put(domain.replace(r'%%', word))
309-
else:
310-
for word in wordlist:
311-
queue.put(word + "." + domain)
306+
for word in wordlist:
307+
patterns = [word]
308+
if args.alt:
309+
probes = ["dev", "prod", "stg", "qa", "uat", "api", "alpha", "beta",
310+
"cms", "test", "internal", "staging", "origin", "stage", "m"]
311+
for probe in probes:
312+
patterns.append(probe + word)
313+
patterns.append(word + probe)
314+
patterns.append(probe + "-" + word)
315+
patterns.append(word + "-" + probe)
316+
for n in range(1, 10):
317+
patterns.append(word + str(n))
318+
for pattern in patterns:
319+
if '%%' in domain:
320+
queue.put(domain.replace(r'%%', pattern))
321+
else:
322+
queue.put(pattern + "." + domain)
312323

313324
def add_tlds(domain):
314325
for tld in wordlist:
@@ -324,19 +335,20 @@ def get_args():
324335
target.add_argument('-l', '--list', help='File containing list of target domains', dest='domain_list', required=False)
325336
parser.add_argument('-w', '--wordlist', help='Wordlist', dest='wordlist', required=False)
326337
parser.add_argument('-t', '--threads', help='Number of threads', dest='threads', required=False, type=int, default=8)
327-
parser.add_argument('-6', '--ipv6', help='Scan for AAAA records', action="store_true", dest='ipv6', required=False, default=False)
328-
parser.add_argument('-z', '--zonetransfer', action="store_true", default=False, help='Only perform zone transfers', dest='zonetransfer', required=False)
329-
parser.add_argument('-r', '--recursive', action="store_true", default=False, help="Recursively scan subdomains", dest='recurse', required=False)
338+
parser.add_argument('-6', '--ipv6', action="store_true", help='Scan for AAAA records', dest='ipv6')
339+
parser.add_argument('-z', '--zonetransfer', action="store_true", help='Only perform zone transfers', dest='zonetransfer')
340+
parser.add_argument('-r', '--recursive', action="store_true", help="Recursively scan subdomains", dest='recurse')
330341
parser.add_argument('-m', '--maxdepth', help='Maximal recursion depth (for brute-forcing)', dest='maxdepth', required=False, type=int, default=5)
342+
parser.add_argument('-a', '--alterations', action="store_true", help='Scan for alterations of subdomains', dest='alt')
331343
parser.add_argument('-R', '--resolver', help="Use the specified resolvers (separated by commas)", dest='resolvers', required=False)
332344
parser.add_argument('-L', '--resolver-list', help="File containing list of resolvers", dest='resolver_list', required=False)
333-
parser.add_argument('-T', '--tld', action="store_true", default=False, help="Scan for TLDs", dest='tld', required=False)
345+
parser.add_argument('-T', '--tld', action="store_true", help="Scan for TLDs", dest='tld')
334346
parser.add_argument('-o', '--output', help="Write output to a file", dest='output_filename', required=False)
335-
parser.add_argument('-i', '--output-ips', help="Write discovered IP addresses to a file", dest='output_ips', required=False)
336-
parser.add_argument('-D', '--domain-first', action="store_true", default=False, help='Output domain first, rather than IP address', dest='domain_first', required=False)
337-
parser.add_argument('-v', '--verbose', action="store_true", default=False, help='Verbose mode', dest='verbose', required=False)
338-
parser.add_argument('-n', '--nocheck', action="store_true", default=False, help='Don\'t check nameservers before scanning', dest='nocheck', required=False)
339-
parser.add_argument('-q', '--quick', action="store_true", default=False, help='Only perform zone transfer and subdomains scan, with minimal output to file', dest='quick', required=False)
347+
parser.add_argument('-i', '--output-ips', help="Write discovered IP addresses to a file", dest='output_ips', required=False)
348+
parser.add_argument('-D', '--domain-first', action="store_true", help='Output domain first, rather than IP address', dest='domain_first')
349+
parser.add_argument('-v', '--verbose', action="store_true", help='Verbose mode', dest='verbose')
350+
parser.add_argument('-n', '--nocheck', action="store_true", help='Don\'t check nameservers before scanning', dest='nocheck')
351+
parser.add_argument('-q', '--quick', action="store_true", help='Only perform zone transfer and subdomains scan, with minimal output to file', dest='quick')
340352
args = parser.parse_args()
341353

342354
def setup():

0 commit comments

Comments
 (0)