diff --git a/OpenCL/m19811-pure.cl b/OpenCL/m19811-pure.cl index a9064ec56..b4a16e030 100644 --- a/OpenCL/m19811-pure.cl +++ b/OpenCL/m19811-pure.cl @@ -380,6 +380,8 @@ KERNEL_FQ void m19811_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcrypt if (gid >= gid_max) return; + #define il_pos 0 + u32 ukey1[8]; ukey1[0] = hc_swap32_S (h32_from_64_S (tmps[gid].out[0])); @@ -402,8 +404,6 @@ KERNEL_FQ void m19811_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcrypt ukey2[6] = hc_swap32_S (h32_from_64_S (tmps[gid].out[7])); ukey2[7] = hc_swap32_S (l32_from_64_S (tmps[gid].out[7])); - #define il_pos 0 - if (dcrp_verify_header_aes (digests_buf[digests_offset].digest_buf, ukey1, ukey2, s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4) == 1) { if (atomic_inc (&hashes_shown[digests_offset]) == 0) diff --git a/OpenCL/m19812-pure.cl b/OpenCL/m19812-pure.cl index 9db8aec11..a2939221b 100644 --- a/OpenCL/m19812-pure.cl +++ b/OpenCL/m19812-pure.cl @@ -380,6 +380,8 @@ KERNEL_FQ void m19812_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcrypt if (gid >= gid_max) return; + #define il_pos 0 + u32 ukey1[8]; ukey1[0] = hc_swap32_S (h32_from_64_S (tmps[gid].out[0])); @@ -402,8 +404,6 @@ KERNEL_FQ void m19812_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcrypt ukey2[6] = hc_swap32_S (h32_from_64_S (tmps[gid].out[7])); ukey2[7] = hc_swap32_S (l32_from_64_S (tmps[gid].out[7])); - #define il_pos 0 - if (dcrp_verify_header_aes (digests_buf[digests_offset].digest_buf, ukey1, ukey2, s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4) == 1) { if (atomic_inc (&hashes_shown[digests_offset]) == 0) @@ -427,4 +427,50 @@ KERNEL_FQ void m19812_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcrypt mark_hash (plains_buf, d_return_buf, salt_pos, digests_cnt, 0, digests_offset, gid, il_pos, 0, 0); } } + + u32 ukey3[8]; + + ukey3[0] = hc_swap32_S (h32_from_64_S (tmps[gid].out[ 8])); + ukey3[1] = hc_swap32_S (l32_from_64_S (tmps[gid].out[ 8])); + ukey3[2] = hc_swap32_S (h32_from_64_S (tmps[gid].out[ 9])); + ukey3[3] = hc_swap32_S (l32_from_64_S (tmps[gid].out[ 9])); + ukey3[4] = hc_swap32_S (h32_from_64_S (tmps[gid].out[10])); + ukey3[5] = hc_swap32_S (l32_from_64_S (tmps[gid].out[10])); + ukey3[6] = hc_swap32_S (h32_from_64_S (tmps[gid].out[11])); + ukey3[7] = hc_swap32_S (l32_from_64_S (tmps[gid].out[11])); + + u32 ukey4[8]; + + ukey4[0] = hc_swap32_S (h32_from_64_S (tmps[gid].out[12])); + ukey4[1] = hc_swap32_S (l32_from_64_S (tmps[gid].out[12])); + ukey4[2] = hc_swap32_S (h32_from_64_S (tmps[gid].out[13])); + ukey4[3] = hc_swap32_S (l32_from_64_S (tmps[gid].out[13])); + ukey4[4] = hc_swap32_S (h32_from_64_S (tmps[gid].out[14])); + ukey4[5] = hc_swap32_S (l32_from_64_S (tmps[gid].out[14])); + ukey4[6] = hc_swap32_S (h32_from_64_S (tmps[gid].out[15])); + ukey4[7] = hc_swap32_S (l32_from_64_S (tmps[gid].out[15])); + + if (dcrp_verify_header_aes_twofish (digests_buf[digests_offset].digest_buf, ukey1, ukey2, ukey3, ukey4, s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4) == 1) + { + if (atomic_inc (&hashes_shown[digests_offset]) == 0) + { + mark_hash (plains_buf, d_return_buf, salt_pos, digests_cnt, 0, digests_offset, gid, il_pos, 0, 0); + } + } + + if (dcrp_verify_header_serpent_aes (digests_buf[digests_offset].digest_buf, ukey1, ukey2, ukey3, ukey4, s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4) == 1) + { + if (atomic_inc (&hashes_shown[digests_offset]) == 0) + { + mark_hash (plains_buf, d_return_buf, salt_pos, digests_cnt, 0, digests_offset, gid, il_pos, 0, 0); + } + } + + if (dcrp_verify_header_twofish_serpent (digests_buf[digests_offset].digest_buf, ukey1, ukey2, ukey3, ukey4) == 1) + { + if (atomic_inc (&hashes_shown[digests_offset]) == 0) + { + mark_hash (plains_buf, d_return_buf, salt_pos, digests_cnt, 0, digests_offset, gid, il_pos, 0, 0); + } + } } diff --git a/OpenCL/m19813-pure.cl b/OpenCL/m19813-pure.cl index ff2a0cdaf..c5e37e97e 100644 --- a/OpenCL/m19813-pure.cl +++ b/OpenCL/m19813-pure.cl @@ -380,6 +380,8 @@ KERNEL_FQ void m19813_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcrypt if (gid >= gid_max) return; + #define il_pos 0 + u32 ukey1[8]; ukey1[0] = hc_swap32_S (h32_from_64_S (tmps[gid].out[0])); @@ -402,8 +404,6 @@ KERNEL_FQ void m19813_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcrypt ukey2[6] = hc_swap32_S (h32_from_64_S (tmps[gid].out[7])); ukey2[7] = hc_swap32_S (l32_from_64_S (tmps[gid].out[7])); - #define il_pos 0 - if (dcrp_verify_header_aes (digests_buf[digests_offset].digest_buf, ukey1, ukey2, s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4) == 1) { if (atomic_inc (&hashes_shown[digests_offset]) == 0) @@ -427,4 +427,88 @@ KERNEL_FQ void m19813_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcrypt mark_hash (plains_buf, d_return_buf, salt_pos, digests_cnt, 0, digests_offset, gid, il_pos, 0, 0); } } + + u32 ukey3[8]; + + ukey3[0] = hc_swap32_S (h32_from_64_S (tmps[gid].out[ 8])); + ukey3[1] = hc_swap32_S (l32_from_64_S (tmps[gid].out[ 8])); + ukey3[2] = hc_swap32_S (h32_from_64_S (tmps[gid].out[ 9])); + ukey3[3] = hc_swap32_S (l32_from_64_S (tmps[gid].out[ 9])); + ukey3[4] = hc_swap32_S (h32_from_64_S (tmps[gid].out[10])); + ukey3[5] = hc_swap32_S (l32_from_64_S (tmps[gid].out[10])); + ukey3[6] = hc_swap32_S (h32_from_64_S (tmps[gid].out[11])); + ukey3[7] = hc_swap32_S (l32_from_64_S (tmps[gid].out[11])); + + u32 ukey4[8]; + + ukey4[0] = hc_swap32_S (h32_from_64_S (tmps[gid].out[12])); + ukey4[1] = hc_swap32_S (l32_from_64_S (tmps[gid].out[12])); + ukey4[2] = hc_swap32_S (h32_from_64_S (tmps[gid].out[13])); + ukey4[3] = hc_swap32_S (l32_from_64_S (tmps[gid].out[13])); + ukey4[4] = hc_swap32_S (h32_from_64_S (tmps[gid].out[14])); + ukey4[5] = hc_swap32_S (l32_from_64_S (tmps[gid].out[14])); + ukey4[6] = hc_swap32_S (h32_from_64_S (tmps[gid].out[15])); + ukey4[7] = hc_swap32_S (l32_from_64_S (tmps[gid].out[15])); + + if (dcrp_verify_header_aes_twofish (digests_buf[digests_offset].digest_buf, ukey1, ukey2, ukey3, ukey4, s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4) == 1) + { + if (atomic_inc (&hashes_shown[digests_offset]) == 0) + { + mark_hash (plains_buf, d_return_buf, salt_pos, digests_cnt, 0, digests_offset, gid, il_pos, 0, 0); + } + } + + if (dcrp_verify_header_serpent_aes (digests_buf[digests_offset].digest_buf, ukey1, ukey2, ukey3, ukey4, s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4) == 1) + { + if (atomic_inc (&hashes_shown[digests_offset]) == 0) + { + mark_hash (plains_buf, d_return_buf, salt_pos, digests_cnt, 0, digests_offset, gid, il_pos, 0, 0); + } + } + + if (dcrp_verify_header_twofish_serpent (digests_buf[digests_offset].digest_buf, ukey1, ukey2, ukey3, ukey4) == 1) + { + if (atomic_inc (&hashes_shown[digests_offset]) == 0) + { + mark_hash (plains_buf, d_return_buf, salt_pos, digests_cnt, 0, digests_offset, gid, il_pos, 0, 0); + } + } + + u32 ukey5[8]; + + ukey5[0] = hc_swap32_S (h32_from_64_S (tmps[gid].out[16])); + ukey5[1] = hc_swap32_S (l32_from_64_S (tmps[gid].out[16])); + ukey5[2] = hc_swap32_S (h32_from_64_S (tmps[gid].out[17])); + ukey5[3] = hc_swap32_S (l32_from_64_S (tmps[gid].out[17])); + ukey5[4] = hc_swap32_S (h32_from_64_S (tmps[gid].out[18])); + ukey5[5] = hc_swap32_S (l32_from_64_S (tmps[gid].out[18])); + ukey5[6] = hc_swap32_S (h32_from_64_S (tmps[gid].out[19])); + ukey5[7] = hc_swap32_S (l32_from_64_S (tmps[gid].out[19])); + + u32 ukey6[8]; + + ukey6[0] = hc_swap32_S (h32_from_64_S (tmps[gid].out[20])); + ukey6[1] = hc_swap32_S (l32_from_64_S (tmps[gid].out[20])); + ukey6[2] = hc_swap32_S (h32_from_64_S (tmps[gid].out[21])); + ukey6[3] = hc_swap32_S (l32_from_64_S (tmps[gid].out[21])); + ukey6[4] = hc_swap32_S (h32_from_64_S (tmps[gid].out[22])); + ukey6[5] = hc_swap32_S (l32_from_64_S (tmps[gid].out[22])); + ukey6[6] = hc_swap32_S (h32_from_64_S (tmps[gid].out[23])); + ukey6[7] = hc_swap32_S (l32_from_64_S (tmps[gid].out[23])); + + if (dcrp_verify_header_aes_twofish_serpent (digests_buf[digests_offset].digest_buf, ukey1, ukey2, ukey3, ukey4, ukey5, ukey6, s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4) == 1) + { + if (atomic_inc (&hashes_shown[digests_offset]) == 0) + { + mark_hash (plains_buf, d_return_buf, salt_pos, digests_cnt, 0, digests_offset, gid, il_pos, 0, 0); + } + } + + if (dcrp_verify_header_serpent_twofish_aes (digests_buf[digests_offset].digest_buf, ukey1, ukey2, ukey3, ukey4, ukey5, ukey6, s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4) == 1) + { + if (atomic_inc (&hashes_shown[digests_offset]) == 0) + { + mark_hash (plains_buf, d_return_buf, salt_pos, digests_cnt, 0, digests_offset, gid, il_pos, 0, 0); + } + } }