Add custom folder

This commit is contained in:
Lijantropique 2020-11-19 15:15:25 -05:00
parent 9bf5b64eba
commit d1521e849c
2 changed files with 19 additions and 3 deletions

View File

@ -170,7 +170,8 @@ AutoRecon uses Python 3 specific functionality and does not support Python 2.
``` ```
usage: autorecon [-h] [-t TARGET_FILE] [-ct <number>] [-cs <number>] usage: autorecon [-h] [-t TARGET_FILE] [-ct <number>] [-cs <number>]
[--profile PROFILE_NAME] [-o OUTPUT_DIR] [--single-target] [--profile PROFILE_NAME] [-o OUTPUT_DIR] [--single-target]
[--only-scans-dir] [--heartbeat HEARTBEAT] [--only-scans-dir] [--custom-dir CUSTOM_DIR]
[--heartbeat HEARTBEAT]
[--nmap NMAP | --nmap-append NMAP_APPEND] [-v] [--nmap NMAP | --nmap-append NMAP_APPEND] [-v]
[--disable-sanity-checks] [--disable-sanity-checks]
[targets [targets ...]] [targets [targets ...]]
@ -205,6 +206,9 @@ optional arguments:
--only-scans-dir Only create the "scans" directory for results. Other --only-scans-dir Only create the "scans" directory for results. Other
directories (e.g. exploit, loot, report) will not be directories (e.g. exploit, loot, report) will not be
created. Default: false created. Default: false
--custom-dir CUSTOM_DIR
Create a "custom" directory (in addition to scans, exploit,
loot & report)
--heartbeat HEARTBEAT --heartbeat HEARTBEAT
Specifies the heartbeat interval (in seconds) for task Specifies the heartbeat interval (in seconds) for task
status messages. Default: 60 status messages. Default: 60

View File

@ -39,6 +39,7 @@ username_wordlist = "/usr/share/seclists/Usernames/top-usernames-shortlist.txt"
password_wordlist = "/usr/share/seclists/Passwords/darkweb2017-top100.txt" password_wordlist = "/usr/share/seclists/Passwords/darkweb2017-top100.txt"
single_target = False single_target = False
only_scans_dir = False only_scans_dir = False
custom_dir = False
def _quit(): def _quit():
@ -632,7 +633,7 @@ async def scan_services(loop, semaphore, target):
pending.add(asyncio.ensure_future(run_cmd(semaphore, e(command), target, tag=tag, patterns=patterns))) pending.add(asyncio.ensure_future(run_cmd(semaphore, e(command), target, tag=tag, patterns=patterns)))
def scan_host(target, concurrent_scans, outdir): def scan_host(target, concurrent_scans, outdir, customdir):
start_time = time.time() start_time = time.time()
info('Scanning target {byellow}{target.address}{rst}') info('Scanning target {byellow}{target.address}{rst}')
@ -660,6 +661,10 @@ def scan_host(target, concurrent_scans, outdir):
screenshotdir = os.path.abspath(os.path.join(reportdir, 'screenshots')) screenshotdir = os.path.abspath(os.path.join(reportdir, 'screenshots'))
os.makedirs(screenshotdir, exist_ok=True) os.makedirs(screenshotdir, exist_ok=True)
if custom_dir:
cdir = os.path.abspath(os.path.join(basedir, customdir))
os.makedirs(cdir, exist_ok=True)
scandir = os.path.abspath(os.path.join(basedir, 'scans')) scandir = os.path.abspath(os.path.join(basedir, 'scans'))
target.scandir = scandir target.scandir = scandir
os.makedirs(scandir, exist_ok=True) os.makedirs(scandir, exist_ok=True)
@ -687,6 +692,7 @@ class Target:
self.address = address self.address = address
self.basedir = '' self.basedir = ''
self.reportdir = '' self.reportdir = ''
# self.customdir = ''
self.scandir = '' self.scandir = ''
self.scans = [] self.scans = []
self.lock = None self.lock = None
@ -697,6 +703,7 @@ class Target:
def main(): def main():
global single_target global single_target
global only_scans_dir global only_scans_dir
global custom_dir
global port_scan_profile global port_scan_profile
global heartbeat_interval global heartbeat_interval
global nmap global nmap
@ -713,6 +720,7 @@ def main():
parser.add_argument('-o', '--output', action='store', default='results', dest='output_dir', help='The output directory for results. Default: %(default)s') parser.add_argument('-o', '--output', action='store', default='results', dest='output_dir', help='The output directory for results. Default: %(default)s')
parser.add_argument('--single-target', action='store_true', default=False, help='Only scan a single target. A directory named after the target will not be created. Instead, the directory structure will be created within the output directory. Default: false') parser.add_argument('--single-target', action='store_true', default=False, help='Only scan a single target. A directory named after the target will not be created. Instead, the directory structure will be created within the output directory. Default: false')
parser.add_argument('--only-scans-dir', action='store_true', default=False, help='Only create the "scans" directory for results. Other directories (e.g. exploit, loot, report) will not be created. Default: false') parser.add_argument('--only-scans-dir', action='store_true', default=False, help='Only create the "scans" directory for results. Other directories (e.g. exploit, loot, report) will not be created. Default: false')
parser.add_argument('--custom-dir', action='store', dest='custom_dir', help='Create a "custom" directory (in addition to scans, exploit, loot & report)')
parser.add_argument('--heartbeat', action='store', type=int, default=60, help='Specifies the heartbeat interval (in seconds) for task status messages. Default: %(default)s') parser.add_argument('--heartbeat', action='store', type=int, default=60, help='Specifies the heartbeat interval (in seconds) for task status messages. Default: %(default)s')
nmap_group = parser.add_mutually_exclusive_group() nmap_group = parser.add_mutually_exclusive_group()
nmap_group.add_argument('--nmap', action='store', default='-vv --reason -Pn', help='Override the {nmap_extra} variable in scans. Default: %(default)s') nmap_group.add_argument('--nmap', action='store', default='-vv --reason -Pn', help='Override the {nmap_extra} variable in scans. Default: %(default)s')
@ -789,6 +797,10 @@ def main():
nmap += " " + args.nmap_append nmap += " " + args.nmap_append
outdir = args.output_dir outdir = args.output_dir
customdir = args.custom_dir
if customdir != None:
custom_dir = True
srvname = '' srvname = ''
verbose = args.verbose verbose = args.verbose
@ -861,7 +873,7 @@ def main():
for address in targets: for address in targets:
target = Target(address) target = Target(address)
futures.append(executor.submit(scan_host, target, concurrent_scans, outdir)) futures.append(executor.submit(scan_host, target, concurrent_scans, outdir, customdir))
try: try:
for future in as_completed(futures): for future in as_completed(futures):