From 6d66ff96c16992d32aa7fedc51e9b0cdf7ed19ae Mon Sep 17 00:00:00 2001 From: jsteube Date: Fri, 24 Mar 2017 10:45:40 +0100 Subject: [PATCH] Truncate longer hash format in status output --- docs/changes.txt | 1 + include/terminal.h | 2 + src/status.c | 3 + src/terminal.c | 141 ++++++++++++++++++++++++++------------------- 4 files changed, 89 insertions(+), 58 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 07a44dac7..eb6924fd6 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -20,6 +20,7 @@ ## - Refactored internal use of esalt from sync with number of salts to sync with number of digests +- Truncate longer hash format in status output ## ## Bugs diff --git a/include/terminal.h b/include/terminal.h index ba69a5d69..7a05913fc 100644 --- a/include/terminal.h +++ b/include/terminal.h @@ -39,6 +39,8 @@ int tty_break(void); int tty_getchar(void); int tty_fix(void); +void compress_terminal_line_length (char *out_buf, const size_t keep_from_beginning, const size_t keep_from_end); + void opencl_info (hashcat_ctx_t *hashcat_ctx); void opencl_info_compact (hashcat_ctx_t *hashcat_ctx); diff --git a/src/status.c b/src/status.c index 3f1f497a5..56941e710 100644 --- a/src/status.c +++ b/src/status.c @@ -16,6 +16,7 @@ #include "outfile.h" #include "monitor.h" #include "mpsp.h" +#include "terminal.h" #include "status.h" static const char ST_0000[] = "Initializing"; @@ -293,6 +294,8 @@ char *status_get_hash_target (const hashcat_ctx_t *hashcat_ctx) ascii_digest ((hashcat_ctx_t *) hashcat_ctx, tmp_buf, HCBUFSIZ_LARGE, 0, 0); + compress_terminal_line_length (tmp_buf, 17, 6); // 17 = strlen ("Hash.Target....: ") + char *tmp_buf2 = strdup (tmp_buf); free (tmp_buf); diff --git a/src/terminal.c b/src/terminal.c index 906d3a92c..dd316793f 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -19,6 +19,8 @@ #include "terminal.h" #include "hashcat.h" +static const size_t TERMINAL_LINE_LENGTH = 79; + static const char *PROMPT = "[s]tatus [p]ause [r]esume [b]ypass [c]heckpoint [q]uit => "; void welcome_screen (hashcat_ctx_t *hashcat_ctx, const char *version_tag) @@ -463,6 +465,29 @@ int tty_fix() } #endif +void compress_terminal_line_length (char *out_buf, const size_t keep_from_beginning, const size_t keep_from_end) +{ + const size_t target_len = TERMINAL_LINE_LENGTH - keep_from_beginning; + + const size_t out_len = strlen (out_buf); + + if (out_len < target_len) return; + + char *ptr1 = out_buf + target_len - 3 - keep_from_end; + char *ptr2 = out_buf + out_len - keep_from_end; + + *ptr1++ = '.'; + *ptr1++ = '.'; + *ptr1++ = '.'; + + for (size_t i = 0; i < keep_from_end; i++) + { + *ptr1++ = *ptr2++; + } + + *ptr1 = 0; +} + void opencl_info (hashcat_ctx_t *hashcat_ctx) { const opencl_ctx_t *opencl_ctx = hashcat_ctx->opencl_ctx; @@ -695,28 +720,28 @@ void status_display (hashcat_ctx_t *hashcat_ctx) */ event_log_info (hashcat_ctx, - "Session..........: %s", + "Session........: %s", hashcat_status->session); event_log_info (hashcat_ctx, - "Status...........: %s", + "Status.........: %s", hashcat_status->status_string); event_log_info (hashcat_ctx, - "Hash.Type........: %s", + "Hash.Type......: %s", hashcat_status->hash_type); event_log_info (hashcat_ctx, - "Hash.Target......: %s", + "Hash.Target....: %s", hashcat_status->hash_target); event_log_info (hashcat_ctx, - "Time.Started.....: %s (%s)", + "Time.Started...: %s (%s)", hashcat_status->time_started_absolute, hashcat_status->time_started_relative); event_log_info (hashcat_ctx, - "Time.Estimated...: %s (%s)", + "Time.Estimated.: %s (%s)", hashcat_status->time_estimated_absolute, hashcat_status->time_estimated_relative); @@ -725,7 +750,7 @@ void status_display (hashcat_ctx_t *hashcat_ctx) case INPUT_MODE_STRAIGHT_FILE: event_log_info (hashcat_ctx, - "Input.Base.......: File (%s)", + "Input.Base.....: File (%s)", hashcat_status->input_base); break; @@ -733,11 +758,11 @@ void status_display (hashcat_ctx_t *hashcat_ctx) case INPUT_MODE_STRAIGHT_FILE_RULES_FILE: event_log_info (hashcat_ctx, - "Input.Base.......: File (%s)", + "Input.Base.....: File (%s)", hashcat_status->input_base); event_log_info (hashcat_ctx, - "Input.Mod........: Rules (%s)", + "Input.Mod......: Rules (%s)", hashcat_status->input_mod); break; @@ -745,28 +770,28 @@ void status_display (hashcat_ctx_t *hashcat_ctx) case INPUT_MODE_STRAIGHT_FILE_RULES_GEN: event_log_info (hashcat_ctx, - "Input.Base.......: File (%s)", + "Input.Base.....: File (%s)", hashcat_status->input_base); event_log_info (hashcat_ctx, - "Input.Mod........: Rules (Generated)"); + "Input.Mod......: Rules (Generated)"); break; case INPUT_MODE_STRAIGHT_STDIN: event_log_info (hashcat_ctx, - "Input.Base.......: Pipe"); + "Input.Base.....: Pipe"); break; case INPUT_MODE_STRAIGHT_STDIN_RULES_FILE: event_log_info (hashcat_ctx, - "Input.Base.......: Pipe"); + "Input.Base.....: Pipe"); event_log_info (hashcat_ctx, - "Input.Mod........: Rules (%s)", + "Input.Mod......: Rules (%s)", hashcat_status->input_mod); break; @@ -774,21 +799,21 @@ void status_display (hashcat_ctx_t *hashcat_ctx) case INPUT_MODE_STRAIGHT_STDIN_RULES_GEN: event_log_info (hashcat_ctx, - "Input.Base.......: Pipe"); + "Input.Base.....: Pipe"); event_log_info (hashcat_ctx, - "Input.Mod........: Rules (Generated)"); + "Input.Mod......: Rules (Generated)"); break; case INPUT_MODE_COMBINATOR_BASE_LEFT: event_log_info (hashcat_ctx, - "Input.Base.......: File (%s), Left Side", + "Input.Base.....: File (%s), Left Side", hashcat_status->input_base); event_log_info (hashcat_ctx, - "Input.Mod........: File (%s), Right Side", + "Input.Mod......: File (%s), Right Side", hashcat_status->input_mod); break; @@ -796,11 +821,11 @@ void status_display (hashcat_ctx_t *hashcat_ctx) case INPUT_MODE_COMBINATOR_BASE_RIGHT: event_log_info (hashcat_ctx, - "Input.Base.......: File (%s), Right Side", + "Input.Base.....: File (%s), Right Side", hashcat_status->input_base); event_log_info (hashcat_ctx, - "Input.Mod........: File (%s), Left Side", + "Input.Mod......: File (%s), Left Side", hashcat_status->input_mod); break; @@ -808,7 +833,7 @@ void status_display (hashcat_ctx_t *hashcat_ctx) case INPUT_MODE_MASK: event_log_info (hashcat_ctx, - "Input.Mask.......: %s [%d]", + "Input.Mask.....: %s [%d]", hashcat_status->input_base, hashcat_status->input_mask_length); @@ -817,12 +842,12 @@ void status_display (hashcat_ctx_t *hashcat_ctx) case INPUT_MODE_MASK_CS: event_log_info (hashcat_ctx, - "Input.Mask.......: %s [%d]", + "Input.Mask.....: %s [%d]", hashcat_status->input_base, hashcat_status->input_mask_length); event_log_info (hashcat_ctx, - "Input.Charset....: %s ", + "Input.Charset..: %s ", hashcat_status->input_charset); break; @@ -830,11 +855,11 @@ void status_display (hashcat_ctx_t *hashcat_ctx) case INPUT_MODE_HYBRID1: event_log_info (hashcat_ctx, - "Input.Base.......: File (%s), Left Side", + "Input.Base.....: File (%s), Left Side", hashcat_status->input_base); event_log_info (hashcat_ctx, - "Input.Mod........: Mask (%s) [%d], Right Side", + "Input.Mod......: Mask (%s) [%d], Right Side", hashcat_status->input_mod, hashcat_status->input_mask_length); @@ -843,16 +868,16 @@ void status_display (hashcat_ctx_t *hashcat_ctx) case INPUT_MODE_HYBRID1_CS: event_log_info (hashcat_ctx, - "Input.Base.......: File (%s), Left Side", + "Input.Base.....: File (%s), Left Side", hashcat_status->input_base); event_log_info (hashcat_ctx, - "Input.Mod........: Mask (%s) [%d], Right Side", + "Input.Mod......: Mask (%s) [%d], Right Side", hashcat_status->input_mod, hashcat_status->input_mask_length); event_log_info (hashcat_ctx, - "Input.Charset....: %s", + "Input.Charset..: %s", hashcat_status->input_charset); break; @@ -860,11 +885,11 @@ void status_display (hashcat_ctx_t *hashcat_ctx) case INPUT_MODE_HYBRID2: event_log_info (hashcat_ctx, - "Input.Base.......: File (%s), Right Side", + "Input.Base.....: File (%s), Right Side", hashcat_status->input_base); event_log_info (hashcat_ctx, - "Input.Mod........: Mask (%s) [%d], Left Side", + "Input.Mod......: Mask (%s) [%d], Left Side", hashcat_status->input_mod, hashcat_status->input_mask_length); @@ -873,16 +898,16 @@ void status_display (hashcat_ctx_t *hashcat_ctx) case INPUT_MODE_HYBRID2_CS: event_log_info (hashcat_ctx, - "Input.Base.......: File (%s), Right Side", + "Input.Base.....: File (%s), Right Side", hashcat_status->input_base); event_log_info (hashcat_ctx, - "Input.Mod........: Mask (%s) [%d], Left Side", + "Input.Mod......: Mask (%s) [%d], Left Side", hashcat_status->input_mod, hashcat_status->input_mask_length); event_log_info (hashcat_ctx, - "Input.Charset....: %s", + "Input.Charset..: %s", hashcat_status->input_charset); break; @@ -893,7 +918,7 @@ void status_display (hashcat_ctx_t *hashcat_ctx) case INPUT_MODE_STRAIGHT_FILE: event_log_info (hashcat_ctx, - "Input.Queue......: %d/%d (%.02f%%)", + "Input.Queue....: %d/%d (%.02f%%)", hashcat_status->input_base_offset, hashcat_status->input_base_count, hashcat_status->input_base_percent); @@ -903,7 +928,7 @@ void status_display (hashcat_ctx_t *hashcat_ctx) case INPUT_MODE_STRAIGHT_FILE_RULES_FILE: event_log_info (hashcat_ctx, - "Input.Queue......: %d/%d (%.02f%%)", + "Input.Queue....: %d/%d (%.02f%%)", hashcat_status->input_base_offset, hashcat_status->input_base_count, hashcat_status->input_base_percent); @@ -913,7 +938,7 @@ void status_display (hashcat_ctx_t *hashcat_ctx) case INPUT_MODE_STRAIGHT_FILE_RULES_GEN: event_log_info (hashcat_ctx, - "Input.Queue......: %d/%d (%.02f%%)", + "Input.Queue....: %d/%d (%.02f%%)", hashcat_status->input_base_offset, hashcat_status->input_base_count, hashcat_status->input_base_percent); @@ -923,7 +948,7 @@ void status_display (hashcat_ctx_t *hashcat_ctx) case INPUT_MODE_MASK: event_log_info (hashcat_ctx, - "Input.Queue......: %d/%d (%.02f%%)", + "Input.Queue....: %d/%d (%.02f%%)", hashcat_status->input_base_offset, hashcat_status->input_base_count, hashcat_status->input_base_percent); @@ -933,7 +958,7 @@ void status_display (hashcat_ctx_t *hashcat_ctx) case INPUT_MODE_MASK_CS: event_log_info (hashcat_ctx, - "Input.Queue......: %d/%d (%.02f%%)", + "Input.Queue....: %d/%d (%.02f%%)", hashcat_status->input_base_offset, hashcat_status->input_base_count, hashcat_status->input_base_percent); @@ -949,7 +974,7 @@ void status_display (hashcat_ctx_t *hashcat_ctx) hashcat_status->input_base_percent); event_log_info (hashcat_ctx, - "Input.Queue.Mod..: %d/%d (%.02f%%)", + "Input.Queue.Mod: %d/%d (%.02f%%)", hashcat_status->input_mod_offset, hashcat_status->input_mod_count, hashcat_status->input_mod_percent); @@ -965,7 +990,7 @@ void status_display (hashcat_ctx_t *hashcat_ctx) hashcat_status->input_base_percent); event_log_info (hashcat_ctx, - "Input.Queue.Mod..: %d/%d (%.02f%%)", + "Input.Queue.Mod: %d/%d (%.02f%%)", hashcat_status->input_mod_offset, hashcat_status->input_mod_count, hashcat_status->input_mod_percent); @@ -980,7 +1005,7 @@ void status_display (hashcat_ctx_t *hashcat_ctx) if (device_info->skipped_dev == true) continue; event_log_info (hashcat_ctx, - "Speed.Dev.#%d.....: %9sH/s (%0.2fms)", device_id + 1, + "Speed.Dev.#%d...: %9sH/s (%0.2fms)", device_id + 1, device_info->speed_sec_dev, device_info->exec_msec_dev); } @@ -988,12 +1013,12 @@ void status_display (hashcat_ctx_t *hashcat_ctx) if (hashcat_status->device_info_active > 1) { event_log_info (hashcat_ctx, - "Speed.Dev.#*.....: %9sH/s", + "Speed.Dev.#*...: %9sH/s", hashcat_status->speed_sec_all); } event_log_info (hashcat_ctx, - "Recovered........: %d/%d (%.2f%%) Digests, %d/%d (%.2f%%) Salts", + "Recovered......: %d/%d (%.2f%%) Digests, %d/%d (%.2f%%) Salts", hashcat_status->digests_done, hashcat_status->digests_cnt, hashcat_status->digests_percent, @@ -1004,7 +1029,7 @@ void status_display (hashcat_ctx_t *hashcat_ctx) if (hashcat_status->digests_cnt > 1000) { event_log_info (hashcat_ctx, - "Recovered/Time...: %s", + "Recovered/Time.: %s", hashcat_status->cpt); } @@ -1013,19 +1038,19 @@ void status_display (hashcat_ctx_t *hashcat_ctx) case PROGRESS_MODE_KEYSPACE_KNOWN: event_log_info (hashcat_ctx, - "Progress.........: %" PRIu64 "/%" PRIu64 " (%.02f%%)", + "Progress.......: %" PRIu64 "/%" PRIu64 " (%.02f%%)", hashcat_status->progress_cur_relative_skip, hashcat_status->progress_end_relative_skip, hashcat_status->progress_finished_percent); event_log_info (hashcat_ctx, - "Rejected.........: %" PRIu64 "/%" PRIu64 " (%.02f%%)", + "Rejected.......: %" PRIu64 "/%" PRIu64 " (%.02f%%)", hashcat_status->progress_rejected, hashcat_status->progress_cur_relative_skip, hashcat_status->progress_rejected_percent); event_log_info (hashcat_ctx, - "Restore.Point....: %" PRIu64 "/%" PRIu64 " (%.02f%%)", + "Restore.Point..: %" PRIu64 "/%" PRIu64 " (%.02f%%)", hashcat_status->restore_point, hashcat_status->restore_total, hashcat_status->restore_percent); @@ -1035,15 +1060,15 @@ void status_display (hashcat_ctx_t *hashcat_ctx) case PROGRESS_MODE_KEYSPACE_UNKNOWN: event_log_info (hashcat_ctx, - "Progress.........: %" PRIu64, + "Progress.......: %" PRIu64, hashcat_status->progress_cur_relative_skip); event_log_info (hashcat_ctx, - "Rejected.........: %" PRIu64, + "Rejected.......: %" PRIu64, hashcat_status->progress_rejected); event_log_info (hashcat_ctx, - "Restore.Point....: %" PRIu64, + "Restore.Point..: %" PRIu64, hashcat_status->restore_point); break; @@ -1058,7 +1083,7 @@ void status_display (hashcat_ctx_t *hashcat_ctx) if (device_info->input_candidates_dev == NULL) continue; event_log_info (hashcat_ctx, - "Candidates.#%d....: %s", device_id + 1, + "Candidates.#%d..: %s", device_id + 1, device_info->input_candidates_dev); } @@ -1073,7 +1098,7 @@ void status_display (hashcat_ctx_t *hashcat_ctx) if (device_info->hwmon_dev == NULL) continue; event_log_info (hashcat_ctx, - "HWMon.Dev.#%d.....: %s", device_id + 1, + "HWMon.Dev.#%d...: %s", device_id + 1, device_info->hwmon_dev); } } @@ -1139,7 +1164,7 @@ void status_benchmark (hashcat_ctx_t *hashcat_ctx) if (device_info->skipped_dev == true) continue; event_log_info (hashcat_ctx, - "Speed.Dev.#%d.....: %9sH/s (%0.2fms)", device_id + 1, + "Speed.Dev.#%d...: %9sH/s (%0.2fms)", device_id + 1, device_info->speed_sec_dev, device_info->exec_msec_dev); } @@ -1147,7 +1172,7 @@ void status_benchmark (hashcat_ctx_t *hashcat_ctx) if (hashcat_status->device_info_active > 1) { event_log_info (hashcat_ctx, - "Speed.Dev.#*.....: %9sH/s", + "Speed.Dev.#*...: %9sH/s", hashcat_status->speed_sec_all); } @@ -1208,7 +1233,7 @@ void status_speed (hashcat_ctx_t *hashcat_ctx) if (device_info->skipped_dev == true) continue; event_log_info (hashcat_ctx, - "Speed.Dev.#%d.....: %9sH/s (%0.2fms)", device_id + 1, + "Speed.Dev.#%d...: %9sH/s (%0.2fms)", device_id + 1, device_info->speed_sec_dev, device_info->exec_msec_dev); } @@ -1216,7 +1241,7 @@ void status_speed (hashcat_ctx_t *hashcat_ctx) if (hashcat_status->device_info_active > 1) { event_log_info (hashcat_ctx, - "Speed.Dev.#*.....: %9sH/s", + "Speed.Dev.#*...: %9sH/s", hashcat_status->speed_sec_all); } @@ -1277,7 +1302,7 @@ void status_progress (hashcat_ctx_t *hashcat_ctx) if (device_info->skipped_dev == true) continue; event_log_info (hashcat_ctx, - "Progress.Dev.#%d..: %d", device_id + 1, + "Progress.Dev.#%d: %d", device_id + 1, device_info->progress_dev); } @@ -1288,7 +1313,7 @@ void status_progress (hashcat_ctx_t *hashcat_ctx) if (device_info->skipped_dev == true) continue; event_log_info (hashcat_ctx, - "Runtime.Dev.#%d...: %0.2fms", device_id + 1, + "Runtime.Dev.#%d.: %0.2fms", device_id + 1, device_info->runtime_msec_dev); }