diff --git a/OpenCL/m03730_a3-pure.cl b/OpenCL/m03730_a3-pure.cl index 58f8b4410..903512e24 100644 --- a/OpenCL/m03730_a3-pure.cl +++ b/OpenCL/m03730_a3-pure.cl @@ -80,7 +80,7 @@ KERNEL_FQ void m03730_mxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt_t)) const u32 salt_len = esalt_bufs[DIGESTS_OFFSET_HOST].salt1_len; - u32 s[64] = { 0 }; + u32x s[64] = { 0 }; for (u32 i = 0, idx = 0; i < salt_len; i += 4, idx += 1) { @@ -89,7 +89,7 @@ KERNEL_FQ void m03730_mxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt_t)) const u32 salt_len2 = esalt_bufs[DIGESTS_OFFSET_HOST].salt2_len; - u32 s2[64] = { 0 }; + u32x s2[64] = { 0 }; for (u32 i = 0, idx = 0; i < salt_len2; i += 4, idx += 1) { @@ -232,7 +232,7 @@ KERNEL_FQ void m03730_sxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt_t)) const u32 salt_len = esalt_bufs[DIGESTS_OFFSET_HOST].salt1_len; - u32 s[64] = { 0 }; + u32x s[64] = { 0 }; for (u32 i = 0, idx = 0; i < salt_len; i += 4, idx += 1) { @@ -241,7 +241,7 @@ KERNEL_FQ void m03730_sxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt_t)) const u32 salt_len2 = esalt_bufs[DIGESTS_OFFSET_HOST].salt2_len; - u32 s2[64] = { 0 }; + u32x s2[64] = { 0 }; for (u32 i = 0, idx = 0; i < salt_len2; i += 4, idx += 1) { diff --git a/OpenCL/m18400-pure.cl b/OpenCL/m18400-pure.cl index c3f2931f5..36c1411f1 100644 --- a/OpenCL/m18400-pure.cl +++ b/OpenCL/m18400-pure.cl @@ -391,7 +391,7 @@ KERNEL_FQ void m18400_comp (KERN_ATTR_TMPS_ESALT (odf12_tmp_t, odf12_t)) if (remaining64) { - u32 *pt_remaining = pt + (encrypted_len64 / 4); + PRIVATE_AS u32 *pt_remaining = pt + (encrypted_len64 / 4); truncate_block_16x4_be_S (pt_remaining + 0, pt_remaining + 4, pt_remaining + 8, pt_remaining + 12, remaining64); diff --git a/OpenCL/m18600-pure.cl b/OpenCL/m18600-pure.cl index 8618025fb..6280e0a57 100644 --- a/OpenCL/m18600-pure.cl +++ b/OpenCL/m18600-pure.cl @@ -797,7 +797,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE_COMP) m18600_comp (KERN_ATTR_ if (remaining64) { - u32 *pt_remaining = pt + (encrypted_len64 / 4); + PRIVATE_AS u32 *pt_remaining = pt + (encrypted_len64 / 4); truncate_block_16x4_be_S (pt_remaining + 0, pt_remaining + 4, pt_remaining + 8, pt_remaining + 12, remaining64); diff --git a/OpenCL/m31700_a3-pure.cl b/OpenCL/m31700_a3-pure.cl index 18e0ee510..9a9db3047 100644 --- a/OpenCL/m31700_a3-pure.cl +++ b/OpenCL/m31700_a3-pure.cl @@ -80,7 +80,7 @@ KERNEL_FQ void m31700_mxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt_t)) const u32 salt1_len = esalt_bufs[DIGESTS_OFFSET_HOST].salt1_len; - u32 salt1_buf[64] = { 0 }; + u32x salt1_buf[64] = { 0 }; for (u32 i = 0, idx = 0; i < salt1_len; i += 4, idx += 1) { @@ -89,7 +89,7 @@ KERNEL_FQ void m31700_mxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt_t)) const u32 salt2_len = esalt_bufs[DIGESTS_OFFSET_HOST].salt2_len; - u32 salt2_buf[64] = { 0 }; + u32x salt2_buf[64] = { 0 }; for (u32 i = 0, idx = 0; i < salt2_len; i += 4, idx += 1) { @@ -245,7 +245,7 @@ KERNEL_FQ void m31700_sxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt_t)) const u32 salt1_len = esalt_bufs[DIGESTS_OFFSET_HOST].salt1_len; - u32 salt1_buf[64] = { 0 }; + u32x salt1_buf[64] = { 0 }; for (u32 i = 0, idx = 0; i < salt1_len; i += 4, idx += 1) { @@ -254,7 +254,7 @@ KERNEL_FQ void m31700_sxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt_t)) const u32 salt2_len = esalt_bufs[DIGESTS_OFFSET_HOST].salt2_len; - u32 salt2_buf[64] = { 0 }; + u32x salt2_buf[64] = { 0 }; for (u32 i = 0, idx = 0; i < salt2_len; i += 4, idx += 1) { diff --git a/docs/changes.txt b/docs/changes.txt index 04de72888..ce2668cbe 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -52,6 +52,11 @@ - Fixed incorrect plaintext check for 25400 and 26610. Increased plaintext check to 32 bytes to prevent false positives. - Fixed bug in --stdout that caused certain rules to malfunction - Fixed bug in input_tokenizer when TOKEN_ATTR_FIXED_LENGTH is used and refactor modules +- Fixed build failed for 18400 with Apple Metal +- Fixed build failed for 18600 with Apple Metal +- Fixed display problem of the "Optimizers applied" list for algorithms using OPTI_TYPE_SLOW_HASH_SIMD_INIT2 and/or OPTI_TYPE_SLOW_HASH_SIMD_LOOP2 +- Fixed incompatible pointer types (salt1 and salt2 buf) in 31700 a3 kernel +- Fixed incompatible pointer types (salt1 and salt2 buf) in 3730 a3 kernel - Handle signed/unsigned PDF permission P value for all PDF hash-modes ## diff --git a/src/shared.c b/src/shared.c index b2b543a24..8434f51b0 100644 --- a/src/shared.c +++ b/src/shared.c @@ -80,7 +80,9 @@ static const char *const OPTI_STR_BRUTE_FORCE = "Brute-Force"; static const char *const OPTI_STR_RAW_HASH = "Raw-Hash"; static const char *const OPTI_STR_REGISTER_LIMIT = "Register-Limit"; static const char *const OPTI_STR_SLOW_HASH_SIMD_INIT = "Slow-Hash-SIMD-INIT"; +static const char *const OPTI_STR_SLOW_HASH_SIMD_INIT2 = "Slow-Hash-SIMD-INIT-2"; static const char *const OPTI_STR_SLOW_HASH_SIMD_LOOP = "Slow-Hash-SIMD-LOOP"; +static const char *const OPTI_STR_SLOW_HASH_SIMD_LOOP2 = "Slow-Hash-SIMD-LOOP-2"; static const char *const OPTI_STR_SLOW_HASH_SIMD_COMP = "Slow-Hash-SIMD-COMP"; static const char *const OPTI_STR_USES_BITS_8 = "Uses-8-Bit"; static const char *const OPTI_STR_USES_BITS_16 = "Uses-16-Bit"; @@ -1014,27 +1016,29 @@ const char *stroptitype (const u32 opti_type) { switch (opti_type) { - case OPTI_TYPE_OPTIMIZED_KERNEL: return OPTI_STR_OPTIMIZED_KERNEL; - case OPTI_TYPE_ZERO_BYTE: return OPTI_STR_ZERO_BYTE; - case OPTI_TYPE_PRECOMPUTE_INIT: return OPTI_STR_PRECOMPUTE_INIT; - case OPTI_TYPE_MEET_IN_MIDDLE: return OPTI_STR_MEET_IN_MIDDLE; - case OPTI_TYPE_EARLY_SKIP: return OPTI_STR_EARLY_SKIP; - case OPTI_TYPE_NOT_SALTED: return OPTI_STR_NOT_SALTED; - case OPTI_TYPE_NOT_ITERATED: return OPTI_STR_NOT_ITERATED; - case OPTI_TYPE_PREPENDED_SALT: return OPTI_STR_PREPENDED_SALT; - case OPTI_TYPE_APPENDED_SALT: return OPTI_STR_APPENDED_SALT; - case OPTI_TYPE_SINGLE_HASH: return OPTI_STR_SINGLE_HASH; - case OPTI_TYPE_SINGLE_SALT: return OPTI_STR_SINGLE_SALT; - case OPTI_TYPE_BRUTE_FORCE: return OPTI_STR_BRUTE_FORCE; - case OPTI_TYPE_RAW_HASH: return OPTI_STR_RAW_HASH; - case OPTI_TYPE_REGISTER_LIMIT: return OPTI_STR_REGISTER_LIMIT; - case OPTI_TYPE_SLOW_HASH_SIMD_INIT: return OPTI_STR_SLOW_HASH_SIMD_INIT; - case OPTI_TYPE_SLOW_HASH_SIMD_LOOP: return OPTI_STR_SLOW_HASH_SIMD_LOOP; - case OPTI_TYPE_SLOW_HASH_SIMD_COMP: return OPTI_STR_SLOW_HASH_SIMD_COMP; - case OPTI_TYPE_USES_BITS_8: return OPTI_STR_USES_BITS_8; - case OPTI_TYPE_USES_BITS_16: return OPTI_STR_USES_BITS_16; - case OPTI_TYPE_USES_BITS_32: return OPTI_STR_USES_BITS_32; - case OPTI_TYPE_USES_BITS_64: return OPTI_STR_USES_BITS_64; + case OPTI_TYPE_OPTIMIZED_KERNEL: return OPTI_STR_OPTIMIZED_KERNEL; + case OPTI_TYPE_ZERO_BYTE: return OPTI_STR_ZERO_BYTE; + case OPTI_TYPE_PRECOMPUTE_INIT: return OPTI_STR_PRECOMPUTE_INIT; + case OPTI_TYPE_MEET_IN_MIDDLE: return OPTI_STR_MEET_IN_MIDDLE; + case OPTI_TYPE_EARLY_SKIP: return OPTI_STR_EARLY_SKIP; + case OPTI_TYPE_NOT_SALTED: return OPTI_STR_NOT_SALTED; + case OPTI_TYPE_NOT_ITERATED: return OPTI_STR_NOT_ITERATED; + case OPTI_TYPE_PREPENDED_SALT: return OPTI_STR_PREPENDED_SALT; + case OPTI_TYPE_APPENDED_SALT: return OPTI_STR_APPENDED_SALT; + case OPTI_TYPE_SINGLE_HASH: return OPTI_STR_SINGLE_HASH; + case OPTI_TYPE_SINGLE_SALT: return OPTI_STR_SINGLE_SALT; + case OPTI_TYPE_BRUTE_FORCE: return OPTI_STR_BRUTE_FORCE; + case OPTI_TYPE_RAW_HASH: return OPTI_STR_RAW_HASH; + case OPTI_TYPE_REGISTER_LIMIT: return OPTI_STR_REGISTER_LIMIT; + case OPTI_TYPE_SLOW_HASH_SIMD_INIT: return OPTI_STR_SLOW_HASH_SIMD_INIT; + case OPTI_TYPE_SLOW_HASH_SIMD_INIT2: return OPTI_STR_SLOW_HASH_SIMD_INIT2; + case OPTI_TYPE_SLOW_HASH_SIMD_LOOP: return OPTI_STR_SLOW_HASH_SIMD_LOOP; + case OPTI_TYPE_SLOW_HASH_SIMD_LOOP2: return OPTI_STR_SLOW_HASH_SIMD_LOOP2; + case OPTI_TYPE_SLOW_HASH_SIMD_COMP: return OPTI_STR_SLOW_HASH_SIMD_COMP; + case OPTI_TYPE_USES_BITS_8: return OPTI_STR_USES_BITS_8; + case OPTI_TYPE_USES_BITS_16: return OPTI_STR_USES_BITS_16; + case OPTI_TYPE_USES_BITS_32: return OPTI_STR_USES_BITS_32; + case OPTI_TYPE_USES_BITS_64: return OPTI_STR_USES_BITS_64; } return NULL;