1
0
mirror of https://github.com/hashcat/hashcat.git synced 2024-11-29 11:28:15 +00:00

Evil Bug: Because of not-zeroing a buffer it's possible a hash was cracked but not reported as cracked because it was not in scope, but when it was in scope it was already marked as cracked and therefore not reported

This commit is contained in:
Jens Steube 2016-02-23 10:36:43 +01:00
parent 61f87b2981
commit efad2bafac
2 changed files with 29 additions and 5 deletions

View File

@ -879,6 +879,10 @@ struct __hc_device_param
uint size_pws; uint size_pws;
uint size_tmps; uint size_tmps;
uint size_hooks; uint size_hooks;
uint size_bfs;
uint size_combs;
uint size_rules;
uint size_rules_c;
uint size_root_css; uint size_root_css;
uint size_markov_css; uint size_markov_css;
uint size_digests; uint size_digests;

View File

@ -4495,7 +4495,14 @@ static void *thread_calc_stdin (void *p)
device_param->pws_cnt = 0; device_param->pws_cnt = 0;
memset (device_param->pws_buf, 0, device_param->size_pws); if (attack_kern == ATTACK_KERN_STRAIGHT)
{
run_kernel_bzero (device_param, device_param->d_rules_c, device_param->size_rules_c);
}
else if (attack_kern == ATTACK_KERN_COMBI)
{
run_kernel_bzero (device_param, device_param->d_combs_c, device_param->size_combs);
}
} }
} }
@ -4538,6 +4545,8 @@ static void *thread_calc (void *p)
run_cracker (device_param, pws_cnt); run_cracker (device_param, pws_cnt);
device_param->pws_cnt = 0; device_param->pws_cnt = 0;
run_kernel_bzero (device_param, device_param->d_bfs_c, device_param->size_bfs);
} }
if (data.devices_status == STATUS_STOP_AT_CHECKPOINT) check_checkpoint (); if (data.devices_status == STATUS_STOP_AT_CHECKPOINT) check_checkpoint ();
@ -4756,7 +4765,14 @@ static void *thread_calc (void *p)
device_param->pws_cnt = 0; device_param->pws_cnt = 0;
memset (device_param->pws_buf, 0, device_param->size_pws); if (attack_kern == ATTACK_KERN_STRAIGHT)
{
run_kernel_bzero (device_param, device_param->d_rules_c, device_param->size_rules_c);
}
else if (attack_kern == ATTACK_KERN_COMBI)
{
run_kernel_bzero (device_param, device_param->d_combs_c, device_param->size_combs);
}
} }
if (data.devices_status == STATUS_STOP_AT_CHECKPOINT) check_checkpoint (); if (data.devices_status == STATUS_STOP_AT_CHECKPOINT) check_checkpoint ();
@ -13682,6 +13698,10 @@ int main (int argc, char **argv)
} }
*/ */
device_param->size_bfs = size_bfs;
device_param->size_combs = size_combs;
device_param->size_rules = size_rules;
device_param->size_rules_c = size_rules_c;
device_param->size_pws = size_pws; device_param->size_pws = size_pws;
device_param->size_tmps = size_tmps; device_param->size_tmps = size_tmps;
device_param->size_hooks = size_hooks; device_param->size_hooks = size_hooks;