diff --git a/include/status.h b/include/status.h index 5c255be3a..eb6dafe9d 100644 --- a/include/status.h +++ b/include/status.h @@ -39,6 +39,7 @@ char *status_get_guess_candidates_dev (const hashcat_ctx_t *hash char *status_get_hash_name (const hashcat_ctx_t *hashcat_ctx); char *status_get_hash_target (const hashcat_ctx_t *hashcat_ctx); int status_get_digests_done (const hashcat_ctx_t *hashcat_ctx); +int status_get_digests_done_pot (const hashcat_ctx_t *hashcat_ctx); int status_get_digests_cnt (const hashcat_ctx_t *hashcat_ctx); double status_get_digests_percent (const hashcat_ctx_t *hashcat_ctx); int status_get_salts_done (const hashcat_ctx_t *hashcat_ctx); diff --git a/include/types.h b/include/types.h index 51ff141e4..7eadcd07a 100644 --- a/include/types.h +++ b/include/types.h @@ -941,6 +941,7 @@ typedef struct hashes u32 digests_cnt; u32 digests_done; + u32 digests_done_pot; u32 digests_saved; void *digests_buf; diff --git a/src/hashcat.c b/src/hashcat.c index fabce3002..2fff7f4b5 100644 --- a/src/hashcat.c +++ b/src/hashcat.c @@ -1927,6 +1927,7 @@ int hashcat_get_status (hashcat_ctx_t *hashcat_ctx, hashcat_status_t *hashcat_st hashcat_status->digests_cnt = status_get_digests_cnt (hashcat_ctx); hashcat_status->digests_done = status_get_digests_done (hashcat_ctx); + hashcat_status->digests_done_pot = status_get_digests_done_pot (hashcat_ctx); hashcat_status->digests_percent = status_get_digests_percent (hashcat_ctx); hashcat_status->hash_target = status_get_hash_target (hashcat_ctx); hashcat_status->hash_name = status_get_hash_name (hashcat_ctx); diff --git a/src/main.c b/src/main.c index 8f17b4151..d07bfb07b 100644 --- a/src/main.c +++ b/src/main.c @@ -406,18 +406,18 @@ static void main_potfile_num_cracked (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, M if (user_options->quiet == true) return; - const int potfile_remove_cracks = hashes->digests_done; + const int hashes->digests_done_pot = hashes->digests_done; - if (potfile_remove_cracks > 0) + if (hashes->digests_done_pot > 0) { - if (potfile_remove_cracks == 1) + if (hashes->digests_done_pot == 1) { event_log_info (hashcat_ctx, "INFO: Removed 1 hash found as potfile entry or as empty hash."); event_log_info (hashcat_ctx, NULL); } else { - event_log_info (hashcat_ctx, "INFO: Removed %d hashes found as potfile entries or as empty hashes.", potfile_remove_cracks); + event_log_info (hashcat_ctx, "INFO: Removed %d hashes found as potfile entries or as empty hashes.", hashes->digests_done_pot); event_log_info (hashcat_ctx, NULL); } } diff --git a/src/status.c b/src/status.c index ed7d0ba9a..b22c9846d 100644 --- a/src/status.c +++ b/src/status.c @@ -893,6 +893,13 @@ int status_get_digests_done (const hashcat_ctx_t *hashcat_ctx) return hashes->digests_done; } +int status_get_digests_done_pot (const hashcat_ctx_t *hashcat_ctx) +{ + const hashes_t *hashes = hashcat_ctx->hashes; + + return hashes->digests_done_pot; +} + int status_get_digests_cnt (const hashcat_ctx_t *hashcat_ctx) { const hashes_t *hashes = hashcat_ctx->hashes; diff --git a/src/terminal.c b/src/terminal.c index 9072dbda7..808d43f1f 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -2090,27 +2090,81 @@ void status_display (hashcat_ctx_t *hashcat_ctx) "Speed.#*.........: %9sH/s", hashcat_status->speed_sec_all); } - - if (hashcat_status->salts_cnt > 1) + if (hashes_status->digests_done_pot > 0) { - event_log_info (hashcat_ctx, - "Recovered........: %d/%d (%.2f%%) Digests, %d/%d (%.2f%%) Salts", - hashcat_status->digests_done, - hashcat_status->digests_cnt, - hashcat_status->digests_percent, - hashcat_status->salts_done, - hashcat_status->salts_cnt, - hashcat_status->salts_percent); + if (hashcat_status->salts_cnt > 1) + { + const int digests_net_new = hashcat_status->digests_done - hashcat_status->digests_done_pot; + + if (digests_net_new > 1) + { + event_log_info (hashcat_ctx, + "Recovered........: %d/%d (%.2f%%) Digests, %d/%d (%.2f%%) Salts, %d This Session", + hashcat_status->digests_done, + hashcat_status->digests_cnt, + hashcat_status->digests_percent, + hashcat_status->salts_done, + hashcat_status->salts_cnt, + hashcat_status->salts_percent, + digests_net_new); + } + else + { + event_log_info (hashcat_ctx, + "Recovered........: %d/%d (%.2f%%) Digests, %d/%d (%.2f%%) Salts", + hashcat_status->digests_done, + hashcat_status->digests_cnt, + hashcat_status->digests_percent, + hashcat_status->salts_done, + hashcat_status->salts_cnt, + hashcat_status->salts_percent); + } + } + else + { + const int digests_net_new = hashcat_status->digests_done - hashcat_status->digests_done_pot; + + if (digests_net_new > 1) + { + event_log_info (hashcat_ctx, + "Recovered........: %d/%d (%.2f%%) Digests, %d This Session", + hashcat_status->digests_done, + hashcat_status->digests_cnt, + hashcat_status->digests_percent, + digests_net_new); + } + else + { + event_log_info (hashcat_ctx, + "Recovered........: %d/%d (%.2f%%) Digests", + hashcat_status->digests_done, + hashcat_status->digests_cnt, + hashcat_status->digests_percent); + } + } } else { - event_log_info (hashcat_ctx, - "Recovered........: %d/%d (%.2f%%) Digests", - hashcat_status->digests_done, - hashcat_status->digests_cnt, - hashcat_status->digests_percent); + if (hashcat_status->salts_cnt > 1) + { + event_log_info (hashcat_ctx, + "Recovered........: %d/%d (%.2f%%) Digests, %d/%d (%.2f%%) Salts", + hashcat_status->digests_done, + hashcat_status->digests_cnt, + hashcat_status->digests_percent, + hashcat_status->salts_done, + hashcat_status->salts_cnt, + hashcat_status->salts_percent); + } + else + { + event_log_info (hashcat_ctx, + "Recovered........: %d/%d (%.2f%%) Digests", + hashcat_status->digests_done, + hashcat_status->digests_cnt, + hashcat_status->digests_percent); + } } - if (hashcat_status->digests_cnt > 1000) { const int digests_remain = hashcat_status->digests_cnt - hashcat_status->digests_done;