1
0
mirror of https://github.com/hashcat/hashcat.git synced 2024-11-05 06:58:56 +00:00

Fixed invalid ETA if --limit was specified, several salts are in a hash list and some of them were found in a potfile

This commit is contained in:
Jens Steube 2021-07-14 10:26:57 +02:00
parent 84fcea9592
commit a82fce2c8f
2 changed files with 28 additions and 5 deletions

View File

@ -25,11 +25,12 @@
## Bugs
##
- Fixed 'E' rule in pure kernel mode which was ignoring letters that are in positions that are multiples of 4
- Fixed access violation in hashconfig_destroy if hashcat_ctx_t is only partially initialized
- Fixed 'E' rule in pure kernel mode which was ignoring letters that are in positions that are multiples of 4
- Fixed false negative in hash-mode 15900 (DPAPI masterkey file v2) if password was longer than 64 characters
- Fixed hashcat_ctx leak and refactor module and kernel existence checks
- Fixed integer overflow in Recovered/Time status view column caused by division > 0 but < 1
- Fixed invalid ETA if --limit was specified, several salts are in a hash list and some of them were found in a potfile
- Fixed memory leak in iconv_ctx and iconv_tmp in backend.c
- Fixed missing option to automatically disable kernel cache in -m 25600 and -m 25800
- Fixed out-of-boundary write in slow candidates mode in combinator attack

View File

@ -1261,9 +1261,10 @@ u64 status_get_progress_cur (const hashcat_ctx_t *hashcat_ctx)
u64 status_get_progress_ignore (const hashcat_ctx_t *hashcat_ctx)
{
const hashes_t *hashes = hashcat_ctx->hashes;
const status_ctx_t *status_ctx = hashcat_ctx->status_ctx;
const user_options_t *user_options = hashcat_ctx->user_options;
const hashes_t *hashes = hashcat_ctx->hashes;
const status_ctx_t *status_ctx = hashcat_ctx->status_ctx;
const user_options_t *user_options = hashcat_ctx->user_options;
const user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra;
if (user_options->attack_mode == ATTACK_MODE_ASSOCIATION)
{
@ -1273,6 +1274,27 @@ u64 status_get_progress_ignore (const hashcat_ctx_t *hashcat_ctx)
return 0;
}
u64 words_cnt = status_ctx->words_cnt;
if (user_options->limit)
{
const combinator_ctx_t *combinator_ctx = hashcat_ctx->combinator_ctx;
const mask_ctx_t *mask_ctx = hashcat_ctx->mask_ctx;
const straight_ctx_t *straight_ctx = hashcat_ctx->straight_ctx;
words_cnt = MIN (user_options->limit, status_ctx->words_base);
if (user_options->slow_candidates == true)
{
// nothing to do
}
else
{
if (user_options_extra->attack_kern == ATTACK_KERN_STRAIGHT) words_cnt *= straight_ctx->kernel_rules_cnt;
else if (user_options_extra->attack_kern == ATTACK_KERN_COMBI) words_cnt *= combinator_ctx->combs_cnt;
else if (user_options_extra->attack_kern == ATTACK_KERN_BF) words_cnt *= mask_ctx->bfs_cnt;
}
}
// Important for ETA only
u64 progress_ignore = 0;
@ -1285,7 +1307,7 @@ u64 status_get_progress_ignore (const hashcat_ctx_t *hashcat_ctx)
+ status_ctx->words_progress_rejected[salt_pos]
+ status_ctx->words_progress_restored[salt_pos];
const u64 left = status_ctx->words_cnt - all;
const u64 left = words_cnt - all;
progress_ignore += left;
}