From bc1a101d2bbe367918f35db16b03ab4f529dfc93 Mon Sep 17 00:00:00 2001 From: philsmd Date: Wed, 16 Aug 2017 12:07:14 +0200 Subject: [PATCH] fixes #1321: new option --wordlist-autohex-disable --- docs/changes.txt | 1 + extra/tab_completion/hashcat.sh | 2 +- include/types.h | 189 ++++++++++++++++---------------- src/usage.c | 183 ++++++++++++++++--------------- src/user_options.c | 4 + src/wordlist.c | 9 +- 6 files changed, 200 insertions(+), 188 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 85ac4a55d..af55ce321 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -14,6 +14,7 @@ - Added option --length-limit-disable to disable optimization based on password- and salt-length - Added self-test functionality for OpenCL kernels on startup - Added option --self-test-disable to disable self-test functionality on startup +- Added option --wordlist-autohex-disable to disable the automatical conversion of $HEX[] words from the word list ## ## Bugs diff --git a/extra/tab_completion/hashcat.sh b/extra/tab_completion/hashcat.sh index 981fec78a..96d654e81 100644 --- a/extra/tab_completion/hashcat.sh +++ b/extra/tab_completion/hashcat.sh @@ -189,7 +189,7 @@ _hashcat () local BUILD_IN_CHARSETS='?l ?u ?d ?a ?b ?s ?h ?H' local SHORT_OPTS="-m -a -V -v -h -b -t -o -p -c -d -w -n -u -j -k -r -g -1 -2 -3 -4 -i -I -s -l -O" - local LONG_OPTS="--hash-type --attack-mode --version --help --quiet --benchmark --hex-salt --hex-wordlist --hex-charset --force --status --status-timer --machine-readable --loopback --weak-hash-threshold --markov-hcstat --markov-disable --markov-classic --markov-threshold --runtime --session --speed-only --progress-only --restore --restore-file-path --restore-disable --outfile --outfile-format --outfile-autohex-disable --outfile-check-timer --outfile-check-dir --separator --show --left --username --remove --remove-timer --potfile-disable --potfile-path --debug-mode --debug-file --induction-dir --segment-size --bitmap-min --bitmap-max --cpu-affinity --opencl-info --opencl-devices --opencl-platforms --opencl-device-types --opencl-vector-width --workload-profile --kernel-accel --kernel-loops --nvidia-spin-damp --gpu-temp-disable --gpu-temp-abort --gpu-temp-retain --powertune-enable --skip --limit --keyspace --rule-left --rule-right --rules-file --generate-rules --generate-rules-func-min --generate-rules-func-max --generate-rules-seed --custom-charset1 --custom-charset2 --custom-charset3 --custom-charset4 --increment --increment-min --increment-max --logfile-disable --scrypt-tmto --truecrypt-keyfiles --stdout --keep-guessing --hccapx-message-pair --nonce-error-corrections --encoding-from --encoding-to --optimized-kernel-enable --self-test-disable" + local LONG_OPTS="--hash-type --attack-mode --version --help --quiet --benchmark --hex-salt --hex-wordlist --hex-charset --force --status --status-timer --machine-readable --loopback --weak-hash-threshold --markov-hcstat --markov-disable --markov-classic --markov-threshold --runtime --session --speed-only --progress-only --restore --restore-file-path --restore-disable --outfile --outfile-format --outfile-autohex-disable --outfile-check-timer --outfile-check-dir --wordlist-autohex-disable --separator --show --left --username --remove --remove-timer --potfile-disable --potfile-path --debug-mode --debug-file --induction-dir --segment-size --bitmap-min --bitmap-max --cpu-affinity --opencl-info --opencl-devices --opencl-platforms --opencl-device-types --opencl-vector-width --workload-profile --kernel-accel --kernel-loops --nvidia-spin-damp --gpu-temp-disable --gpu-temp-abort --gpu-temp-retain --powertune-enable --skip --limit --keyspace --rule-left --rule-right --rules-file --generate-rules --generate-rules-func-min --generate-rules-func-max --generate-rules-seed --custom-charset1 --custom-charset2 --custom-charset3 --custom-charset4 --increment --increment-min --increment-max --logfile-disable --scrypt-tmto --truecrypt-keyfiles --stdout --keep-guessing --hccapx-message-pair --nonce-error-corrections --encoding-from --encoding-to --optimized-kernel-enable --self-test-disable" local OPTIONS="-m -a -t -o -p -c -d -w -n -u -j -k -r -g -1 -2 -3 -4 -s -l --hash-type --attack-mode --status-timer --weak-hash-threshold --markov-hcstat --markov-threshold --runtime --session --timer --outfile --outfile-format --outfile-check-timer --outfile-check-dir --separator --remove-timer --potfile-path --restore-file-path --debug-mode --debug-file --induction-dir --segment-size --bitmap-min --bitmap-max --cpu-affinity --opencl-devices --opencl-platforms --opencl-device-types --opencl-vector-width --workload-profile --kernel-accel --kernel-loops --nvidia-spin-damp --gpu-temp-abort --gpu-temp-retain -disable --skip --limit --rule-left --rule-right --rules-file --generate-rules --generate-rules-func-min --generate-rules-func-max --generate-rules-seed --custom-charset1 --custom-charset2 --custom-charset3 --custom-charset4 --increment-min --increment-max --scrypt-tmto --truecrypt-keyfiles --hccapx-message-pair --nonce-error-corrections --encoding-from --encoding-to --optimized-kernel-enable --self-test-disable" COMPREPLY=() diff --git a/include/types.h b/include/types.h index 36a83a073..f49c910e1 100644 --- a/include/types.h +++ b/include/types.h @@ -509,72 +509,73 @@ typedef enum progress_mode typedef enum user_options_defaults { - ADVICE_DISABLE = false, - 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, - HCCAPX_MESSAGE_PAIR = 0, - HEX_CHARSET = false, - HEX_SALT = false, - HEX_WORDLIST = false, - INCREMENT = false, - INCREMENT_MAX = PW_MAX, - INCREMENT_MIN = 1, - KEEP_GUESSING = false, - 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, - NONCE_ERROR_CORRECTIONS = 8, - NVIDIA_SPIN_DAMP = 100, - OPENCL_VECTOR_WIDTH = 0, - OPTIMIZED_KERNEL_ENABLE = false, - 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, - SELF_TEST_DISABLE = false, - SEGMENT_SIZE = 33554432, - SEPARATOR = ':', - SHOW = false, - SKIP = 0, - STATUS = false, - STATUS_TIMER = 10, - STDOUT_FLAG = false, - SPEED_ONLY = false, - PROGRESS_ONLY = false, - USAGE = false, - USERNAME = false, - VERSION = false, - WEAK_HASH_THRESHOLD = 100, - WORKLOAD_PROFILE = 2, + ADVICE_DISABLE = false, + 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, + HCCAPX_MESSAGE_PAIR = 0, + HEX_CHARSET = false, + HEX_SALT = false, + HEX_WORDLIST = false, + INCREMENT = false, + INCREMENT_MAX = PW_MAX, + INCREMENT_MIN = 1, + KEEP_GUESSING = false, + 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, + NONCE_ERROR_CORRECTIONS = 8, + NVIDIA_SPIN_DAMP = 100, + OPENCL_VECTOR_WIDTH = 0, + OPTIMIZED_KERNEL_ENABLE = false, + OUTFILE_AUTOHEX = true, + OUTFILE_CHECK_TIMER = 5, + OUTFILE_FORMAT = 3, + WORDLIST_AUTOHEX_DISABLE = false, + 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, + SELF_TEST_DISABLE = false, + SEGMENT_SIZE = 33554432, + SEPARATOR = ':', + SHOW = false, + SKIP = 0, + STATUS = false, + STATUS_TIMER = 10, + STDOUT_FLAG = false, + SPEED_ONLY = false, + PROGRESS_ONLY = false, + USAGE = false, + USERNAME = false, + VERSION = false, + WEAK_HASH_THRESHOLD = 100, + WORKLOAD_PROFILE = 2, } user_options_defaults_t; @@ -634,42 +635,43 @@ typedef enum user_options_map IDX_OUTFILE_CHECK_TIMER = 0xff22, IDX_OUTFILE_FORMAT = 0xff23, IDX_OUTFILE = 'o', - IDX_POTFILE_DISABLE = 0xff24, - IDX_POTFILE_PATH = 0xff25, - IDX_POWERTUNE_ENABLE = 0xff26, - IDX_QUIET = 0xff27, - IDX_REMOVE = 0xff28, - IDX_REMOVE_TIMER = 0xff29, - IDX_RESTORE = 0xff2a, - IDX_RESTORE_DISABLE = 0xff2b, - IDX_RESTORE_FILE_PATH = 0xff2c, + IDX_WORDLIST_AUTOHEX_DISABLE = 0xff24, + IDX_POTFILE_DISABLE = 0xff25, + IDX_POTFILE_PATH = 0xff26, + IDX_POWERTUNE_ENABLE = 0xff27, + IDX_QUIET = 0xff28, + IDX_REMOVE = 0xff29, + IDX_REMOVE_TIMER = 0xff2a, + IDX_RESTORE = 0xff2b, + IDX_RESTORE_DISABLE = 0xff2c, + IDX_RESTORE_FILE_PATH = 0xff2d, IDX_RP_FILE = 'r', - IDX_RP_GEN_FUNC_MAX = 0xff2d, - IDX_RP_GEN_FUNC_MIN = 0xff2e, + IDX_RP_GEN_FUNC_MAX = 0xff2e, + IDX_RP_GEN_FUNC_MIN = 0xff2f, IDX_RP_GEN = 'g', - IDX_RP_GEN_SEED = 0xff2f, + IDX_RP_GEN_SEED = 0xff30, IDX_RULE_BUF_L = 'j', IDX_RULE_BUF_R = 'k', - IDX_RUNTIME = 0xff30, - IDX_SCRYPT_TMTO = 0xff31, - IDX_SELF_TEST_DISABLE = 0xff32, + IDX_RUNTIME = 0xff31, + IDX_SCRYPT_TMTO = 0xff32, + IDX_SELF_TEST_DISABLE = 0xff33, IDX_SEGMENT_SIZE = 'c', IDX_SEPARATOR = 'p', - IDX_SESSION = 0xff33, - IDX_SHOW = 0xff34, + IDX_SESSION = 0xff34, + IDX_SHOW = 0xff35, IDX_SKIP = 's', - IDX_STATUS = 0xff35, - IDX_STATUS_TIMER = 0xff36, - IDX_STDOUT_FLAG = 0xff37, - IDX_SPEED_ONLY = 0xff38, - IDX_PROGRESS_ONLY = 0xff39, - IDX_TRUECRYPT_KEYFILES = 0xff3a, - IDX_USERNAME = 0xff3b, - IDX_VERACRYPT_KEYFILES = 0xff3c, - IDX_VERACRYPT_PIM = 0xff3d, + IDX_STATUS = 0xff36, + IDX_STATUS_TIMER = 0xff37, + IDX_STDOUT_FLAG = 0xff38, + IDX_SPEED_ONLY = 0xff39, + IDX_PROGRESS_ONLY = 0xff3a, + IDX_TRUECRYPT_KEYFILES = 0xff3b, + IDX_USERNAME = 0xff3c, + IDX_VERACRYPT_KEYFILES = 0xff3d, + IDX_VERACRYPT_PIM = 0xff3e, IDX_VERSION_LOWER = 'v', IDX_VERSION = 'V', - IDX_WEAK_HASH_THRESHOLD = 0xff3e, + IDX_WEAK_HASH_THRESHOLD = 0xff3f, IDX_WORKLOAD_PROFILE = 'w' } user_options_map_t; @@ -1470,6 +1472,7 @@ typedef struct user_options bool opencl_info; bool optimized_kernel_enable; bool outfile_autohex; + bool wordlist_autohex_disable; bool potfile_disable; bool powertune_enable; bool quiet; diff --git a/src/usage.c b/src/usage.c index a08cace09..0265d7e50 100644 --- a/src/usage.c +++ b/src/usage.c @@ -24,97 +24,98 @@ static const char *USAGE_BIG[] = "", "- [ Options ] -", "", - " Options Short / Long | Type | Description | Example", - "===============================+======+======================================================+=======================", - " -m, --hash-type | Num | Hash-type, see references below | -m 1000", - " -a, --attack-mode | Num | Attack-mode, see references below | -a 3", - " -V, --version | | Print version |", - " -h, --help | | Print help |", - " --quiet | | Suppress output |", - " --hex-charset | | Assume charset is given in hex |", - " --hex-salt | | Assume salt is given in hex |", - " --hex-wordlist | | Assume words in wordlist are given in hex |", - " --force | | Ignore warnings |", - " --status | | Enable automatic update of the status screen |", - " --status-timer | Num | Sets seconds between status screen updates to X | --status-timer=1", - " --machine-readable | | Display the status view in a machine-readable format |", - " --keep-guessing | | Keep guessing the hash after it has been cracked |", - " --self-test-disable | | Disable self-test functionality on startup |", - " --loopback | | Add new plains to induct directory |", - " --weak-hash-threshold | Num | Threshold X when to stop checking for weak hashes | --weak=0", - " --markov-hcstat | File | Specify hcstat file to use | --markov-hc=my.hcstat", - " --markov-disable | | Disables markov-chains, emulates classic brute-force |", - " --markov-classic | | Enables classic markov-chains, no per-position |", - " -t, --markov-threshold | Num | Threshold X when to stop accepting new markov-chains | -t 50", - " --runtime | Num | Abort session after X seconds of runtime | --runtime=10", - " --session | Str | Define specific session name | --session=mysession", - " --restore | | Restore session from --session |", - " --restore-disable | | Do not write restore file |", - " --restore-file-path | File | Specific path to restore file | --restore-file-path=my.restore", - " -o, --outfile | File | Define outfile for recovered hash | -o outfile.txt", - " --outfile-format | Num | Define outfile-format X for recovered hash | --outfile-format=7", - " --outfile-autohex-disable | | Disable the use of $HEX[] in output plains |", - " --outfile-check-timer | Num | Sets seconds between outfile checks to X | --outfile-check=30", - " -p, --separator | Char | Separator char for hashlists and outfile | -p :", - " --stdout | | Do not crack a hash, instead print candidates only |", - " --show | | Compare hashlist with potfile; show cracked hashes |", - " --left | | Compare hashlist with potfile; show uncracked hashes |", - " --username | | Enable ignoring of usernames in hashfile |", - " --remove | | Enable removal of hashes once they are cracked |", - " --remove-timer | Num | Update input hash file each X seconds | --remove-timer=30", - " --potfile-disable | | Do not write potfile |", - " --potfile-path | Dir | Specific path to potfile | --potfile-path=my.pot", - " --encoding-from | Code | Force internal wordlist encoding from X | --encoding-from=iso-8859-15", - " --encoding-to | Code | Force internal wordlist encoding to X | --encoding-to=utf-32le", - " --debug-mode | Num | Defines the debug mode (hybrid only by using rules) | --debug-mode=4", - " --debug-file | File | Output file for debugging rules | --debug-file=good.log", - " --induction-dir | Dir | Specify the induction directory to use for loopback | --induction=inducts", - " --outfile-check-dir | Dir | Specify the outfile directory to monitor for plains | --outfile-check-dir=x", - " --logfile-disable | | Disable the logfile |", - " --hccapx-message-pair | Num | Load only message pairs from hccapx matching X | --hccapx-message-pair=2", - " --nonce-error-corrections | Num | The BF size range to replace AP's nonce last bytes | --nonce-error-corrections=16", - " --truecrypt-keyfiles | File | Keyfiles to use, separated with commas | --truecrypt-key=x.png", - " --veracrypt-keyfiles | File | Keyfiles to use, separated with commas | --veracrypt-key=x.txt", - " --veracrypt-pim | Num | VeraCrypt personal iterations multiplier | --veracrypt-pim=1000", - " -b, --benchmark | | Run benchmark |", - " --speed-only | | Return expected speed of the attack, then quit |", - " --progress-only | | Return ideal progress step size and time to process |", - " -c, --segment-size | Num | Sets size in MB to cache from the wordfile to X | -c 32", - " --bitmap-min | Num | Sets minimum bits allowed for bitmaps to X | --bitmap-min=24", - " --bitmap-max | Num | Sets maximum bits allowed for bitmaps to X | --bitmap-max=24", - " --cpu-affinity | Str | Locks to CPU devices, separated with commas | --cpu-affinity=1,2,3", - " -I, --opencl-info | | Show info about detected OpenCL platforms/devices | -I", - " --opencl-platforms | Str | OpenCL platforms to use, separated with commas | --opencl-platforms=2", - " -d, --opencl-devices | Str | OpenCL devices to use, separated with commas | -d 1", - " -D, --opencl-device-types | Str | OpenCL device-types to use, separated with commas | -D 1", - " --opencl-vector-width | Num | Manually override OpenCL vector-width to X | --opencl-vector=4", - " -O, --optimized-kernel-enable | | Enable optimized kernels (limits password length) |", - " -w, --workload-profile | Num | Enable a specific workload profile, see pool below | -w 3", - " -n, --kernel-accel | Num | Manual workload tuning, set outerloop step size to X | -n 64", - " -u, --kernel-loops | Num | Manual workload tuning, set innerloop step size to X | -u 256", - " --nvidia-spin-damp | Num | Workaround NVIDIAs CPU burning loop bug, in percent | --nvidia-spin-damp=50", - " --gpu-temp-disable | | Disable temperature and fanspeed reads and triggers |", - " --gpu-temp-abort | Num | Abort if GPU temperature reaches X degrees Celsius | --gpu-temp-abort=100", - " --gpu-temp-retain | Num | Try to retain GPU temperature at X degrees Celsius | --gpu-temp-retain=95", - " --powertune-enable | | Enable power tuning. Restores settings when finished |", - " --scrypt-tmto | Num | Manually override TMTO value for scrypt to X | --scrypt-tmto=3", - " -s, --skip | Num | Skip X words from the start | -s 1000000", - " -l, --limit | Num | Limit X words from the start + skipped words | -l 1000000", - " --keyspace | | Show keyspace base:mod values and quit |", - " -j, --rule-left | Rule | Single rule applied to each word from left wordlist | -j 'c'", - " -k, --rule-right | Rule | Single rule applied to each word from right wordlist | -k '^-'", - " -r, --rules-file | File | Multiple rules applied to each word from wordlists | -r rules/best64.rule", - " -g, --generate-rules | Num | Generate X random rules | -g 10000", - " --generate-rules-func-min | Num | Force min X functions per rule |", - " --generate-rules-func-max | Num | Force max X functions per rule |", - " --generate-rules-seed | Num | Force RNG seed set to X |", - " -1, --custom-charset1 | CS | User-defined charset ?1 | -1 ?l?d?u", - " -2, --custom-charset2 | CS | User-defined charset ?2 | -2 ?l?d?s", - " -3, --custom-charset3 | CS | User-defined charset ?3 |", - " -4, --custom-charset4 | CS | User-defined charset ?4 |", - " -i, --increment | | Enable mask increment mode |", - " --increment-min | Num | Start mask incrementing at X | --increment-min=4", - " --increment-max | Num | Stop mask incrementing at X | --increment-max=8", + " Options Short / Long | Type | Description | Example", + "================================+======+======================================================+=======================", + " -m, --hash-type | Num | Hash-type, see references below | -m 1000", + " -a, --attack-mode | Num | Attack-mode, see references below | -a 3", + " -V, --version | | Print version |", + " -h, --help | | Print help |", + " --quiet | | Suppress output |", + " --hex-charset | | Assume charset is given in hex |", + " --hex-salt | | Assume salt is given in hex |", + " --hex-wordlist | | Assume words in wordlist are given in hex |", + " --force | | Ignore warnings |", + " --status | | Enable automatic update of the status screen |", + " --status-timer | Num | Sets seconds between status screen updates to X | --status-timer=1", + " --machine-readable | | Display the status view in a machine-readable format |", + " --keep-guessing | | Keep guessing the hash after it has been cracked |", + " --self-test-disable | | Disable self-test functionality on startup |", + " --loopback | | Add new plains to induct directory |", + " --weak-hash-threshold | Num | Threshold X when to stop checking for weak hashes | --weak=0", + " --markov-hcstat | File | Specify hcstat file to use | --markov-hc=my.hcstat", + " --markov-disable | | Disables markov-chains, emulates classic brute-force |", + " --markov-classic | | Enables classic markov-chains, no per-position |", + " -t, --markov-threshold | Num | Threshold X when to stop accepting new markov-chains | -t 50", + " --runtime | Num | Abort session after X seconds of runtime | --runtime=10", + " --session | Str | Define specific session name | --session=mysession", + " --restore | | Restore session from --session |", + " --restore-disable | | Do not write restore file |", + " --restore-file-path | File | Specific path to restore file | --restore-file-path=x.restore", + " -o, --outfile | File | Define outfile for recovered hash | -o outfile.txt", + " --outfile-format | Num | Define outfile-format X for recovered hash | --outfile-format=7", + " --outfile-autohex-disable | | Disable the use of $HEX[] in output plains |", + " --outfile-check-timer | Num | Sets seconds between outfile checks to X | --outfile-check=30", + " --wordlist-autohex-disable | | Disable the conversion of $HEX[] from the wordlist |", + " -p, --separator | Char | Separator char for hashlists and outfile | -p :", + " --stdout | | Do not crack a hash, instead print candidates only |", + " --show | | Compare hashlist with potfile; show cracked hashes |", + " --left | | Compare hashlist with potfile; show uncracked hashes |", + " --username | | Enable ignoring of usernames in hashfile |", + " --remove | | Enable removal of hashes once they are cracked |", + " --remove-timer | Num | Update input hash file each X seconds | --remove-timer=30", + " --potfile-disable | | Do not write potfile |", + " --potfile-path | Dir | Specific path to potfile | --potfile-path=my.pot", + " --encoding-from | Code | Force internal wordlist encoding from X | --encoding-from=iso-8859-15", + " --encoding-to | Code | Force internal wordlist encoding to X | --encoding-to=utf-32le", + " --debug-mode | Num | Defines the debug mode (hybrid only by using rules) | --debug-mode=4", + " --debug-file | File | Output file for debugging rules | --debug-file=good.log", + " --induction-dir | Dir | Specify the induction directory to use for loopback | --induction=inducts", + " --outfile-check-dir | Dir | Specify the outfile directory to monitor for plains | --outfile-check-dir=x", + " --logfile-disable | | Disable the logfile |", + " --hccapx-message-pair | Num | Load only message pairs from hccapx matching X | --hccapx-message-pair=2", + " --nonce-error-corrections | Num | The BF size range to replace AP's nonce last bytes | --nonce-error-corrections=16", + " --truecrypt-keyfiles | File | Keyfiles to use, separated with commas | --truecrypt-key=x.png", + " --veracrypt-keyfiles | File | Keyfiles to use, separated with commas | --veracrypt-key=x.txt", + " --veracrypt-pim | Num | VeraCrypt personal iterations multiplier | --veracrypt-pim=1000", + " -b, --benchmark | | Run benchmark |", + " --speed-only | | Return expected speed of the attack, then quit |", + " --progress-only | | Return ideal progress step size and time to process |", + " -c, --segment-size | Num | Sets size in MB to cache from the wordfile to X | -c 32", + " --bitmap-min | Num | Sets minimum bits allowed for bitmaps to X | --bitmap-min=24", + " --bitmap-max | Num | Sets maximum bits allowed for bitmaps to X | --bitmap-max=24", + " --cpu-affinity | Str | Locks to CPU devices, separated with commas | --cpu-affinity=1,2,3", + " -I, --opencl-info | | Show info about detected OpenCL platforms/devices | -I", + " --opencl-platforms | Str | OpenCL platforms to use, separated with commas | --opencl-platforms=2", + " -d, --opencl-devices | Str | OpenCL devices to use, separated with commas | -d 1", + " -D, --opencl-device-types | Str | OpenCL device-types to use, separated with commas | -D 1", + " --opencl-vector-width | Num | Manually override OpenCL vector-width to X | --opencl-vector=4", + " -O, --optimized-kernel-enable | | Enable optimized kernels (limits password length) |", + " -w, --workload-profile | Num | Enable a specific workload profile, see pool below | -w 3", + " -n, --kernel-accel | Num | Manual workload tuning, set outerloop step size to X | -n 64", + " -u, --kernel-loops | Num | Manual workload tuning, set innerloop step size to X | -u 256", + " --nvidia-spin-damp | Num | Workaround NVIDIAs CPU burning loop bug, in percent | --nvidia-spin-damp=50", + " --gpu-temp-disable | | Disable temperature and fanspeed reads and triggers |", + " --gpu-temp-abort | Num | Abort if GPU temperature reaches X degrees Celsius | --gpu-temp-abort=100", + " --gpu-temp-retain | Num | Try to retain GPU temperature at X degrees Celsius | --gpu-temp-retain=95", + " --powertune-enable | | Enable power tuning. Restores settings when finished |", + " --scrypt-tmto | Num | Manually override TMTO value for scrypt to X | --scrypt-tmto=3", + " -s, --skip | Num | Skip X words from the start | -s 1000000", + " -l, --limit | Num | Limit X words from the start + skipped words | -l 1000000", + " --keyspace | | Show keyspace base:mod values and quit |", + " -j, --rule-left | Rule | Single rule applied to each word from left wordlist | -j 'c'", + " -k, --rule-right | Rule | Single rule applied to each word from right wordlist | -k '^-'", + " -r, --rules-file | File | Multiple rules applied to each word from wordlists | -r rules/best64.rule", + " -g, --generate-rules | Num | Generate X random rules | -g 10000", + " --generate-rules-func-min | Num | Force min X functions per rule |", + " --generate-rules-func-max | Num | Force max X functions per rule |", + " --generate-rules-seed | Num | Force RNG seed set to X |", + " -1, --custom-charset1 | CS | User-defined charset ?1 | -1 ?l?d?u", + " -2, --custom-charset2 | CS | User-defined charset ?2 | -2 ?l?d?s", + " -3, --custom-charset3 | CS | User-defined charset ?3 |", + " -4, --custom-charset4 | CS | User-defined charset ?4 |", + " -i, --increment | | Enable mask increment mode |", + " --increment-min | Num | Start mask incrementing at X | --increment-min=4", + " --increment-max | Num | Stop mask incrementing at X | --increment-max=8", "", "- [ Hash modes ] -", "", diff --git a/src/user_options.c b/src/user_options.c index ad22f00e5..766bf7fab 100644 --- a/src/user_options.c +++ b/src/user_options.c @@ -76,6 +76,7 @@ static const struct option long_options[] = {"outfile-check-timer", required_argument, 0, IDX_OUTFILE_CHECK_TIMER}, {"outfile-format", required_argument, 0, IDX_OUTFILE_FORMAT}, {"outfile", required_argument, 0, IDX_OUTFILE}, + {"wordlist-autohex-disable", no_argument, 0, IDX_WORDLIST_AUTOHEX_DISABLE}, {"potfile-disable", no_argument, 0, IDX_POTFILE_DISABLE}, {"potfile-path", required_argument, 0, IDX_POTFILE_PATH}, {"powertune-enable", no_argument, 0, IDX_POWERTUNE_ENABLE}, @@ -174,6 +175,7 @@ int user_options_init (hashcat_ctx_t *hashcat_ctx) user_options->opencl_platforms = NULL; user_options->opencl_vector_width = OPENCL_VECTOR_WIDTH; user_options->optimized_kernel_enable = OPTIMIZED_KERNEL_ENABLE; + user_options->wordlist_autohex_disable = WORDLIST_AUTOHEX_DISABLE; user_options->outfile_autohex = OUTFILE_AUTOHEX; user_options->outfile_check_dir = NULL; user_options->outfile_check_timer = OUTFILE_CHECK_TIMER; @@ -375,6 +377,7 @@ int user_options_getopt (hashcat_ctx_t *hashcat_ctx, int argc, char **argv) user_options->outfile_format_chgd = true; break; case IDX_OUTFILE_AUTOHEX_DISABLE: user_options->outfile_autohex = false; break; case IDX_OUTFILE_CHECK_TIMER: user_options->outfile_check_timer = atoi (optarg); break; + case IDX_WORDLIST_AUTOHEX_DISABLE: user_options->wordlist_autohex_disable = true; break; case IDX_HEX_CHARSET: user_options->hex_charset = true; break; case IDX_HEX_SALT: user_options->hex_salt = true; break; case IDX_HEX_WORDLIST: user_options->hex_wordlist = true; break; @@ -2133,6 +2136,7 @@ void user_options_logger (hashcat_ctx_t *hashcat_ctx) logfile_top_uint (user_options->outfile_autohex); logfile_top_uint (user_options->outfile_check_timer); logfile_top_uint (user_options->outfile_format); + logfile_top_uint (user_options->wordlist_autohex_disable); logfile_top_uint (user_options->potfile_disable); logfile_top_uint (user_options->powertune_enable); logfile_top_uint (user_options->progress_only); diff --git a/src/wordlist.c b/src/wordlist.c index 7593c1cac..0fe0965b0 100644 --- a/src/wordlist.c +++ b/src/wordlist.c @@ -35,11 +35,14 @@ u32 convert_from_hex (hashcat_ctx_t *hashcat_ctx, char *line_buf, const u32 line return (i); } - if (is_hexify ((const u8 *) line_buf, (const int) line_len) == true) + if (user_options->wordlist_autohex_disable == false) { - const int new_len = exec_unhexify ((const u8 *) line_buf, (const int) line_len, (u8 *) line_buf, (const int) line_len); + if (is_hexify ((const u8 *) line_buf, (const int) line_len) == true) + { + const int new_len = exec_unhexify ((const u8 *) line_buf, (const int) line_len, (u8 *) line_buf, (const int) line_len); - return (u32) new_len; + return (u32) new_len; + } } return (line_len);