1
0
mirror of https://github.com/hashcat/hashcat.git synced 2025-07-20 21:48:19 +00:00

Merge pull request #4301 from matrix/fix_33800

fix build errors with 33800
This commit is contained in:
hashcat-bot 2025-07-10 18:45:13 +02:00 committed by GitHub
commit c63b810e86
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1155,64 +1155,205 @@ KERNEL_FQ KERNEL_FA void m33800_init2 (KERN_ATTR_TMPS (bcrypt_tmp_t))
KERNEL_FQ KERNEL_FA void m33800_loop2 (KERN_ATTR_TMPS (bcrypt_tmp_t)) KERNEL_FQ KERNEL_FA void m33800_loop2 (KERN_ATTR_TMPS (bcrypt_tmp_t))
{ {
// the second loop is the same as the first one, only different "password" in init2 /**
#if defined IS_CUDA || defined IS_HIP * base
m33800_loop( */
pws,
g_rules_buf, const u64 gid = get_global_id (0);
combs_buf, const u64 lid = get_local_id (0);
g_bfs_buf,
tmps, if (gid >= GID_CNT) return;
hooks,
bitmaps_buf_s1_a, // load
bitmaps_buf_s1_b,
bitmaps_buf_s1_c, u32 E[18];
bitmaps_buf_s1_d,
bitmaps_buf_s2_a, for (u32 i = 0; i < 18; i++)
bitmaps_buf_s2_b, {
bitmaps_buf_s2_c, E[i] = tmps[gid].E[i];
bitmaps_buf_s2_d, }
plains_buf,
digests_buf, u32 P[18];
hashes_shown,
salt_bufs, for (u32 i = 0; i < 18; i++)
esalt_bufs, {
d_return_buf, P[i] = tmps[gid].P[i];
d_extra0_buf, }
d_extra1_buf,
d_extra2_buf, #ifdef DYNAMIC_LOCAL
d_extra3_buf, // from host
kernel_param #else
); LOCAL_VK u32 S0_all[FIXED_LOCAL_SIZE][256];
#else LOCAL_VK u32 S1_all[FIXED_LOCAL_SIZE][256];
m33800_loop( LOCAL_VK u32 S2_all[FIXED_LOCAL_SIZE][256];
pws, LOCAL_VK u32 S3_all[FIXED_LOCAL_SIZE][256];
rules_buf, #endif
combs_buf,
bfs_buf, #ifdef BCRYPT_AVOID_BANK_CONFLICTS
tmps, LOCAL_AS u32 *S0 = S + (FIXED_LOCAL_SIZE * 256 * 0);
hooks, LOCAL_AS u32 *S1 = S + (FIXED_LOCAL_SIZE * 256 * 1);
bitmaps_buf_s1_a, LOCAL_AS u32 *S2 = S + (FIXED_LOCAL_SIZE * 256 * 2);
bitmaps_buf_s1_b, LOCAL_AS u32 *S3 = S + (FIXED_LOCAL_SIZE * 256 * 3);
bitmaps_buf_s1_c, #else
bitmaps_buf_s1_d, LOCAL_AS u32 *S0 = S0_all[lid];
bitmaps_buf_s2_a, LOCAL_AS u32 *S1 = S1_all[lid];
bitmaps_buf_s2_b, LOCAL_AS u32 *S2 = S2_all[lid];
bitmaps_buf_s2_c, LOCAL_AS u32 *S3 = S3_all[lid];
bitmaps_buf_s2_d, #endif
plains_buf,
digests_buf, for (u32 i = 0; i < 256; i++)
hashes_shown, {
salt_bufs, SET_KEY32 (S0, i, tmps[gid].S0[i]);
esalt_bufs, SET_KEY32 (S1, i, tmps[gid].S1[i]);
d_return_buf, SET_KEY32 (S2, i, tmps[gid].S2[i]);
d_extra0_buf, SET_KEY32 (S3, i, tmps[gid].S3[i]);
d_extra1_buf, }
d_extra2_buf,
d_extra3_buf, /**
kernel_param * salt
); */
#endif
u32 salt_buf[4];
salt_buf[0] = salt_bufs[SALT_POS_HOST].salt_buf[0];
salt_buf[1] = salt_bufs[SALT_POS_HOST].salt_buf[1];
salt_buf[2] = salt_bufs[SALT_POS_HOST].salt_buf[2];
salt_buf[3] = salt_bufs[SALT_POS_HOST].salt_buf[3];
/**
* main loop
*/
u32 L0;
u32 R0;
for (u32 i = 0; i < LOOP_CNT; i++)
{
for (u32 i = 0; i < 18; i++)
{
P[i] ^= E[i];
}
L0 = 0;
R0 = 0;
for (u32 i = 0; i < 9; i++)
{
BF_ENCRYPT (L0, R0);
P[i * 2 + 0] = L0;
P[i * 2 + 1] = R0;
}
for (u32 i = 0; i < 256; i += 2)
{
BF_ENCRYPT (L0, R0);
SET_KEY32 (S0, i + 0, L0);
SET_KEY32 (S0, i + 1, R0);
}
for (u32 i = 0; i < 256; i += 2)
{
BF_ENCRYPT (L0, R0);
SET_KEY32 (S1, i + 0, L0);
SET_KEY32 (S1, i + 1, R0);
}
for (u32 i = 0; i < 256; i += 2)
{
BF_ENCRYPT (L0, R0);
SET_KEY32 (S2, i + 0, L0);
SET_KEY32 (S2, i + 1, R0);
}
for (u32 i = 0; i < 256; i += 2)
{
BF_ENCRYPT (L0, R0);
SET_KEY32 (S3, i + 0, L0);
SET_KEY32 (S3, i + 1, R0);
}
P[ 0] ^= salt_buf[0];
P[ 1] ^= salt_buf[1];
P[ 2] ^= salt_buf[2];
P[ 3] ^= salt_buf[3];
P[ 4] ^= salt_buf[0];
P[ 5] ^= salt_buf[1];
P[ 6] ^= salt_buf[2];
P[ 7] ^= salt_buf[3];
P[ 8] ^= salt_buf[0];
P[ 9] ^= salt_buf[1];
P[10] ^= salt_buf[2];
P[11] ^= salt_buf[3];
P[12] ^= salt_buf[0];
P[13] ^= salt_buf[1];
P[14] ^= salt_buf[2];
P[15] ^= salt_buf[3];
P[16] ^= salt_buf[0];
P[17] ^= salt_buf[1];
L0 = 0;
R0 = 0;
for (u32 i = 0; i < 9; i++)
{
BF_ENCRYPT (L0, R0);
P[i * 2 + 0] = L0;
P[i * 2 + 1] = R0;
}
for (u32 i = 0; i < 256; i += 2)
{
BF_ENCRYPT (L0, R0);
SET_KEY32 (S0, i + 0, L0);
SET_KEY32 (S0, i + 1, R0);
}
for (u32 i = 0; i < 256; i += 2)
{
BF_ENCRYPT (L0, R0);
SET_KEY32 (S1, i + 0, L0);
SET_KEY32 (S1, i + 1, R0);
}
for (u32 i = 0; i < 256; i += 2)
{
BF_ENCRYPT (L0, R0);
SET_KEY32 (S2, i + 0, L0);
SET_KEY32 (S2, i + 1, R0);
}
for (u32 i = 0; i < 256; i += 2)
{
BF_ENCRYPT (L0, R0);
SET_KEY32 (S3, i + 0, L0);
SET_KEY32 (S3, i + 1, R0);
}
}
// store
for (u32 i = 0; i < 18; i++)
{
tmps[gid].P[i] = P[i];
}
for (u32 i = 0; i < 256; i++)
{
tmps[gid].S0[i] = GET_KEY32 (S0, i);
tmps[gid].S1[i] = GET_KEY32 (S1, i);
tmps[gid].S2[i] = GET_KEY32 (S2, i);
tmps[gid].S3[i] = GET_KEY32 (S3, i);
}
} }
KERNEL_FQ KERNEL_FA void m33800_comp (KERN_ATTR_TMPS (bcrypt_tmp_t)) KERNEL_FQ KERNEL_FA void m33800_comp (KERN_ATTR_TMPS (bcrypt_tmp_t))