1
0
mirror of https://github.com/hashcat/hashcat.git synced 2024-11-22 16:18:09 +00:00

Added progress_mode to status.c

This commit is contained in:
jsteube 2016-10-17 16:22:32 +02:00
parent 86c1c7ef10
commit 8d81d3bd55
5 changed files with 101 additions and 74 deletions

View File

@ -43,8 +43,11 @@ char *status_get_time_estimated_relative (const hashcat_ctx_t *hashcat_ctx)
u64 status_get_restore_point (const hashcat_ctx_t *hashcat_ctx);
u64 status_get_restore_total (const hashcat_ctx_t *hashcat_ctx);
double status_get_restore_percent (const hashcat_ctx_t *hashcat_ctx);
int status_get_progress_mode (const hashcat_ctx_t *hashcat_ctx);
double status_get_progress_finished_percent (const hashcat_ctx_t *hashcat_ctx);
u64 status_get_progress_done (const hashcat_ctx_t *hashcat_ctx);
u64 status_get_progress_rejected (const hashcat_ctx_t *hashcat_ctx);
double status_get_progress_rejected_percent (const hashcat_ctx_t *hashcat_ctx);
u64 status_get_progress_restored (const hashcat_ctx_t *hashcat_ctx);
u64 status_get_progress_cur (const hashcat_ctx_t *hashcat_ctx);
u64 status_get_progress_end (const hashcat_ctx_t *hashcat_ctx);

View File

@ -1472,6 +1472,14 @@ typedef enum input_mode
} input_mode_t;
typedef enum progress_mode
{
PROGRESS_MODE_NONE = 0,
PROGRESS_MODE_KEYSPACE_KNOWN = 1,
PROGRESS_MODE_KEYSPACE_UNKNOWN = 2,
} progress_mode_t;
typedef struct
{
bool skipped_dev;
@ -1504,6 +1512,8 @@ typedef struct
int salts_cnt;
int salts_done;
double salts_percent;
int progress_mode;
double progress_finished_percent;
u64 progress_cur;
u64 progress_cur_relative_skip;
u64 progress_done;
@ -1511,6 +1521,7 @@ typedef struct
u64 progress_end_relative_skip;
u64 progress_ignore;
u64 progress_rejected;
double progress_rejected_percent;
u64 progress_restored;
u64 progress_skip;
u64 restore_point;

View File

@ -1145,6 +1145,8 @@ int hashcat_get_status (hashcat_ctx_t *hashcat_ctx, hashcat_status_t *hashcat_st
hashcat_status->msec_paused = status_get_msec_paused (hashcat_ctx);
hashcat_status->msec_running = status_get_msec_running (hashcat_ctx);
hashcat_status->msec_real = status_get_msec_real (hashcat_ctx);
hashcat_status->progress_mode = status_get_progress_mode (hashcat_ctx);
hashcat_status->progress_finished_percent = status_get_progress_finished_percent (hashcat_ctx);
hashcat_status->progress_cur_relative_skip = status_get_progress_cur_relative_skip (hashcat_ctx);
hashcat_status->progress_cur = status_get_progress_cur (hashcat_ctx);
hashcat_status->progress_done = status_get_progress_done (hashcat_ctx);
@ -1152,6 +1154,7 @@ int hashcat_get_status (hashcat_ctx_t *hashcat_ctx, hashcat_status_t *hashcat_st
hashcat_status->progress_end = status_get_progress_end (hashcat_ctx);
hashcat_status->progress_ignore = status_get_progress_ignore (hashcat_ctx);
hashcat_status->progress_rejected = status_get_progress_rejected (hashcat_ctx);
hashcat_status->progress_rejected_percent = status_get_progress_rejected_percent (hashcat_ctx);
hashcat_status->progress_restored = status_get_progress_restored (hashcat_ctx);
hashcat_status->progress_skip = status_get_progress_skip (hashcat_ctx);
hashcat_status->restore_point = status_get_restore_point (hashcat_ctx);

View File

@ -804,12 +804,43 @@ double status_get_restore_percent (const hashcat_ctx_t *hashcat_ctx)
if (restore_total > 0)
{
restore_percent = (double) restore_point / (double) restore_total;
restore_percent = ((double) restore_point / (double) restore_total) * 100;
}
return restore_percent;
}
int status_get_progress_mode (const hashcat_ctx_t *hashcat_ctx)
{
const u64 progress_end_relative_skip = status_get_progress_end_relative_skip (hashcat_ctx);
if (progress_end_relative_skip > 0)
{
return PROGRESS_MODE_KEYSPACE_KNOWN;
}
else
{
return PROGRESS_MODE_KEYSPACE_UNKNOWN;
}
return PROGRESS_MODE_NONE;
}
double status_get_progress_finished_percent (const hashcat_ctx_t *hashcat_ctx)
{
const u64 progress_cur_relative_skip = status_get_progress_cur_relative_skip (hashcat_ctx);
const u64 progress_end_relative_skip = status_get_progress_end_relative_skip (hashcat_ctx);
double progress_finished_percent = 0;
if (progress_end_relative_skip > 0)
{
progress_finished_percent = ((double) progress_cur_relative_skip / (double) progress_end_relative_skip) * 100;
}
return progress_finished_percent;
}
u64 status_get_progress_done (const hashcat_ctx_t *hashcat_ctx)
{
const hashes_t *hashes = hashcat_ctx->hashes;
@ -840,6 +871,21 @@ u64 status_get_progress_rejected (const hashcat_ctx_t *hashcat_ctx)
return progress_rejected;
}
double status_get_progress_rejected_percent (const hashcat_ctx_t *hashcat_ctx)
{
const u64 progress_cur = status_get_progress_cur (hashcat_ctx);
const u64 progress_rejected = status_get_progress_rejected (hashcat_ctx);
double percent_rejected = 0;
if (progress_cur)
{
percent_rejected = ((double) (progress_rejected) / (double) progress_cur) * 100;
}
return percent_rejected;
}
u64 status_get_progress_restored (const hashcat_ctx_t *hashcat_ctx)
{
const hashes_t *hashes = hashcat_ctx->hashes;
@ -944,10 +990,15 @@ u64 status_get_progress_skip (const hashcat_ctx_t *hashcat_ctx)
u64 status_get_progress_cur_relative_skip (const hashcat_ctx_t *hashcat_ctx)
{
const u64 progress_cur = status_get_progress_cur (hashcat_ctx);
const u64 progress_skip = status_get_progress_skip (hashcat_ctx);
const u64 progress_cur = status_get_progress_cur (hashcat_ctx);
const u64 progress_cur_relative_skip = progress_cur - progress_skip;
u64 progress_cur_relative_skip = 0;
if (progress_cur > 0)
{
progress_cur_relative_skip = progress_cur - progress_skip;
}
return progress_cur_relative_skip;
}
@ -957,7 +1008,12 @@ u64 status_get_progress_end_relative_skip (const hashcat_ctx_t *hashcat_ctx)
const u64 progress_skip = status_get_progress_skip (hashcat_ctx);
const u64 progress_end = status_get_progress_end (hashcat_ctx);
const u64 progress_end_relative_skip = progress_end - progress_skip;
u64 progress_end_relative_skip = 0;
if (progress_end > 0)
{
progress_end_relative_skip = progress_end - progress_skip;
}
return progress_end_relative_skip;
}

View File

@ -669,9 +669,7 @@ void status_display (hashcat_ctx_t *hashcat_ctx)
status_get_salts_percent (hashcat_ctx));
event_log_info (hashcat_ctx, "Recovered/Time.: %s", status_get_cpt (hashcat_ctx));
const int input_mode = status_get_input_mode (hashcat_ctx);
switch (input_mode)
switch (status_get_input_mode (hashcat_ctx))
{
case INPUT_MODE_STRAIGHT_FILE:
event_log_info (hashcat_ctx, "Input.Base.....: File (%s)", status_get_input_base (hashcat_ctx));
@ -730,6 +728,29 @@ void status_display (hashcat_ctx_t *hashcat_ctx)
break;
}
switch (status_get_progress_mode (hashcat_ctx))
{
case PROGRESS_MODE_KEYSPACE_KNOWN:
event_log_info (hashcat_ctx, "Progress.......: %" PRIu64 "/%" PRIu64 " (%.02f%%)",
status_get_progress_cur_relative_skip (hashcat_ctx),
status_get_progress_end_relative_skip (hashcat_ctx),
status_get_progress_finished_percent (hashcat_ctx));
event_log_info (hashcat_ctx, "Rejected.......: %" PRIu64 "/%" PRIu64 " (%.02f%%)",
status_get_progress_rejected (hashcat_ctx),
status_get_progress_cur_relative_skip (hashcat_ctx),
status_get_progress_rejected_percent (hashcat_ctx));
event_log_info (hashcat_ctx, "Restore.Point..: %" PRIu64 "/%" PRIu64 " (%.02f%%)",
status_get_restore_point (hashcat_ctx),
status_get_restore_total (hashcat_ctx),
status_get_restore_percent (hashcat_ctx));
break;
case PROGRESS_MODE_KEYSPACE_UNKNOWN:
event_log_info (hashcat_ctx, "Progress.......: %" PRIu64, status_get_progress_cur_relative_skip (hashcat_ctx));
event_log_info (hashcat_ctx, "Rejected.......: %" PRIu64, status_get_progress_rejected (hashcat_ctx));
event_log_info (hashcat_ctx, "Restore.Point..: %" PRIu64, status_get_restore_point (hashcat_ctx));
break;
}
const int device_info_cnt = status_get_device_info_cnt (hashcat_ctx);
const int device_info_active = status_get_device_info_active (hashcat_ctx);
@ -744,73 +765,6 @@ void status_display (hashcat_ctx_t *hashcat_ctx)
if (device_info_active > 1) event_log_info (hashcat_ctx, "Speed.Dev.#*...: %9sH/s", status_get_speed_sec_all (hashcat_ctx));
/**
* counters
*/
const u64 progress_cur = status_get_progress_cur (hashcat_ctx);
const u64 progress_rejected = status_get_progress_rejected (hashcat_ctx);
const u64 progress_cur_relative_skip = status_get_progress_cur_relative_skip (hashcat_ctx);
const u64 progress_end_relative_skip = status_get_progress_end_relative_skip (hashcat_ctx);
// Restore point
const u64 restore_point = status_get_restore_point (hashcat_ctx);
const u64 restore_total = status_get_restore_total (hashcat_ctx);
const double restore_percent = status_get_restore_percent (hashcat_ctx);
if (progress_end_relative_skip)
{
if ((user_options_extra->wordlist_mode == WL_MODE_FILE) || (user_options_extra->wordlist_mode == WL_MODE_MASK))
{
double percent_finished = (double) progress_cur_relative_skip / (double) progress_end_relative_skip;
double percent_rejected = 0.0;
if (progress_cur)
{
percent_rejected = (double) (progress_rejected) / (double) progress_cur;
}
event_log_info (hashcat_ctx, "Progress.......: %" PRIu64 "/%" PRIu64 " (%.02f%%)", progress_cur_relative_skip, progress_end_relative_skip, percent_finished * 100);
event_log_info (hashcat_ctx, "Rejected.......: %" PRIu64 "/%" PRIu64 " (%.02f%%)", progress_rejected, progress_cur_relative_skip, percent_rejected * 100);
if (user_options->restore_disable == false)
{
if (percent_finished != 1)
{
event_log_info (hashcat_ctx, "Restore.Point..: %" PRIu64 "/%" PRIu64 " (%.02f%%)", restore_point, restore_total, restore_percent * 100);
}
}
}
}
else
{
if ((user_options_extra->wordlist_mode == WL_MODE_FILE) || (user_options_extra->wordlist_mode == WL_MODE_MASK))
{
event_log_info (hashcat_ctx, "Progress.......: %" PRIu64 "/%" PRIu64 " (%.02f%%)", 0ull, 0ull, 100);
event_log_info (hashcat_ctx, "Rejected.......: %" PRIu64 "/%" PRIu64 " (%.02f%%)", 0ull, 0ull, 100);
if (user_options->restore_disable == false)
{
event_log_info (hashcat_ctx, "Restore.Point..: %" PRIu64 "/%" PRIu64 " (%.02f%%)", 0ull, 0ull, 100);
}
}
else
{
event_log_info (hashcat_ctx, "Progress.......: %" PRIu64 "", progress_cur_relative_skip);
event_log_info (hashcat_ctx, "Rejected.......: %" PRIu64 "", progress_rejected);
// --restore not allowed if stdin is used -- really? why?
//if (user_options->restore_disable == false)
//{
// event_log_info (hashcat_ctx, "Restore.Point..: %" PRIu64 "", restore_point);
//}
}
}
if (status_ctx->run_main_level1 == false) return;
for (u32 device_id = 0; device_id < opencl_ctx->devices_cnt; device_id++)