Fix mode 100 attack 3 with mangling
[hashcat.git] / OpenCL / m00100_a3_m.cl
index 99451fb..32bbd63 100644 (file)
@@ -41,22 +41,22 @@ void m00100m (u32 w[16], const u32 pw_len, __global pw_t *pws, __global kernel_r
 
     //const u32x w0 = w0l | w0r;
 
-    w0[0] = w0l | w0r;
-    w0[1] = w[1];
-    w0[2] = w[2];
-    w0[3] = w[3];
-    w1[0] = w[4];
-    w1[1] = w[5];
-    w1[2] = w[6];
-    w1[3] = w[7];
-    w2[0] = w[8];
-    w2[1] = w[9];
-    w2[2] = w[10];
-    w2[3] = w[11];
-    w3[0] = w[12];
-    w3[1] = w[13];
-    w3[2] = w[14];
-    w3[3] = w[15];
+    w0[0] = swap32 (w0l | w0r);
+    w0[1] = swap32 (w[1]);
+    w0[2] = swap32 (w[2]);
+    w0[3] = swap32 (w[3]);
+    w1[0] = swap32 (w[4]);
+    w1[1] = swap32 (w[5]);
+    w1[2] = swap32 (w[6]);
+    w1[3] = swap32 (w[7]);
+    w2[0] = swap32 (w[8]);
+    w2[1] = swap32 (w[9]);
+    w2[2] = swap32 (w[10]);
+    w2[3] = swap32 (w[11]);
+    w3[0] = swap32 (w[12]);
+    w3[1] = swap32 (w[13]);
+    w3[2] = swap32 (w[14]);
+    w3[3] = swap32 (w[15]);
 
     const u32 out_len = mangle(w0, w1, pw_len);
     append_0x80_2x4_VV (w0, w1, out_len);
@@ -179,15 +179,12 @@ void m00100m (u32 w[16], const u32 pw_len, __global pw_t *pws, __global kernel_r
     w9_t = rotl32 ((w6_t ^ w1_t ^ wb_t ^ w9_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w9_t);
     wa_t = rotl32 ((w7_t ^ w2_t ^ wc_t ^ wa_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, wa_t);
     wb_t = rotl32 ((w8_t ^ w3_t ^ wd_t ^ wb_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, wb_t);
-
-    //if (MATCHES_NONE_VS (e, e_rev)) continue;
-
     wc_t = rotl32 ((w9_t ^ w4_t ^ we_t ^ wc_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wc_t);
     wd_t = rotl32 ((wa_t ^ w5_t ^ wf_t ^ wd_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, wd_t);
     we_t = rotl32 ((wb_t ^ w6_t ^ w0_t ^ we_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, we_t);
     wf_t = rotl32 ((wc_t ^ w7_t ^ w1_t ^ wf_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, wf_t);
 
-    COMPARE_S_SIMD (d, e, c, b);
+    COMPARE_M_SIMD (d, e, c, b);
   }
 }