mirror of
https://github.com/hashcat/hashcat.git
synced 2024-11-26 18:08:20 +00:00
Fixed false negative in all VeraCrypt hash-modes if both conditions are met: 1. use CPU for cracking and 2. PIM range was used
This commit is contained in:
parent
92dc57df28
commit
777512e862
@ -1049,6 +1049,18 @@
|
|||||||
#define MATCHES_NONE_VV(a,b) !(MATCHES_ONE_VV ((a), (b)))
|
#define MATCHES_NONE_VV(a,b) !(MATCHES_ONE_VV ((a), (b)))
|
||||||
#define MATCHES_NONE_VS(a,b) !(MATCHES_ONE_VS ((a), (b)))
|
#define MATCHES_NONE_VS(a,b) !(MATCHES_ONE_VS ((a), (b)))
|
||||||
|
|
||||||
|
#if VECT_SIZE == 1
|
||||||
|
#define pack(arr,var,gid,idx) make_u32x ((arr)[((gid) * 1) + 0].var)
|
||||||
|
#elif VECT_SIZE == 2
|
||||||
|
#define pack(arr,var,gid,idx) make_u32x ((arr)[((gid) * 2) + 0].var, (arr)[((gid) * 2) + 1].var)
|
||||||
|
#elif VECT_SIZE == 4
|
||||||
|
#define pack(arr,var,gid,idx) make_u32x ((arr)[((gid) * 4) + 0].var, (arr)[((gid) * 4) + 1].var, (arr)[((gid) * 4) + 2].var, (arr)[((gid) * 4) + 3].var)
|
||||||
|
#elif VECT_SIZE == 8
|
||||||
|
#define pack(arr,var,gid,idx) make_u32x ((arr)[((gid) * 8) + 0].var, (arr)[((gid) * 8) + 1].var, (arr)[((gid) * 8) + 2].var, (arr)[((gid) * 8) + 3].var, (arr)[((gid) * 8) + 4].var, (arr)[((gid) * 8) + 5].var, (arr)[((gid) * 8) + 6].var, (arr)[((gid) * 8) + 7].var)
|
||||||
|
#elif VECT_SIZE == 16
|
||||||
|
#define pack(arr,var,gid,idx) make_u32x ((arr)[((gid) * 16) + 0].var, (arr)[((gid) * 16) + 1].var, (arr)[((gid) * 16) + 2].var, (arr)[((gid) * 16) + 3].var, (arr)[((gid) * 16) + 4].var, (arr)[((gid) * 16) + 5].var, (arr)[((gid) * 16) + 6].var, (arr)[((gid) * 16) + 7].var, (arr)[((gid) * 16) + 8].var, (arr)[((gid) * 16) + 9].var, (arr)[((gid) * 16) + 10].var, (arr)[((gid) * 16) + 11].var, (arr)[((gid) * 16) + 12].var, (arr)[((gid) * 16) + 13].var, (arr)[((gid) * 16) + 14].var, (arr)[((gid) * 16) + 15].var)
|
||||||
|
#endif
|
||||||
|
|
||||||
#if VECT_SIZE == 1
|
#if VECT_SIZE == 1
|
||||||
#define packv(arr,var,gid,idx) make_u32x ((arr)[((gid) * 1) + 0].var[(idx)])
|
#define packv(arr,var,gid,idx) make_u32x ((arr)[((gid) * 1) + 0].var[(idx)])
|
||||||
#elif VECT_SIZE == 2
|
#elif VECT_SIZE == 2
|
||||||
@ -1097,6 +1109,18 @@
|
|||||||
#define pack64vf(arr,var,gid) make_u64x ((arr)[((gid) * 16) + 0].var, (arr)[((gid) * 16) + 1].var, (arr)[((gid) * 16) + 2].var, (arr)[((gid) * 16) + 3].var, (arr)[((gid) * 16) + 4].var, (arr)[((gid) * 16) + 5].var, (arr)[((gid) * 16) + 6].var, (arr)[((gid) * 16) + 7].var, (arr)[((gid) * 16) + 8].var, (arr)[((gid) * 16) + 9].var, (arr)[((gid) * 16) + 10].var, (arr)[((gid) * 16) + 11].var, (arr)[((gid) * 16) + 12].var, (arr)[((gid) * 16) + 13].var, (arr)[((gid) * 16) + 14].var, (arr)[((gid) * 16) + 15].var)
|
#define pack64vf(arr,var,gid) make_u64x ((arr)[((gid) * 16) + 0].var, (arr)[((gid) * 16) + 1].var, (arr)[((gid) * 16) + 2].var, (arr)[((gid) * 16) + 3].var, (arr)[((gid) * 16) + 4].var, (arr)[((gid) * 16) + 5].var, (arr)[((gid) * 16) + 6].var, (arr)[((gid) * 16) + 7].var, (arr)[((gid) * 16) + 8].var, (arr)[((gid) * 16) + 9].var, (arr)[((gid) * 16) + 10].var, (arr)[((gid) * 16) + 11].var, (arr)[((gid) * 16) + 12].var, (arr)[((gid) * 16) + 13].var, (arr)[((gid) * 16) + 14].var, (arr)[((gid) * 16) + 15].var)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if VECT_SIZE == 1
|
||||||
|
#define unpack(arr,var,gid,val) (arr)[((gid) * 1) + 0].var = val;
|
||||||
|
#elif VECT_SIZE == 2
|
||||||
|
#define unpack(arr,var,gid,val) (arr)[((gid) * 2) + 0].var = val.s0; (arr)[((gid) * 2) + 1].var = val.s1;
|
||||||
|
#elif VECT_SIZE == 4
|
||||||
|
#define unpack(arr,var,gid,val) (arr)[((gid) * 4) + 0].var = val.s0; (arr)[((gid) * 4) + 1].var = val.s1; (arr)[((gid) * 4) + 2].var = val.s2; (arr)[((gid) * 4) + 3].var = val.s3;
|
||||||
|
#elif VECT_SIZE == 8
|
||||||
|
#define unpack(arr,var,gid,val) (arr)[((gid) * 8) + 0].var = val.s0; (arr)[((gid) * 8) + 1].var = val.s1; (arr)[((gid) * 8) + 2].var = val.s2; (arr)[((gid) * 8) + 3].var = val.s3; (arr)[((gid) * 8) + 4].var = val.s4; (arr)[((gid) * 8) + 5].var = val.s5; (arr)[((gid) * 8) + 6].var = val.s6; (arr)[((gid) * 8) + 7].var = val.s7;
|
||||||
|
#elif VECT_SIZE == 16
|
||||||
|
#define unpack(arr,var,gid,val) (arr)[((gid) * 16) + 0].var = val.s0; (arr)[((gid) * 16) + 1].var = val.s1; (arr)[((gid) * 16) + 2].var = val.s2; (arr)[((gid) * 16) + 3].var = val.s3; (arr)[((gid) * 16) + 4].var = val.s4; (arr)[((gid) * 16) + 5].var = val.s5; (arr)[((gid) * 16) + 6].var = val.s6; (arr)[((gid) * 16) + 7].var = val.s7; (arr)[((gid) * 16) + 8].var = val.s8; (arr)[((gid) * 16) + 9].var = val.s9; (arr)[((gid) * 16) + 10].var = val.sa; (arr)[((gid) * 16) + 11].var = val.sb; (arr)[((gid) * 16) + 12].var = val.sc; (arr)[((gid) * 16) + 13].var = val.sd; (arr)[((gid) * 16) + 14].var = val.se; (arr)[((gid) * 16) + 15].var = val.sf;
|
||||||
|
#endif
|
||||||
|
|
||||||
#if VECT_SIZE == 1
|
#if VECT_SIZE == 1
|
||||||
#define unpackv(arr,var,gid,idx,val) (arr)[((gid) * 1) + 0].var[(idx)] = val;
|
#define unpackv(arr,var,gid,idx,val) (arr)[((gid) * 1) + 0].var[(idx)] = val;
|
||||||
#elif VECT_SIZE == 2
|
#elif VECT_SIZE == 2
|
||||||
|
@ -366,7 +366,7 @@ KERNEL_FQ void m13711_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
|||||||
unpackv (tmps, pim_key, gid, i + 3, out[3]);
|
unpackv (tmps, pim_key, gid, i + 3, out[3]);
|
||||||
unpackv (tmps, pim_key, gid, i + 4, out[4]);
|
unpackv (tmps, pim_key, gid, i + 4, out[4]);
|
||||||
|
|
||||||
tmps[gid].pim_check = pim;
|
unpack (tmps, pim_check, gid, make_u32x (pim));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -417,7 +417,7 @@ KERNEL_FQ void m13712_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
|||||||
unpackv (tmps, pim_key, gid, i + 3, out[3]);
|
unpackv (tmps, pim_key, gid, i + 3, out[3]);
|
||||||
unpackv (tmps, pim_key, gid, i + 4, out[4]);
|
unpackv (tmps, pim_key, gid, i + 4, out[4]);
|
||||||
|
|
||||||
tmps[gid].pim_check = pim;
|
unpack (tmps, pim_check, gid, make_u32x (pim));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -482,7 +482,7 @@ KERNEL_FQ void m13713_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
|||||||
unpackv (tmps, pim_key, gid, i + 3, out[3]);
|
unpackv (tmps, pim_key, gid, i + 3, out[3]);
|
||||||
unpackv (tmps, pim_key, gid, i + 4, out[4]);
|
unpackv (tmps, pim_key, gid, i + 4, out[4]);
|
||||||
|
|
||||||
tmps[gid].pim_check = pim;
|
unpack (tmps, pim_check, gid, make_u32x (pim));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -458,7 +458,7 @@ KERNEL_FQ void m13721_loop (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t))
|
|||||||
unpack64v (tmps, pim_key, gid, i + 6, out[6]);
|
unpack64v (tmps, pim_key, gid, i + 6, out[6]);
|
||||||
unpack64v (tmps, pim_key, gid, i + 7, out[7]);
|
unpack64v (tmps, pim_key, gid, i + 7, out[7]);
|
||||||
|
|
||||||
tmps[gid].pim_check = pim;
|
unpack (tmps, pim_check, gid, make_u32x (pim));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -509,7 +509,7 @@ KERNEL_FQ void m13722_loop (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t))
|
|||||||
unpack64v (tmps, pim_key, gid, i + 6, out[6]);
|
unpack64v (tmps, pim_key, gid, i + 6, out[6]);
|
||||||
unpack64v (tmps, pim_key, gid, i + 7, out[7]);
|
unpack64v (tmps, pim_key, gid, i + 7, out[7]);
|
||||||
|
|
||||||
tmps[gid].pim_check = pim;
|
unpack (tmps, pim_check, gid, make_u32x (pim));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -574,7 +574,7 @@ KERNEL_FQ void m13723_loop (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t))
|
|||||||
unpack64v (tmps, pim_key, gid, i + 6, out[6]);
|
unpack64v (tmps, pim_key, gid, i + 6, out[6]);
|
||||||
unpack64v (tmps, pim_key, gid, i + 7, out[7]);
|
unpack64v (tmps, pim_key, gid, i + 7, out[7]);
|
||||||
|
|
||||||
tmps[gid].pim_check = pim;
|
unpack (tmps, pim_check, gid, make_u32x (pim));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -622,7 +622,7 @@ KERNEL_FQ void m13731_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
|||||||
unpackv (tmps, pim_key, gid, i + 14, out[14]);
|
unpackv (tmps, pim_key, gid, i + 14, out[14]);
|
||||||
unpackv (tmps, pim_key, gid, i + 15, out[15]);
|
unpackv (tmps, pim_key, gid, i + 15, out[15]);
|
||||||
|
|
||||||
tmps[gid].pim_check = pim;
|
unpack (tmps, pim_check, gid, make_u32x (pim));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -673,7 +673,7 @@ KERNEL_FQ void m13732_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
|||||||
unpackv (tmps, pim_key, gid, i + 14, out[14]);
|
unpackv (tmps, pim_key, gid, i + 14, out[14]);
|
||||||
unpackv (tmps, pim_key, gid, i + 15, out[15]);
|
unpackv (tmps, pim_key, gid, i + 15, out[15]);
|
||||||
|
|
||||||
tmps[gid].pim_check = pim;
|
unpack (tmps, pim_check, gid, make_u32x (pim));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -738,7 +738,7 @@ KERNEL_FQ void m13733_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
|||||||
unpackv (tmps, pim_key, gid, i + 14, out[14]);
|
unpackv (tmps, pim_key, gid, i + 14, out[14]);
|
||||||
unpackv (tmps, pim_key, gid, i + 15, out[15]);
|
unpackv (tmps, pim_key, gid, i + 15, out[15]);
|
||||||
|
|
||||||
tmps[gid].pim_check = pim;
|
unpack (tmps, pim_check, gid, make_u32x (pim));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -435,7 +435,7 @@ KERNEL_FQ void m13751_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
|||||||
unpackv (tmps, pim_key, gid, i + 6, out[6]);
|
unpackv (tmps, pim_key, gid, i + 6, out[6]);
|
||||||
unpackv (tmps, pim_key, gid, i + 7, out[7]);
|
unpackv (tmps, pim_key, gid, i + 7, out[7]);
|
||||||
|
|
||||||
tmps[gid].pim_check = pim;
|
unpack (tmps, pim_check, gid, make_u32x (pim));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -457,7 +457,7 @@ KERNEL_FQ void m13752_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
|||||||
unpackv (tmps, pim_key, gid, i + 6, out[6]);
|
unpackv (tmps, pim_key, gid, i + 6, out[6]);
|
||||||
unpackv (tmps, pim_key, gid, i + 7, out[7]);
|
unpackv (tmps, pim_key, gid, i + 7, out[7]);
|
||||||
|
|
||||||
tmps[gid].pim_check = pim;
|
unpack (tmps, pim_check, gid, make_u32x (pim));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -522,7 +522,7 @@ KERNEL_FQ void m13753_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
|||||||
unpackv (tmps, pim_key, gid, i + 6, out[6]);
|
unpackv (tmps, pim_key, gid, i + 6, out[6]);
|
||||||
unpackv (tmps, pim_key, gid, i + 7, out[7]);
|
unpackv (tmps, pim_key, gid, i + 7, out[7]);
|
||||||
|
|
||||||
tmps[gid].pim_check = pim;
|
unpack (tmps, pim_check, gid, make_u32x (pim));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -537,7 +537,7 @@ KERNEL_FQ void m13771_loop (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t))
|
|||||||
unpack64v (tmps, pim_key, gid, i + 6, out[6]);
|
unpack64v (tmps, pim_key, gid, i + 6, out[6]);
|
||||||
unpack64v (tmps, pim_key, gid, i + 7, out[7]);
|
unpack64v (tmps, pim_key, gid, i + 7, out[7]);
|
||||||
|
|
||||||
tmps[gid].pim_check = pim;
|
unpack (tmps, pim_check, gid, make_u32x (pim));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -588,7 +588,7 @@ KERNEL_FQ void m13772_loop (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t))
|
|||||||
unpack64v (tmps, pim_key, gid, i + 6, out[6]);
|
unpack64v (tmps, pim_key, gid, i + 6, out[6]);
|
||||||
unpack64v (tmps, pim_key, gid, i + 7, out[7]);
|
unpack64v (tmps, pim_key, gid, i + 7, out[7]);
|
||||||
|
|
||||||
tmps[gid].pim_check = pim;
|
unpack (tmps, pim_check, gid, make_u32x (pim));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -653,7 +653,7 @@ KERNEL_FQ void m13773_loop (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t))
|
|||||||
unpack64v (tmps, pim_key, gid, i + 6, out[6]);
|
unpack64v (tmps, pim_key, gid, i + 6, out[6]);
|
||||||
unpack64v (tmps, pim_key, gid, i + 7, out[7]);
|
unpack64v (tmps, pim_key, gid, i + 7, out[7]);
|
||||||
|
|
||||||
tmps[gid].pim_check = pim;
|
unpack (tmps, pim_check, gid, make_u32x (pim));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
- Fixed autotune unitialized tmps variable for slow hashes by calling _init kernel before calling _loop kernel
|
- Fixed autotune unitialized tmps variable for slow hashes by calling _init kernel before calling _loop kernel
|
||||||
- Fixed datatype in function sha384_hmac_init_vector_128() that could come into effect if vector datatype was manually set
|
- Fixed datatype in function sha384_hmac_init_vector_128() that could come into effect if vector datatype was manually set
|
||||||
|
- Fixed false negative in all VeraCrypt hash-modes if both conditions are met: 1. use CPU for cracking and 2. PIM range was used
|
||||||
|
|
||||||
##
|
##
|
||||||
## Improvements
|
## Improvements
|
||||||
|
Loading…
Reference in New Issue
Block a user