some axcrypt fixes
authorJens Steube <jens.steube@gmail.com>
Sat, 11 Jun 2016 21:08:33 +0000 (23:08 +0200)
committerJens Steube <jens.steube@gmail.com>
Sat, 11 Jun 2016 21:08:33 +0000 (23:08 +0200)
OpenCL/inc_hash_constants.h
OpenCL/inc_hash_functions.cl
OpenCL/inc_types.cl
OpenCL/m13200.cl
include/types.h
src/shared.c

index 5351445..d5f54f0 100644 (file)
@@ -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
  */
index 0ccbb25..9e2a58d 100644 (file)
 }
 #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))))
index 3bde5c1..75ba7ea 100644 (file)
@@ -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];
 
index a104b16..a84810d 100644 (file)
@@ -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;
 
   /**
index a6a15dd..305b982 100644 (file)
@@ -649,8 +649,7 @@ typedef struct
 
 typedef struct
 {
-  u32 KEK[5];
-
+  u32 KEK[4];
   u32 lsb[4];
   u32 cipher[4];
 
index df90e75..d987c09 100644 (file)
@@ -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);
 }