From 3022abf956b420d4058a838347179dedc8de32d3 Mon Sep 17 00:00:00 2001 From: Jens Steube Date: Sat, 11 Jun 2016 23:08:33 +0200 Subject: [PATCH] some axcrypt fixes --- OpenCL/inc_hash_constants.h | 3 ++- OpenCL/inc_hash_functions.cl | 2 +- OpenCL/inc_types.cl | 5 +++-- OpenCL/m13200.cl | 18 +++++------------- include/types.h | 3 +-- src/shared.c | 4 ++-- 6 files changed, 14 insertions(+), 21 deletions(-) diff --git a/OpenCL/inc_hash_constants.h b/OpenCL/inc_hash_constants.h index 5351445..d5f54f0 100644 --- a/OpenCL/inc_hash_constants.h +++ b/OpenCL/inc_hash_constants.h @@ -29,6 +29,7 @@ #define _PBKDF2_SHA512_ #define _RAR3_ #define _ZIP2_ +#define _AXCRYPT_ #endif #ifdef _SIPHASH_ @@ -55,7 +56,7 @@ #define BCRYPTM_5 0x6F756274u #endif -#if defined _SHA1_ || defined _SAPG_ || defined _OFFICE2007_ || defined _OFFICE2010_ || defined _OLDOFFICE34_ || defined _ANDROIDFDE_ || defined _DCC2_ || defined _WPA_ || defined _MD5_SHA1_ || defined _SHA1_MD5_ || defined _PSAFE2_ || defined _LOTUS8_ || defined _PBKDF2_SHA1_ || defined _RAR3_ || defined _SHA256_SHA1_ || defined _ZIP2_ +#if defined _SHA1_ || defined _SAPG_ || defined _OFFICE2007_ || defined _OFFICE2010_ || defined _OLDOFFICE34_ || defined _ANDROIDFDE_ || defined _DCC2_ || defined _WPA_ || defined _MD5_SHA1_ || defined _SHA1_MD5_ || defined _PSAFE2_ || defined _LOTUS8_ || defined _PBKDF2_SHA1_ || defined _RAR3_ || defined _SHA256_SHA1_ || defined _ZIP2_ || defined _AXCRYPT_ /** * SHA1 Constants */ diff --git a/OpenCL/inc_hash_functions.cl b/OpenCL/inc_hash_functions.cl index 0ccbb25..9e2a58d 100644 --- a/OpenCL/inc_hash_functions.cl +++ b/OpenCL/inc_hash_functions.cl @@ -119,7 +119,7 @@ } #endif -#if defined _SHA1_ || defined _SAPG_ || defined _OFFICE2007_ || defined _OFFICE2010_ || defined _OLDOFFICE34_ || defined _ANDROIDFDE_ || defined _DCC2_ || defined _WPA_ || defined _MD5_SHA1_ || defined _SHA1_MD5_ || defined _PSAFE2_ || defined _LOTUS8_ || defined _PBKDF2_SHA1_ || defined _RAR3_ || defined _SHA256_SHA1_ || defined _ZIP2_ +#if defined _SHA1_ || defined _SAPG_ || defined _OFFICE2007_ || defined _OFFICE2010_ || defined _OLDOFFICE34_ || defined _ANDROIDFDE_ || defined _DCC2_ || defined _WPA_ || defined _MD5_SHA1_ || defined _SHA1_MD5_ || defined _PSAFE2_ || defined _LOTUS8_ || defined _PBKDF2_SHA1_ || defined _RAR3_ || defined _SHA256_SHA1_ || defined _ZIP2_ || defined _AXCRYPT_ #ifdef IS_NV #define SHA1_F0(x,y,z) ((z) ^ ((x) & ((y) ^ (z)))) diff --git a/OpenCL/inc_types.cl b/OpenCL/inc_types.cl index 3bde5c1..75ba7ea 100644 --- a/OpenCL/inc_types.cl +++ b/OpenCL/inc_types.cl @@ -775,6 +775,8 @@ typedef struct u32 digest_buf[4]; #elif defined _ZIP2_ u32 digest_buf[4]; + #elif defined _AXCRYPT_ + u32 digest_buf[4]; #endif } digest_t; @@ -1366,8 +1368,7 @@ typedef struct typedef struct { - u32 KEK[5]; - + u32 KEK[4]; u32 lsb[4]; u32 cipher[4]; diff --git a/OpenCL/m13200.cl b/OpenCL/m13200.cl index a104b16..a84810d 100644 --- a/OpenCL/m13200.cl +++ b/OpenCL/m13200.cl @@ -5,7 +5,7 @@ * License.....: MIT */ -#define _SHA1_ +#define _AXCRYPT_ #include "inc_hash_constants.h" #include "inc_vendor.cl" @@ -988,28 +988,22 @@ __kernel void m13200_init (__global pw_t *pws, __global kernel_rule_t *rules_buf if (gid >= gid_max) return; u32 w0[4]; + u32 w1[4]; + u32 w2[4]; + u32 w3[4]; w0[0] = pws[gid].i[ 0]; w0[1] = pws[gid].i[ 1]; w0[2] = pws[gid].i[ 2]; w0[3] = pws[gid].i[ 3]; - - u32 w1[4]; - w1[0] = pws[gid].i[ 4]; w1[1] = pws[gid].i[ 5]; w1[2] = pws[gid].i[ 6]; w1[3] = pws[gid].i[ 7]; - - u32 w2[4]; - w2[0] = pws[gid].i[ 8]; w2[1] = pws[gid].i[ 9]; w2[2] = pws[gid].i[10]; w2[3] = pws[gid].i[11]; - - u32 w3[4]; - w3[0] = pws[gid].i[12]; w3[1] = pws[gid].i[13]; w3[2] = pws[gid].i[14]; @@ -1033,9 +1027,7 @@ __kernel void m13200_init (__global pw_t *pws, __global kernel_rule_t *rules_buf w2[3] = swap32 (w2[3]); w3[0] = swap32 (w3[0]); w3[1] = swap32 (w3[1]); - w3[2] = swap32 (w3[2]); - w3[3] = swap32 (w3[3]); - + w3[2] = 0; w3[3] = pw_len * 8; /** diff --git a/include/types.h b/include/types.h index a6a15dd..305b982 100644 --- a/include/types.h +++ b/include/types.h @@ -649,8 +649,7 @@ typedef struct typedef struct { - u32 KEK[5]; - + u32 KEK[4]; u32 lsb[4]; u32 cipher[4]; diff --git a/src/shared.c b/src/shared.c index df90e75..d987c09 100644 --- a/src/shared.c +++ b/src/shared.c @@ -11983,13 +11983,13 @@ int sha1axcrypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf) u32 *digest = (u32 *) hash_buf->digest; - input_buf +=14; + input_buf += 14; digest[0] = hex_to_u32 ((const u8 *) &input_buf[ 0]); digest[1] = hex_to_u32 ((const u8 *) &input_buf[ 8]); digest[2] = hex_to_u32 ((const u8 *) &input_buf[16]); digest[3] = hex_to_u32 ((const u8 *) &input_buf[24]); - digest[4] = 0x00000000; + digest[4] = 0; return (PARSER_OK); } -- 2.25.1