1
0
mirror of https://github.com/hashcat/hashcat.git synced 2025-06-05 15:48:48 +00:00

Small optimizations in -m 15300 and -m 15900

This commit is contained in:
Jens Steube 2020-02-22 09:11:04 +01:00
parent 669619c1a7
commit 09b8a30da2
2 changed files with 48 additions and 82 deletions

View File

@ -511,25 +511,6 @@ KERNEL_FQ void m15300_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t))
if (wx_off == 24) break; if (wx_off == 24) break;
} }
u32 hmacSalt[4];
u32 expectedHmac[4];
u32 lastKey[16];
hmacSalt[0] = hc_swap32_S (decrypted[0]);
hmacSalt[1] = hc_swap32_S (decrypted[1]);
hmacSalt[2] = hc_swap32_S (decrypted[2]);
hmacSalt[3] = hc_swap32_S (decrypted[3]);
expectedHmac[0] = hc_swap32_S (decrypted[4 + 0]);
expectedHmac[1] = hc_swap32_S (decrypted[4 + 1]);
expectedHmac[2] = hc_swap32_S (decrypted[4 + 2]);
expectedHmac[3] = hc_swap32_S (decrypted[4 + 3]);
for (int i = 0; i < 16; i++)
{
lastKey[i] = decrypted[i + 26 - 16];
}
w0[0] = tmps[gid].userKey[0]; w0[0] = tmps[gid].userKey[0];
w0[1] = tmps[gid].userKey[1]; w0[1] = tmps[gid].userKey[1];
w0[2] = tmps[gid].userKey[2]; w0[2] = tmps[gid].userKey[2];
@ -551,10 +532,10 @@ KERNEL_FQ void m15300_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t))
sha1_hmac_init_64 (&ctx, w0, w1, w2, w3); sha1_hmac_init_64 (&ctx, w0, w1, w2, w3);
w0[0] = hmacSalt[0]; w0[0] = hc_swap32_S (decrypted[0]);
w0[1] = hmacSalt[1]; w0[1] = hc_swap32_S (decrypted[1]);
w0[2] = hmacSalt[2]; w0[2] = hc_swap32_S (decrypted[2]);
w0[3] = hmacSalt[3]; w0[3] = hc_swap32_S (decrypted[3]);
w1[0] = 0; w1[0] = 0;
w1[1] = 0; w1[1] = 0;
w1[2] = 0; w1[2] = 0;
@ -591,22 +572,22 @@ KERNEL_FQ void m15300_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t))
sha1_hmac_init_64 (&ctx, w0, w1, w2, w3); sha1_hmac_init_64 (&ctx, w0, w1, w2, w3);
w0[0] = hc_swap32_S (lastKey[ 0]); w0[0] = hc_swap32_S (decrypted[10]);
w0[1] = hc_swap32_S (lastKey[ 1]); w0[1] = hc_swap32_S (decrypted[11]);
w0[2] = hc_swap32_S (lastKey[ 2]); w0[2] = hc_swap32_S (decrypted[12]);
w0[3] = hc_swap32_S (lastKey[ 3]); w0[3] = hc_swap32_S (decrypted[13]);
w1[0] = hc_swap32_S (lastKey[ 4]); w1[0] = hc_swap32_S (decrypted[14]);
w1[1] = hc_swap32_S (lastKey[ 5]); w1[1] = hc_swap32_S (decrypted[15]);
w1[2] = hc_swap32_S (lastKey[ 6]); w1[2] = hc_swap32_S (decrypted[16]);
w1[3] = hc_swap32_S (lastKey[ 7]); w1[3] = hc_swap32_S (decrypted[17]);
w2[0] = hc_swap32_S (lastKey[ 8]); w2[0] = hc_swap32_S (decrypted[18]);
w2[1] = hc_swap32_S (lastKey[ 9]); w2[1] = hc_swap32_S (decrypted[19]);
w2[2] = hc_swap32_S (lastKey[10]); w2[2] = hc_swap32_S (decrypted[20]);
w2[3] = hc_swap32_S (lastKey[11]); w2[3] = hc_swap32_S (decrypted[21]);
w3[0] = hc_swap32_S (lastKey[12]); w3[0] = hc_swap32_S (decrypted[22]);
w3[1] = hc_swap32_S (lastKey[13]); w3[1] = hc_swap32_S (decrypted[23]);
w3[2] = hc_swap32_S (lastKey[14]); w3[2] = hc_swap32_S (decrypted[24]);
w3[3] = hc_swap32_S (lastKey[15]); w3[3] = hc_swap32_S (decrypted[25]);
sha1_hmac_update_64 (&ctx, w0, w1, w2, w3, 64); sha1_hmac_update_64 (&ctx, w0, w1, w2, w3, 64);
@ -614,10 +595,10 @@ KERNEL_FQ void m15300_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t))
#define il_pos 0 #define il_pos 0
if ((expectedHmac[0] == ctx.opad.h[0]) if ((decrypted[4] == hc_swap32_S (ctx.opad.h[0]))
&& (expectedHmac[1] == ctx.opad.h[1]) && (decrypted[5] == hc_swap32_S (ctx.opad.h[1]))
&& (expectedHmac[2] == ctx.opad.h[2]) && (decrypted[6] == hc_swap32_S (ctx.opad.h[2]))
&& (expectedHmac[3] == ctx.opad.h[3])) && (decrypted[7] == hc_swap32_S (ctx.opad.h[3])))
{ {
if (atomic_inc (&hashes_shown[digests_offset]) == 0) if (atomic_inc (&hashes_shown[digests_offset]) == 0)
{ {

View File

@ -637,21 +637,6 @@ KERNEL_FQ void m15900_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t))
if (contents_off == 32) break; if (contents_off == 32) break;
} }
u32 hmacSalt[4];
u32 expectedHmac[16];
u32 lastKey[16];
hmacSalt[0] = decrypted[0];
hmacSalt[1] = decrypted[1];
hmacSalt[2] = decrypted[2];
hmacSalt[3] = decrypted[3];
for(int i = 0; i < 16; i++)
{
expectedHmac[i] = decrypted[i + 4];
lastKey[i] = decrypted[i + 36 - 16];
}
w0[0] = tmps[gid].userKey[0]; w0[0] = tmps[gid].userKey[0];
w0[1] = tmps[gid].userKey[1]; w0[1] = tmps[gid].userKey[1];
w0[2] = tmps[gid].userKey[2]; w0[2] = tmps[gid].userKey[2];
@ -689,10 +674,10 @@ KERNEL_FQ void m15900_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t))
sha512_hmac_init_128 (&ctx, w0, w1, w2, w3, w4, w5, w6, w7); sha512_hmac_init_128 (&ctx, w0, w1, w2, w3, w4, w5, w6, w7);
w0[0] = hmacSalt[0]; w0[0] = decrypted[0];
w0[1] = hmacSalt[1]; w0[1] = decrypted[1];
w0[2] = hmacSalt[2]; w0[2] = decrypted[2];
w0[3] = hmacSalt[3]; w0[3] = decrypted[3];
w1[0] = 0; w1[0] = 0;
w1[1] = 0; w1[1] = 0;
w1[2] = 0; w1[2] = 0;
@ -761,22 +746,22 @@ KERNEL_FQ void m15900_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t))
sha512_hmac_init_128 (&ctx, w0, w1, w2, w3, w4, w5, w6, w7); sha512_hmac_init_128 (&ctx, w0, w1, w2, w3, w4, w5, w6, w7);
w0[0] = lastKey[ 0]; w0[0] = decrypted[20];
w0[1] = lastKey[ 1]; w0[1] = decrypted[21];
w0[2] = lastKey[ 2]; w0[2] = decrypted[22];
w0[3] = lastKey[ 3]; w0[3] = decrypted[23];
w1[0] = lastKey[ 4]; w1[0] = decrypted[24];
w1[1] = lastKey[ 5]; w1[1] = decrypted[25];
w1[2] = lastKey[ 6]; w1[2] = decrypted[26];
w1[3] = lastKey[ 7]; w1[3] = decrypted[27];
w2[0] = lastKey[ 8]; w2[0] = decrypted[28];
w2[1] = lastKey[ 9]; w2[1] = decrypted[29];
w2[2] = lastKey[10]; w2[2] = decrypted[30];
w2[3] = lastKey[11]; w2[3] = decrypted[31];
w3[0] = lastKey[12]; w3[0] = decrypted[32];
w3[1] = lastKey[13]; w3[1] = decrypted[33];
w3[2] = lastKey[14]; w3[2] = decrypted[34];
w3[3] = lastKey[15]; w3[3] = decrypted[35];
w4[0] = 0; w4[0] = 0;
w4[1] = 0; w4[1] = 0;
w4[2] = 0; w4[2] = 0;
@ -800,10 +785,10 @@ KERNEL_FQ void m15900_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t))
#define il_pos 0 #define il_pos 0
if ((expectedHmac[0] == h32_from_64_S (ctx.opad.h[0])) if ((decrypted[4] == h32_from_64_S (ctx.opad.h[0]))
&& (expectedHmac[1] == l32_from_64_S (ctx.opad.h[0])) && (decrypted[5] == l32_from_64_S (ctx.opad.h[0]))
&& (expectedHmac[2] == h32_from_64_S (ctx.opad.h[1])) && (decrypted[6] == h32_from_64_S (ctx.opad.h[1]))
&& (expectedHmac[3] == l32_from_64_S (ctx.opad.h[1]))) && (decrypted[7] == l32_from_64_S (ctx.opad.h[1])))
{ {
if (atomic_inc (&hashes_shown[digests_offset]) == 0) if (atomic_inc (&hashes_shown[digests_offset]) == 0)
{ {