/** * Author......: See docs/credits.txt * License.....: MIT */ #ifndef _USER_OPTIONS_H #define _USER_OPTIONS_H #include typedef enum user_options_defaults { ATTACK_MODE = ATTACK_MODE_STRAIGHT, BENCHMARK = false, BITMAP_MAX = 24, BITMAP_MIN = 16, DEBUG_MODE = 0, FORCE = false, GPU_TEMP_ABORT = 90, GPU_TEMP_DISABLE = false, GPU_TEMP_RETAIN = 75, HASH_MODE = 0, HEX_CHARSET = false, HEX_SALT = false, HEX_WORDLIST = false, INCREMENT = false, INCREMENT_MAX = PW_MAX, INCREMENT_MIN = 1, KERNEL_ACCEL = 0, KERNEL_LOOPS = 0, KEYSPACE = false, LEFT = false, LIMIT = 0, LOGFILE_DISABLE = false, LOOPBACK = false, MACHINE_READABLE = false, MARKOV_CLASSIC = false, MARKOV_DISABLE = false, MARKOV_THRESHOLD = 0, NVIDIA_SPIN_DAMP = 100, OPENCL_VECTOR_WIDTH = 0, OUTFILE_AUTOHEX = true, OUTFILE_CHECK_TIMER = 5, OUTFILE_FORMAT = 3, POTFILE_DISABLE = false, POWERTUNE_ENABLE = false, QUIET = false, REMOVE = false, REMOVE_TIMER = 60, RESTORE = false, RESTORE_DISABLE = false, RESTORE_TIMER = 60, RP_GEN = 0, RP_GEN_FUNC_MAX = 4, RP_GEN_FUNC_MIN = 1, RP_GEN_SEED = 0, RUNTIME = 0, SCRYPT_TMTO = 0, SEGMENT_SIZE = 33554432, SEPARATOR = ':', SHOW = false, SKIP = 0, STATUS = false, STATUS_TIMER = 10, STDOUT_FLAG = false, SPEED_ONLY = false, USAGE = false, USERNAME = false, VERSION = false, WEAK_HASH_THRESHOLD = 100, WORKLOAD_PROFILE = 2, } user_options_defaults_t; typedef enum user_options_map { IDX_ATTACK_MODE = 'a', IDX_BENCHMARK = 'b', IDX_BITMAP_MAX = 0xff00, IDX_BITMAP_MIN = 0xff01, IDX_CPU_AFFINITY = 0xff02, IDX_CUSTOM_CHARSET_1 = '1', IDX_CUSTOM_CHARSET_2 = '2', IDX_CUSTOM_CHARSET_3 = '3', IDX_CUSTOM_CHARSET_4 = '4', IDX_DEBUG_FILE = 0xff03, IDX_DEBUG_MODE = 0xff04, IDX_FORCE = 0xff05, IDX_GPU_TEMP_ABORT = 0xff06, IDX_GPU_TEMP_DISABLE = 0xff07, IDX_GPU_TEMP_RETAIN = 0xff08, IDX_HASH_MODE = 'm', IDX_HELP = 'h', IDX_HEX_CHARSET = 0xff09, IDX_HEX_SALT = 0xff0a, IDX_HEX_WORDLIST = 0xff0b, IDX_INCREMENT = 'i', IDX_INCREMENT_MAX = 0xff0c, IDX_INCREMENT_MIN = 0xff0d, IDX_INDUCTION_DIR = 0xff0e, IDX_KERNEL_ACCEL = 'n', IDX_KERNEL_LOOPS = 'u', IDX_KEYSPACE = 0xff0f, IDX_LEFT = 0xff10, IDX_LIMIT = 'l', IDX_LOGFILE_DISABLE = 0xff11, IDX_LOOPBACK = 0xff12, IDX_MACHINE_READABLE = 0xff13, IDX_MARKOV_CLASSIC = 0xff14, IDX_MARKOV_DISABLE = 0xff15, IDX_MARKOV_HCSTAT = 0xff16, IDX_MARKOV_THRESHOLD = 't', IDX_NVIDIA_SPIN_DAMP = 0xff17, IDX_OPENCL_DEVICES = 'd', IDX_OPENCL_DEVICE_TYPES = 'D', IDX_OPENCL_INFO = 'I', IDX_OPENCL_PLATFORMS = 0xff18, IDX_OPENCL_VECTOR_WIDTH = 0xff19, IDX_OUTFILE_AUTOHEX_DISABLE = 0xff1a, IDX_OUTFILE_CHECK_DIR = 0xff1b, IDX_OUTFILE_CHECK_TIMER = 0xff1c, IDX_OUTFILE_FORMAT = 0xff1d, IDX_OUTFILE = 'o', IDX_POTFILE_DISABLE = 0xff1e, IDX_POTFILE_PATH = 0xff1f, IDX_POWERTUNE_ENABLE = 0xff20, IDX_QUIET = 0xff21, IDX_REMOVE = 0xff22, IDX_REMOVE_TIMER = 0xff23, IDX_RESTORE = 0xff24, IDX_RESTORE_DISABLE = 0xff25, IDX_RP_FILE = 'r', IDX_RP_GEN_FUNC_MAX = 0xff26, IDX_RP_GEN_FUNC_MIN = 0xff27, IDX_RP_GEN = 'g', IDX_RP_GEN_SEED = 0xff28, IDX_RULE_BUF_L = 'j', IDX_RULE_BUF_R = 'k', IDX_RUNTIME = 0xff29, IDX_SCRYPT_TMTO = 0xff2a, IDX_SEGMENT_SIZE = 'c', IDX_SEPARATOR = 'p', IDX_SESSION = 0xff2b, IDX_SHOW = 0xff2c, IDX_SKIP = 's', IDX_STATUS = 0xff2d, IDX_STATUS_TIMER = 0xff2e, IDX_STDOUT_FLAG = 0xff2f, IDX_SPEED_ONLY = 0xff30, IDX_TRUECRYPT_KEYFILES = 0xff31, IDX_USERNAME = 0xff32, IDX_VERACRYPT_KEYFILES = 0xff33, IDX_VERACRYPT_PIM = 0xff34, IDX_VERSION_LOWER = 'v', IDX_VERSION = 'V', IDX_WEAK_HASH_THRESHOLD = 0xff35, IDX_WORKLOAD_PROFILE = 'w' } user_options_map_t; int user_options_init (hashcat_ctx_t *hashcat_ctx); void user_options_destroy (hashcat_ctx_t *hashcat_ctx); int user_options_getopt (hashcat_ctx_t *hashcat_ctx, int argc, char **argv); int user_options_sanity (hashcat_ctx_t *hashcat_ctx); void user_options_preprocess (hashcat_ctx_t *hashcat_ctx); void user_options_extra_init (hashcat_ctx_t *hashcat_ctx); void user_options_extra_destroy (hashcat_ctx_t *hashcat_ctx); u64 user_options_extra_amplifier (hashcat_ctx_t *hashcat_ctx); void user_options_logger (hashcat_ctx_t *hashcat_ctx); #endif // _USER_OPTIONS_H