예제 #1
0
def main():
    main_parser = argparse.ArgumentParser(description=banner(), formatter_class=argparse.RawTextHelpFormatter, usage=argparse.SUPPRESS)
    main_parser._optionals.title = 'Optional Arguments\n\033[1;30m>>-------------------->\033[1;m'
    main_parser.add_argument('-D', '--debug', dest="debug", action='store_true', help='Show debug messages & failed login attempts')
    main_parser.add_argument('-T', dest='max_threads', type=int, default=75, help='Max number of threads to use')
    main_parser.add_argument('--host-max', dest='max_host_threads', type=int, default=20, help='Max threads per host')
    main_parser.add_argument('-W', dest='workspace', type=str, default='', required=False, help='Manually set workspace, otherwise defaults to config file')
    sub_parser = main_parser.add_subparsers(title=' \nOperational Modes\n\033[1;30m>>-------------------->\033[1;m', dest='mode')

    db_args(sub_parser)
    enum_args(sub_parser)
    shell_args(sub_parser)
    spray_args(sub_parser)
    query_args(sub_parser)
    args = main_parser.parse_args()
    if len(argv) <= 2: main_parser.print_help();exit(1)

    if args.debug:
        log_level = logging.DEBUG
    else:
        log_level = logging.INFO

    # Init console logger
    loggers = {}
    loggers['console'] = setup_logger(log_level, 'ar3')

    # First checks & load config
    first_run_check(loggers['console'])
    config_obj = ConfigLoader()
    if not args.workspace:
        setattr(args, 'workspace', config_obj.WORKSPACE)
    first_workspace_check(args.workspace, loggers['console'])

    # Setup file logger
    loggers[args.mode] = setup_file_logger(args.workspace, args.mode)
    # Setup secondary loggers - use argv since arg_mods haven't been made yet
    if '--spider' in argv:
        loggers['spider'] = setup_file_logger(args.workspace, "spider")
    if '--gen-relay-list' in argv:
        loggers['relay_list'] = setup_file_logger(args.workspace, "relay_list")

    # Setup DB
    db_obj = Ar3db(args.workspace, loggers['console'], args.debug)

    try:
        # Start
        args = eval("{}_arg_mods(args, db_obj, loggers)".format(args.mode))
        if args.debug: print_args(args, loggers['console'])

        ops = import_module("ar3.ops.{}".format(args.mode))
        ops.main(args, config_obj, db_obj, loggers)

    except KeyboardInterrupt:
        print("\n[!] Key Event Detected, Closing...")
        exit(0)
    except Exception as e:
        print("[!] ActiveReign Error: {}".format(str(e)))
예제 #2
0
def main():
    logger = setup_logger(logging.INFO, 'ar3')
    shell(logger)