1
0
mirror of https://github.com/hashcat/hashcat.git synced 2025-07-23 15:08:37 +00:00

Update types, modules, edge

Add OPTS_TYPE_PT_BASE58 in modules 28501 28502 28503 28504 28505 28506 30901 30902 30903 30904 30905 30906
Add OPTS_TYPE_PT_BASE58 and remove OPTS_TYPE_MAXIMUM_ACCEL in opts_type
Re-format opts_type section
Handle new BASE58 password type in terminal.c
Handle free_threaded python library checks in test_edge.sh
Handle new BASE58 checks in test_edge.sh
Improve errors handling in test_edge.sh
This commit is contained in:
Gabriele Gristina 2025-07-15 22:01:50 +02:00
parent 0a348859da
commit a870b15324
No known key found for this signature in database
GPG Key ID: 9F68B59298F311F0
16 changed files with 163 additions and 97 deletions

View File

@ -184,7 +184,9 @@
- Metal Backend: disable Metal devices only if at least one OpenCL device is active
- Metal Backend: improved compute workloads calculation
- Metal Backend: parallelize pipeline state object (PSO) compilation internally
- Modules: Added OPTS_TYPE_PT_BASE58 in 28501 28502 28503 28504 28505 28506 30901 30902 30903 30904 30905 30906
- Modules: Check UnpackSize to raise false positive with hc_decompress_rar
- Types: Added OPTS_TYPE_PT_BASE58 and removed OPTS_TYPE_MAXIMUM_ACCEL in opts_type
- User Options: added --metal-compiler-runtime option
- User Options: limit --bitmap-max value to 31
- User Options: assigned -H to --hash-info

View File

@ -421,108 +421,105 @@ typedef enum opti_type
typedef enum opts_type
{
OPTS_TYPE_PT_UTF16LE = (1ULL << 0),
OPTS_TYPE_PT_UTF16BE = (1ULL << 1),
OPTS_TYPE_PT_UPPER = (1ULL << 2),
OPTS_TYPE_PT_LOWER = (1ULL << 3),
OPTS_TYPE_PT_ADD01 = (1ULL << 4),
OPTS_TYPE_PT_ADD02 = (1ULL << 5),
OPTS_TYPE_PT_ADD80 = (1ULL << 6),
OPTS_TYPE_PT_ADDBITS14 = (1ULL << 7),
OPTS_TYPE_PT_ADDBITS15 = (1ULL << 8),
OPTS_TYPE_PT_GENERATE_LE = (1ULL << 9),
OPTS_TYPE_PT_GENERATE_BE = (1ULL << 10),
OPTS_TYPE_PT_NEVERCRACK = (1ULL << 11), // if we want all possible results
OPTS_TYPE_PT_ALWAYS_ASCII = (1ULL << 12),
OPTS_TYPE_PT_ALWAYS_HEXIFY = (1ULL << 13),
OPTS_TYPE_PT_LM = (1ULL << 14), // special handling: all lower, 7 max, ...
OPTS_TYPE_PT_HEX = (1ULL << 15), // input wordlist is always in hex
OPTS_TYPE_ST_UTF16LE = (1ULL << 16),
OPTS_TYPE_ST_UTF16BE = (1ULL << 17),
OPTS_TYPE_ST_UPPER = (1ULL << 18),
OPTS_TYPE_ST_LOWER = (1ULL << 19),
OPTS_TYPE_ST_ADD01 = (1ULL << 20),
OPTS_TYPE_ST_ADD02 = (1ULL << 21),
OPTS_TYPE_ST_ADD80 = (1ULL << 22),
OPTS_TYPE_ST_ADDBITS14 = (1ULL << 23),
OPTS_TYPE_ST_ADDBITS15 = (1ULL << 24),
OPTS_TYPE_ST_HEX = (1ULL << 25),
OPTS_TYPE_ST_BASE64 = (1ULL << 26),
OPTS_TYPE_MT_HEX = (1ULL << 27), // mask is always in hex
OPTS_TYPE_HASH_COPY = (1ULL << 28),
OPTS_TYPE_HASH_SPLIT = (1ULL << 29),
OPTS_TYPE_INIT = (1ULL << 30), // Added v7, since bridge can fully replace these, but are set by default automatically
OPTS_TYPE_LOOP = (1ULL << 31), // Added v7, since bridge can fully replace these, but are set by default automatically
OPTS_TYPE_COMP = (1ULL << 32), // Added v7, since bridge can fully replace these, but are set by default automatically
OPTS_TYPE_LOOP_PREPARE = (1ULL << 33), // a kernel which is called each time before _loop kernel started.
// like a hook12 kernel but without extra buffers.
OPTS_TYPE_LOOP_EXTENDED = (1ULL << 34), // a kernel which is called each time normal _loop kernel finished.
// but unlike a hook kernel this kernel is called for every _loop iteration offset
OPTS_TYPE_HOOK12 = (1ULL << 35),
OPTS_TYPE_HOOK23 = (1ULL << 36),
OPTS_TYPE_INIT2 = (1ULL << 37),
OPTS_TYPE_LOOP2_PREPARE = (1ULL << 38), // same as OPTS_TYPE_LOOP_PREPARE but for loop2 kernel
OPTS_TYPE_LOOP2 = (1ULL << 39),
OPTS_TYPE_AUX1 = (1ULL << 40),
OPTS_TYPE_AUX2 = (1ULL << 41),
OPTS_TYPE_AUX3 = (1ULL << 42),
OPTS_TYPE_AUX4 = (1ULL << 43),
OPTS_TYPE_BINARY_HASHFILE = (1ULL << 44),
OPTS_TYPE_BINARY_HASHFILE_OPTIONAL
= (1ULL << 45), // this allows us to not enforce the use of a binary file. requires OPTS_TYPE_BINARY_HASHFILE set to be effective.
OPTS_TYPE_PT_ADD06 = (1ULL << 46),
OPTS_TYPE_KEYBOARD_MAPPING = (1ULL << 47),
OPTS_TYPE_DEEP_COMP_KERNEL = (1ULL << 48), // if we have to iterate through each hash inside the comp kernel, for example if each hash has to be decrypted separately
OPTS_TYPE_TM_KERNEL = (1ULL << 49),
OPTS_TYPE_SUGGEST_KG = (1ULL << 50), // suggest keep guessing for modules the user maybe wants to use --keep-guessing
OPTS_TYPE_COPY_TMPS = (1ULL << 51), // if we want to use data from tmps buffer (for example get the PMK in WPA)
OPTS_TYPE_POTFILE_NOPASS = (1ULL << 52), // sometimes the password should not be printed to potfile
OPTS_TYPE_DYNAMIC_SHARED = (1ULL << 53), // use dynamic shared memory (note: needs special kernel changes)
OPTS_TYPE_SELF_TEST_DISABLE = (1ULL << 54), // some algos use JiT in combinations with a salt or create too much startup time
OPTS_TYPE_MP_MULTI_DISABLE = (1ULL << 55), // do not multiply the kernel-accel with the multiprocessor count per device to allow more fine-tuned workload settings
OPTS_TYPE_THREAD_MULTI_DISABLE // do not multiply the kernel-power with the thread count per device for super slow algos
= (1ULL << 56),
OPTS_TYPE_NATIVE_THREADS = (1ULL << 57), // forces "native" thread count: CPU=1, GPU-Intel=8, GPU-AMD=64 (wavefront), GPU-NV=32 (warps)
OPTS_TYPE_MAXIMUM_THREADS = (1ULL << 58), // disable else branch in pre-compilation thread count optimization setting
OPTS_TYPE_POST_AMP_UTF16LE = (1ULL << 59), // run the utf8 to utf16le conversion kernel after they have been processed from amplifiers
OPTS_TYPE_AUTODETECT_DISABLE
= (1ULL << 60), // skip autodetect engine
OPTS_TYPE_STOCK_MODULE = (1ULL << 61), // module included with hashcat default distribution
OPTS_TYPE_MULTIHASH_DESPITE_ESALT
= (1ULL << 62), // overrule multihash cracking check same salt but not same esalt
OPTS_TYPE_MAXIMUM_ACCEL = (1ULL << 63) // try to maximize kernel-accel during autotune
OPTS_TYPE_PT_UTF16LE = (1ULL << 0),
OPTS_TYPE_PT_UTF16BE = (1ULL << 1),
OPTS_TYPE_PT_UPPER = (1ULL << 2),
OPTS_TYPE_PT_LOWER = (1ULL << 3),
OPTS_TYPE_PT_ADD01 = (1ULL << 4),
OPTS_TYPE_PT_ADD02 = (1ULL << 5),
OPTS_TYPE_PT_ADD80 = (1ULL << 6),
OPTS_TYPE_PT_ADDBITS14 = (1ULL << 7),
OPTS_TYPE_PT_ADDBITS15 = (1ULL << 8),
OPTS_TYPE_PT_GENERATE_LE = (1ULL << 9),
OPTS_TYPE_PT_GENERATE_BE = (1ULL << 10),
OPTS_TYPE_PT_NEVERCRACK = (1ULL << 11), // if we want all possible results
OPTS_TYPE_PT_ALWAYS_ASCII = (1ULL << 12),
OPTS_TYPE_PT_ALWAYS_HEXIFY = (1ULL << 13),
OPTS_TYPE_PT_LM = (1ULL << 14), // special handling: all lower, 7 max, ...
OPTS_TYPE_PT_HEX = (1ULL << 15), // input wordlist is always in hex
OPTS_TYPE_PT_BASE58 = (1ULL << 16), // only informative
OPTS_TYPE_ST_UTF16LE = (1ULL << 17),
OPTS_TYPE_ST_UTF16BE = (1ULL << 18),
OPTS_TYPE_ST_UPPER = (1ULL << 19),
OPTS_TYPE_ST_LOWER = (1ULL << 20),
OPTS_TYPE_ST_ADD01 = (1ULL << 21),
OPTS_TYPE_ST_ADD02 = (1ULL << 22),
OPTS_TYPE_ST_ADD80 = (1ULL << 23),
OPTS_TYPE_ST_ADDBITS14 = (1ULL << 24),
OPTS_TYPE_ST_ADDBITS15 = (1ULL << 25),
OPTS_TYPE_ST_HEX = (1ULL << 26),
OPTS_TYPE_ST_BASE64 = (1ULL << 27),
OPTS_TYPE_MT_HEX = (1ULL << 28), // mask is always in hex
OPTS_TYPE_HASH_COPY = (1ULL << 29),
OPTS_TYPE_HASH_SPLIT = (1ULL << 30),
OPTS_TYPE_INIT = (1ULL << 31), // Added v7, since bridge can fully replace these, but are set by default automatically
OPTS_TYPE_LOOP = (1ULL << 32), // Added v7, since bridge can fully replace these, but are set by default automatically
OPTS_TYPE_COMP = (1ULL << 33), // Added v7, since bridge can fully replace these, but are set by default automatically
OPTS_TYPE_LOOP_PREPARE = (1ULL << 34), // a kernel which is called each time before _loop kernel started.
// like a hook12 kernel but without extra buffers.
OPTS_TYPE_LOOP_EXTENDED = (1ULL << 35), // a kernel which is called each time normal _loop kernel finished.
// but unlike a hook kernel this kernel is called for every _loop iteration offset
OPTS_TYPE_HOOK12 = (1ULL << 36),
OPTS_TYPE_HOOK23 = (1ULL << 37),
OPTS_TYPE_INIT2 = (1ULL << 38),
OPTS_TYPE_LOOP2_PREPARE = (1ULL << 39), // same as OPTS_TYPE_LOOP_PREPARE but for loop2 kernel
OPTS_TYPE_LOOP2 = (1ULL << 40),
OPTS_TYPE_AUX1 = (1ULL << 41),
OPTS_TYPE_AUX2 = (1ULL << 42),
OPTS_TYPE_AUX3 = (1ULL << 43),
OPTS_TYPE_AUX4 = (1ULL << 44),
OPTS_TYPE_BINARY_HASHFILE = (1ULL << 45),
OPTS_TYPE_BINARY_HASHFILE_OPTIONAL = (1ULL << 46), // this allows us to not enforce the use of a binary file. requires OPTS_TYPE_BINARY_HASHFILE set to be effective.
OPTS_TYPE_PT_ADD06 = (1ULL << 47),
OPTS_TYPE_KEYBOARD_MAPPING = (1ULL << 48),
OPTS_TYPE_DEEP_COMP_KERNEL = (1ULL << 49), // if we have to iterate through each hash inside the comp kernel, for example if each hash has to be decrypted separately
OPTS_TYPE_TM_KERNEL = (1ULL << 50),
OPTS_TYPE_SUGGEST_KG = (1ULL << 51), // suggest keep guessing for modules the user maybe wants to use --keep-guessing
OPTS_TYPE_COPY_TMPS = (1ULL << 52), // if we want to use data from tmps buffer (for example get the PMK in WPA)
OPTS_TYPE_POTFILE_NOPASS = (1ULL << 53), // sometimes the password should not be printed to potfile
OPTS_TYPE_DYNAMIC_SHARED = (1ULL << 54), // use dynamic shared memory (note: needs special kernel changes)
OPTS_TYPE_SELF_TEST_DISABLE = (1ULL << 55), // some algos use JiT in combinations with a salt or create too much startup time
OPTS_TYPE_MP_MULTI_DISABLE = (1ULL << 56), // do not multiply the kernel-accel with the multiprocessor count per device to allow more fine-tuned workload settings
OPTS_TYPE_THREAD_MULTI_DISABLE = (1ULL << 57), // do not multiply the kernel-power with the thread count per device for super slow algos
OPTS_TYPE_NATIVE_THREADS = (1ULL << 58), // forces "native" thread count: CPU=1, GPU-Intel=8, GPU-AMD=64 (wavefront), GPU-NV=32 (warps)
OPTS_TYPE_MAXIMUM_THREADS = (1ULL << 59), // disable else branch in pre-compilation thread count optimization setting
OPTS_TYPE_POST_AMP_UTF16LE = (1ULL << 60), // run the utf8 to utf16le conversion kernel after they have been processed from amplifiers
OPTS_TYPE_AUTODETECT_DISABLE = (1ULL << 61), // skip autodetect engine
OPTS_TYPE_STOCK_MODULE = (1ULL << 62), // module included with hashcat default distribution
OPTS_TYPE_MULTIHASH_DESPITE_ESALT = (1ULL << 63) // overrule multihash cracking check same salt but not same esalt
//OPTS_TYPE_MAXIMUM_ACCEL = (1ULL << 64) // try to maximize kernel-accel during autotune
} opts_type_t;
typedef enum bridge_type
{
BRIDGE_TYPE_NONE = 0, // no bridge support
BRIDGE_TYPE_MATCH_TUNINGS = (1ULL << 1), // Disables autotune and adjusts -n, -u and -T for the backend device according to match bridge dimensions
BRIDGE_TYPE_UPDATE_SELFTEST = (1ULL << 2), // updates the selftest configured in the module. Can be useful for generic hash modes such as the python one
BRIDGE_TYPE_NONE = 0, // no bridge support
BRIDGE_TYPE_MATCH_TUNINGS = (1ULL << 1), // Disables autotune and adjusts -n, -u and -T for the backend device according to match bridge dimensions
BRIDGE_TYPE_UPDATE_SELFTEST = (1ULL << 2), // updates the selftest configured in the module. Can be useful for generic hash modes such as the python one
BRIDGE_TYPE_LAUNCH_INIT = (1ULL << 10), // attention! not yet implemented
BRIDGE_TYPE_LAUNCH_LOOP = (1ULL << 11),
BRIDGE_TYPE_LAUNCH_LOOP2 = (1ULL << 12),
BRIDGE_TYPE_LAUNCH_COMP = (1ULL << 13), // attention! not yet implemented
BRIDGE_TYPE_LAUNCH_INIT = (1ULL << 10), // attention! not yet implemented
BRIDGE_TYPE_LAUNCH_LOOP = (1ULL << 11),
BRIDGE_TYPE_LAUNCH_LOOP2 = (1ULL << 12),
BRIDGE_TYPE_LAUNCH_COMP = (1ULL << 13), // attention! not yet implemented
// BRIDGE_TYPE_REPLACE_* is like
// BRIDGE_TYPE_LAUNCH_*, but
// deactivates KERN_RUN INIT/LOOP/COMP
BRIDGE_TYPE_REPLACE_INIT = (1ULL << 20), // attention! not yet implemented
BRIDGE_TYPE_REPLACE_LOOP = (1ULL << 21),
BRIDGE_TYPE_REPLACE_LOOP2 = (1ULL << 22),
BRIDGE_TYPE_REPLACE_COMP = (1ULL << 23), // attention! not yet implemented
BRIDGE_TYPE_REPLACE_INIT = (1ULL << 20), // attention! not yet implemented
BRIDGE_TYPE_REPLACE_LOOP = (1ULL << 21),
BRIDGE_TYPE_REPLACE_LOOP2 = (1ULL << 22),
BRIDGE_TYPE_REPLACE_COMP = (1ULL << 23), // attention! not yet implemented
BRIDGE_TYPE_FORCE_WORKITEMS_001 = (1ULL << 30), // This override the workitem counts reported from the bridge device
BRIDGE_TYPE_FORCE_WORKITEMS_002 = (1ULL << 31), // Can be useful if this is not a physical hardware
BRIDGE_TYPE_FORCE_WORKITEMS_004 = (1ULL << 32),
BRIDGE_TYPE_FORCE_WORKITEMS_008 = (1ULL << 33),
BRIDGE_TYPE_FORCE_WORKITEMS_016 = (1ULL << 34),
BRIDGE_TYPE_FORCE_WORKITEMS_032 = (1ULL << 35),
BRIDGE_TYPE_FORCE_WORKITEMS_064 = (1ULL << 36),
BRIDGE_TYPE_FORCE_WORKITEMS_128 = (1ULL << 37),
BRIDGE_TYPE_FORCE_WORKITEMS_256 = (1ULL << 36),
BRIDGE_TYPE_FORCE_WORKITEMS_001 = (1ULL << 30), // This override the workitem counts reported from the bridge device
BRIDGE_TYPE_FORCE_WORKITEMS_002 = (1ULL << 31), // Can be useful if this is not a physical hardware
BRIDGE_TYPE_FORCE_WORKITEMS_004 = (1ULL << 32),
BRIDGE_TYPE_FORCE_WORKITEMS_008 = (1ULL << 33),
BRIDGE_TYPE_FORCE_WORKITEMS_016 = (1ULL << 34),
BRIDGE_TYPE_FORCE_WORKITEMS_032 = (1ULL << 35),
BRIDGE_TYPE_FORCE_WORKITEMS_064 = (1ULL << 36),
BRIDGE_TYPE_FORCE_WORKITEMS_128 = (1ULL << 37),
BRIDGE_TYPE_FORCE_WORKITEMS_256 = (1ULL << 36),
} bridge_type_t;

View File

@ -24,6 +24,7 @@ static const char *HASH_NAME = "Bitcoin WIF private key (P2PKH), compres
static const u64 KERN_TYPE = 28501;
static const u32 OPTI_TYPE = OPTI_TYPE_NOT_SALTED;
static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE
| OPTS_TYPE_PT_BASE58
| OPTS_TYPE_PT_GENERATE_LE;
static const u32 SALT_TYPE = SALT_TYPE_NONE;
static const char *ST_PASS = "KxhashcatxhXkULNJYF8Fu46G28SJrC7x2qwFtRuf38kVjkWxHg3";

View File

@ -24,6 +24,7 @@ static const char *HASH_NAME = "Bitcoin WIF private key (P2PKH), uncompr
static const u64 KERN_TYPE = 28502;
static const u32 OPTI_TYPE = OPTI_TYPE_NOT_SALTED;
static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE
| OPTS_TYPE_PT_BASE58
| OPTS_TYPE_PT_GENERATE_LE;
static const u32 SALT_TYPE = SALT_TYPE_NONE;
static const char *ST_PASS = "5KcL859EUnBDtVG76134U6DZWnVmpE996emJnWmTLRW2hashcat";

View File

@ -22,6 +22,7 @@ static const char *HASH_NAME = "Bitcoin WIF private key (P2WPKH, Bech32)
static const u64 KERN_TYPE = 28501;
static const u32 OPTI_TYPE = OPTI_TYPE_NOT_SALTED;
static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE
| OPTS_TYPE_PT_BASE58
| OPTS_TYPE_PT_GENERATE_LE;
static const u32 SALT_TYPE = SALT_TYPE_NONE;
static const char *ST_PASS = "KyhashcatpL2CQmMUDVMVuEXqdLSvfQ6TBjkUuyttSvBa7GMiuLi";

View File

@ -22,6 +22,7 @@ static const char *HASH_NAME = "Bitcoin WIF private key (P2WPKH, Bech32)
static const u64 KERN_TYPE = 28502;
static const u32 OPTI_TYPE = OPTI_TYPE_NOT_SALTED;
static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE
| OPTS_TYPE_PT_BASE58
| OPTS_TYPE_PT_GENERATE_LE;
static const u32 SALT_TYPE = SALT_TYPE_NONE;
static const char *ST_PASS = "5HzV19ffW9QTnmZHbwETRpPHm1d4hAP8PG1etUb3T3jjhashcat";

View File

@ -24,6 +24,7 @@ static const char *HASH_NAME = "Bitcoin WIF private key (P2SH(P2WPKH)),
static const u64 KERN_TYPE = 28505;
static const u32 OPTI_TYPE = OPTI_TYPE_NOT_SALTED;
static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE
| OPTS_TYPE_PT_BASE58
| OPTS_TYPE_PT_GENERATE_LE;
static const u32 SALT_TYPE = SALT_TYPE_NONE;
static const char *ST_PASS = "L4hashcat7q6HMnMFcukyvxxVJvpabXYjxXLey8846NtWUyX4YLi";

View File

@ -24,6 +24,7 @@ static const char *HASH_NAME = "Bitcoin WIF private key (P2SH(P2WPKH)),
static const u64 KERN_TYPE = 28506;
static const u32 OPTI_TYPE = OPTI_TYPE_NOT_SALTED;
static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE
| OPTS_TYPE_PT_BASE58
| OPTS_TYPE_PT_GENERATE_LE;
static const u32 SALT_TYPE = SALT_TYPE_NONE;
static const char *ST_PASS = "5JjDR424kMePbt5Uxnm2t1NizhdiVPcf8gCj68PQpP2ihashcat";

View File

@ -24,6 +24,7 @@ static const char *HASH_NAME = "Bitcoin raw private key (P2PKH), compres
static const u64 KERN_TYPE = 30901;
static const u32 OPTI_TYPE = OPTI_TYPE_NOT_SALTED;
static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE
| OPTS_TYPE_PT_BASE58
| OPTS_TYPE_PT_GENERATE_LE;
static const u32 SALT_TYPE = SALT_TYPE_NONE;
static const char *ST_PASS = "59887ec9920239bd45b6a9f82b7c4e024f80beaf887e5ee6aac5de0a899d3068";

View File

@ -24,6 +24,7 @@ static const char *HASH_NAME = "Bitcoin raw private key (P2PKH), uncompr
static const u64 KERN_TYPE = 30902;
static const u32 OPTI_TYPE = OPTI_TYPE_NOT_SALTED;
static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE
| OPTS_TYPE_PT_BASE58
| OPTS_TYPE_PT_GENERATE_LE;
static const u32 SALT_TYPE = SALT_TYPE_NONE;
static const char *ST_PASS = "2006a306cf8f61c18c4e78e5fc0f5a7aa473b5ffb41f34344a32f8e042786fa1";

View File

@ -22,6 +22,7 @@ static const char *HASH_NAME = "Bitcoin raw private key (P2WPKH, Bech32)
static const u64 KERN_TYPE = 30901;
static const u32 OPTI_TYPE = OPTI_TYPE_NOT_SALTED;
static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE
| OPTS_TYPE_PT_BASE58
| OPTS_TYPE_PT_GENERATE_LE;
static const u32 SALT_TYPE = SALT_TYPE_NONE;
static const char *ST_PASS = "4d1987d7a341d51557af59996845740135ab2506515426ada57cc8ec05adf794";

View File

@ -22,6 +22,7 @@ static const char *HASH_NAME = "Bitcoin raw private key (P2WPKH, Bech32)
static const u64 KERN_TYPE = 30902;
static const u32 OPTI_TYPE = OPTI_TYPE_NOT_SALTED;
static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE
| OPTS_TYPE_PT_BASE58
| OPTS_TYPE_PT_GENERATE_LE;
static const u32 SALT_TYPE = SALT_TYPE_NONE;
static const char *ST_PASS = "25c9f8f734d87aacd9308705ca50b9819a57425ffbfae41cef869b19764d72c2";

View File

@ -24,6 +24,7 @@ static const char *HASH_NAME = "Bitcoin raw private key (P2SH(P2WPKH)),
static const u64 KERN_TYPE = 30905;
static const u32 OPTI_TYPE = OPTI_TYPE_NOT_SALTED;
static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE
| OPTS_TYPE_PT_BASE58
| OPTS_TYPE_PT_GENERATE_LE;
static const u32 SALT_TYPE = SALT_TYPE_NONE;
static const char *ST_PASS = "83b45ff8d85f37aafc05a8accd1f1cd5e50868b57e2ef0ef6f287bb4d8d17786";

View File

@ -24,6 +24,7 @@ static const char *HASH_NAME = "Bitcoin raw private key (P2SH(P2WPKH)),
static const u64 KERN_TYPE = 30906;
static const u32 OPTI_TYPE = OPTI_TYPE_NOT_SALTED;
static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE
| OPTS_TYPE_PT_BASE58
| OPTS_TYPE_PT_GENERATE_LE;
static const u32 SALT_TYPE = SALT_TYPE_NONE;
static const char *ST_PASS = "4c969ccc86d9e1f557b4ff1f19badc9a99718dd2aec8fcf66460612e05f5f7dd";

View File

@ -716,7 +716,9 @@ void hash_info_single_json (hashcat_ctx_t *hashcat_ctx, user_options_extra_t *us
printf ("\"deprecated_notice\": \"%s\", ", "N/A");
}
const char *t_pw_desc = (hashconfig->opts_type & OPTS_TYPE_PT_HEX) ? "HEX" : "plain";
char *t_pw_desc = "plain";
if (hashconfig->opts_type & OPTS_TYPE_PT_HEX) t_pw_desc = "HEX";
else if (hashconfig->opts_type & OPTS_TYPE_PT_BASE58) t_pw_desc = "BASE58";
u32 t_pw_min = hashconfig->pw_min;
u32 t_pw_max = hashconfig->pw_max;
@ -943,7 +945,7 @@ void hash_info_single (hashcat_ctx_t *hashcat_ctx, user_options_extra_t *user_op
event_log_info (hashcat_ctx, " Deprecated..........: %s", (module_ctx->module_deprecated_notice != MODULE_DEFAULT) ? "Yes" : "No");
char *t_deprecated_notice = "N/A\0";
char *t_deprecated_notice = "N/A";
if (module_ctx->module_deprecated_notice != MODULE_DEFAULT)
{
@ -952,7 +954,9 @@ void hash_info_single (hashcat_ctx_t *hashcat_ctx, user_options_extra_t *user_op
event_log_info (hashcat_ctx, " Deprecated.Notice...: %s", t_deprecated_notice);
const char *t_pw_desc = (hashconfig->opts_type & OPTS_TYPE_PT_HEX) ? "HEX\0" : "plain\0";
char *t_pw_desc = "plain";
if (hashconfig->opts_type & OPTS_TYPE_PT_HEX) t_pw_desc = "HEX";
else if (hashconfig->opts_type & OPTS_TYPE_PT_BASE58) t_pw_desc = "BASE58";
u32 t_pw_min = hashconfig->pw_min;
u32 t_pw_max = hashconfig->pw_max;
@ -974,7 +978,7 @@ void hash_info_single (hashcat_ctx_t *hashcat_ctx, user_options_extra_t *user_op
{
u32 t = hashconfig->salt_type;
const char *t_salt_desc = (t == SALT_TYPE_EMBEDDED) ? "Embedded\0" : (t == SALT_TYPE_GENERIC) ? "Generic\0" : "Virtual\0";
const char *t_salt_desc = (t == SALT_TYPE_EMBEDDED) ? "Embedded" : (t == SALT_TYPE_GENERIC) ? "Generic" : "Virtual";
event_log_info (hashcat_ctx, " Salt.Type...........: %s", t_salt_desc);

View File

@ -69,6 +69,8 @@ export LANG=C
OUTD="test_edge_$(date +%s)"
UNAME=$(uname -s)
HASH_TYPE="all"
HASH_TYPE_MIN=0
HASH_TYPE_MAX=99999
@ -103,6 +105,12 @@ SKIP_OUT_MATCH_HASH_TYPES="14000 14100 22000"
SKIP_SAME_SALT_HASH_TYPES="6600 7100 7200 8200 13200 13400 15300 15310 15900 15910 16900 18300 18900 20200 20300 20400 27000 27100 29700 29930 29940"
#SKIP_SAME_SALT_HASH_TYPES="400 3200 5800 6400 6500 6600 6700 7100 7200 7401 7900 8200 9100 9200 9400 10500 10901 12001 12200 12300 12400 12500 12700 12800 12900 13000 13200 13400 13600 14700 14800 15100 15200 15300 15310 15400 15600 15900 15910 16200 16300 16700 16900 18300 18400 18800 18900 19000 19100 19600 19700 19800 19900 20011 20012 20013 20200 20300 20400 21501 22100 22400 22600 23100 23300 23500 23600 23700 23900 24100 24200 24410 24420 24500 25300 25400 25500 25600 25800 26100 26500 26600 27000 27100 27400 27500 27600 28100 28400 28600 28800 28900 29600 29700 29910 29920 29930 29940 30600 31200 31900"
pyenv_free_threaded=0
pyenv local | grep 't-dev\|[0-9]t$'
if [ $? -eq 0 ]; then
pyenv_free_threaded=1
fi
# Parse long options manually
#while [[ "$1" == --* ]]; do
while [[ $# -gt 0 ]]; do
@ -556,6 +564,18 @@ for hash_type in $(ls tools/test_modules/*.pm | cut -d'm' -f3 | cut -d'.' -f1 |
continue
fi
if [ $pyenv_free_threaded -eq 0 ] && [ $hash_type -eq 72000 ]; then
echo "[ ${OUTD} ] > Skip processing Hash-Type ${hash_type} (missing python 'free-threaded' library support)" | tee -a ${OUTD}/test_edge.details.log
continue
fi
if [ $pyenv_free_threaded -eq 1 ] && [ $hash_type -eq 73000 ]; then
if [ "$UNAME" == "Darwin" ]; then
echo "[ ${OUTD} ] > Skip processing Hash-Type ${hash_type} (not supported on Apple and Windows with python 'free-threaded' library support)" | tee -a ${OUTD}/test_edge.details.log
fi
continue
fi
build_failed_err=0
test_vectors_err=0
@ -614,9 +634,12 @@ for hash_type in $(ls tools/test_modules/*.pm | cut -d'm' -f3 | cut -d'.' -f1 |
fi
pt_hex=0
pt_base58=0
tmp_pw_type=$(./hashcat -m ${hash_type} -HH | grep Password\\.Type | awk '{print $2}')
if [ "${tmp_pw_type}" == "HEX" ]; then
pt_hex=1
elif [ "${tmp_pw_type}" == "BASE58" ]; then
pt_base58=1
fi
echo "[ ${OUTD} ] # Export tests for Hash-Type ${hash_type}, Attack-Type ${attack_type}, Kernel-Type ${kernel_type}" >> ${OUTD}/test_edge.details.log
@ -728,6 +751,9 @@ for hash_type in $(ls tools/test_modules/*.pm | cut -d'm' -f3 | cut -d'.' -f1 |
if [ $pt_hex -eq 1 ]; then
word_1="${word%??}"
mask_1="?b"
elif [ $pt_base58 -eq 1 ]; then
word_1="${word%??}"
mask_1="?a?a"
else
if [ "${word_len}" -eq 2 ]; then
word_1="${word%?}"
@ -747,6 +773,9 @@ for hash_type in $(ls tools/test_modules/*.pm | cut -d'm' -f3 | cut -d'.' -f1 |
if [ $pt_hex -eq 1 ]; then
word_1="${word%??}"
mask_1="?b"
elif [ $pt_base58 -eq 1 ]; then
word_1="${word%??}"
mask_1="?a?a"
else
if [ "${word_len}" -eq 2 ] || [ "${slow_hash}" -eq 1 ]; then
word_1="${word%?}"
@ -765,6 +794,9 @@ for hash_type in $(ls tools/test_modules/*.pm | cut -d'm' -f3 | cut -d'.' -f1 |
if [ $pt_hex -eq 1 ]; then
word_1="${word#??}"
mask_1="?b"
elif [ $pt_base58 -eq 1 ]; then
word_1="${word#??}"
mask_1="?a?a"
else
if [ "${word_len}" -eq 2 ] || [ "${slow_hash}" -eq 1 ]; then
word_1="${word#?}"
@ -790,6 +822,11 @@ for hash_type in $(ls tools/test_modules/*.pm | cut -d'm' -f3 | cut -d'.' -f1 |
cat ${cmd_out} >> ${OUTD}/test_edge.details.log
if [ "${retVal}" -ne 0 ]; then
if [ "${retVal}" -eq 252 ]; then
echo "[ ${OUTD} ] > Skipping current tests due to unmet memory requirements ..." | tee -a ${OUTD}/test_edge.details.log
break
fi
echo '```' | tee -a ${OUTD}/test_edge.details.log
echo "[ ${OUTD} ] !> error ($retVal) detected with CMD: ${CMD}" | tee -a ${OUTD}/test_edge.details.log
echo "[ ${OUTD} ] !> Hash-Type ${hash_type}, Attack-Type ${attack_type}, Kernel-Type ${kernel_type}, Vector-Width ${vector_width}, Test ID ${i}, Word len ${word_len}, Salt len ${salt_len}, Word '${word}', Hash ${hash}" | tee -a ${OUTD}/test_edge.details.log
@ -974,6 +1011,9 @@ for hash_type in $(ls tools/test_modules/*.pm | cut -d'm' -f3 | cut -d'.' -f1 |
if [ $pt_hex -eq 1 ]; then
word_1="${word%??}"
mask_1="?b"
elif [ $pt_base58 -eq 1 ]; then
word_1="${word%??}"
mask_1="?a?a"
else
if [ "${word_len}" -eq 2 ]; then
word_1="${word%?}"
@ -997,6 +1037,9 @@ for hash_type in $(ls tools/test_modules/*.pm | cut -d'm' -f3 | cut -d'.' -f1 |
if [ $pt_hex -eq 1 ]; then
word_1="${word%??}"
mask_1="?b"
elif [ $pt_base58 -eq 1 ]; then
word_1="${word%??}"
mask_1="?a?a"
else
if [ "${word_len}" -eq 2 ] || [ "${slow_hash}" -eq 1 ]; then
word_1="${word%?}"
@ -1017,6 +1060,9 @@ for hash_type in $(ls tools/test_modules/*.pm | cut -d'm' -f3 | cut -d'.' -f1 |
if [ $pt_hex -eq 1 ]; then
word_1="${word#??}"
mask_1="?b"
elif [ $pt_base58 -eq 1 ]; then
word_1="${word#??}"
mask_1="?a?a"
else
if [ "${word_len}" -eq 2 ] || [ "${slow_hash}" -eq 1 ]; then
word_1="${word#?}"
@ -1034,8 +1080,8 @@ for hash_type in $(ls tools/test_modules/*.pm | cut -d'm' -f3 | cut -d'.' -f1 |
fi
done
# echo "hash_cnt: $hash_cnt"
# cat ${OUTD}/edge_${hash_type}_${kernel_type}_${attack_type}.hashes
#echo "hash_cnt: $hash_cnt"
#cat ${OUTD}/edge_${hash_type}_${kernel_type}_${attack_type}.hashes
if [ $hash_cnt -gt 1 ]; then
cmd_out="${OUTD}/cmd_${hash_type}_${kernel_type}_${attack_type}_${vector_width}.multi.log"
@ -1055,6 +1101,11 @@ for hash_type in $(ls tools/test_modules/*.pm | cut -d'm' -f3 | cut -d'.' -f1 |
paste -d ":" ${hash_in} ${word_in} > ${hc_out}
if [ "${retVal}" -ne 0 ]; then
if [ "${retVal}" -eq 252 ]; then
echo "[ ${OUTD} ] > Skipping current tests due to unmet memory requirements ..." | tee -a ${OUTD}/test_edge.details.log
break
fi
echo '```' | tee -a ${OUTD}/test_edge.details.log
echo "[ ${OUTD} ] !> error ($retVal) detected with CMD: ${CMD}" | tee -a ${OUTD}/test_edge.details.log
echo "[ ${OUTD} ] !> Hash-Type ${hash_type}, Attack-Type ${attack_type}, Kernel-Type ${kernel_type}, Vector-Width ${vector_width}, Words ${word_in}, Hashes ${hash_in}" | tee -a ${OUTD}/test_edge.details.log
@ -1100,7 +1151,7 @@ for hash_type in $(ls tools/test_modules/*.pm | cut -d'm' -f3 | cut -d'.' -f1 |
fi
else
echo "[ ${OUTD} ] > Skipping Hash-Type ${hash_type}, Attack-Type ${attack_type}, Kernel-Type ${kernel_type}, Vector-Width ${vector_width}, Target-Type multi, Hashes ${hash_in} (hashes < 2)" | tee -a ${OUTD}/test_edge.details.log
echo "hash_cnt: ${hash_cnt}"
#echo "hash_cnt: ${hash_cnt}"
fi
fi
done