From f56b6d20653c9ab5612cc6644457090aaf580b06 Mon Sep 17 00:00:00 2001 From: jsteube Date: Thu, 22 Sep 2016 11:56:06 +0200 Subject: [PATCH] Get rid of data.username --- include/hash_management.h | 2 +- include/hlfmt.h | 2 +- include/types.h | 1 - src/hash_management.c | 11 ++- src/hashcat.c | 3 +- src/hlfmt.c | 22 +++--- src/monitor.c | 142 ++++++++++++++++++-------------------- 7 files changed, 87 insertions(+), 96 deletions(-) diff --git a/include/hash_management.h b/include/hash_management.h index dc456f204..29558962b 100644 --- a/include/hash_management.h +++ b/include/hash_management.h @@ -11,7 +11,7 @@ int sort_by_salt (const void *v1, const void *v2); int sort_by_hash (const void *v1, const void *v2); int sort_by_hash_no_salt (const void *v1, const void *v2); -void save_hash (); +void save_hash (const user_options_t *user_options, const hashconfig_t *hashconfig, const hashes_t *hashes); void check_hash (opencl_ctx_t *opencl_ctx, hc_device_param_t *device_param, plain_t *plain); diff --git a/include/hlfmt.h b/include/hlfmt.h index 5cc159d1a..0d75f7e0f 100644 --- a/include/hlfmt.h +++ b/include/hlfmt.h @@ -27,7 +27,7 @@ typedef enum hlfmt_name char *strhlfmt (const uint hashfile_format); -void hlfmt_hash (uint hashfile_format, char *line_buf, int line_len, char **hashbuf_pos, int *hashbuf_len, const hashconfig_t *hashconfig); +void hlfmt_hash (uint hashfile_format, char *line_buf, int line_len, char **hashbuf_pos, int *hashbuf_len, const hashconfig_t *hashconfig, const user_options_t *user_options); void hlfmt_user (uint hashfile_format, char *line_buf, int line_len, char **userbuf_pos, int *userbuf_len, const hashconfig_t *hashconfig); uint hlfmt_detect (FILE *fp, uint max_check, const hashconfig_t *hashconfig); diff --git a/include/types.h b/include/types.h index 82fa21839..531e153cf 100644 --- a/include/types.h +++ b/include/types.h @@ -1075,7 +1075,6 @@ typedef struct */ hashinfo_t **hash_info; - u32 username; } hc_global_data_t; diff --git a/src/hash_management.c b/src/hash_management.c index 58f2ce3b7..6882d0717 100644 --- a/src/hash_management.c +++ b/src/hash_management.c @@ -125,11 +125,8 @@ int sort_by_hash_no_salt (const void *v1, const void *v2) return sort_by_digest_p0p1 (d1, d2); } -void save_hash () +void save_hash (const user_options_t *user_options, const hashconfig_t *hashconfig, const hashes_t *hashes) { - hashconfig_t *hashconfig = data.hashconfig; - hashes_t *hashes = data.hashes; - char *hashfile = hashes->hashfile; char new_hashfile[256] = { 0 }; @@ -165,7 +162,7 @@ void save_hash () if (hashconfig->hash_mode != 2500) { - if (data.username == 1) + if (user_options->username == 1) { user_t *user = data.hash_info[idx]->user; @@ -843,7 +840,7 @@ int hashes_init_stage1 (hashes_t *hashes, const hashconfig_t *hashconfig, potfil char *hash_buf = NULL; int hash_len = 0; - hlfmt_hash (hashlist_format, input_buf, input_len, &hash_buf, &hash_len, hashconfig); + hlfmt_hash (hashlist_format, input_buf, input_len, &hash_buf, &hash_len, hashconfig, user_options); bool hash_fmt_error = 0; @@ -1087,7 +1084,7 @@ int hashes_init_stage1 (hashes_t *hashes, const hashconfig_t *hashconfig, potfil char *hash_buf = NULL; int hash_len = 0; - hlfmt_hash (hashlist_format, line_buf, line_len, &hash_buf, &hash_len, hashconfig); + hlfmt_hash (hashlist_format, line_buf, line_len, &hash_buf, &hash_len, hashconfig, user_options); bool hash_fmt_error = 0; diff --git a/src/hashcat.c b/src/hashcat.c index 5e458cb4d..5e505e5d3 100644 --- a/src/hashcat.c +++ b/src/hashcat.c @@ -317,7 +317,6 @@ int main (int argc, char **argv) data.status = user_options->status; data.status_timer = user_options->status_timer; data.truecrypt_keyfiles = user_options->truecrypt_keyfiles; - data.username = user_options->username; data.veracrypt_keyfiles = user_options->veracrypt_keyfiles; data.veracrypt_pim = user_options->veracrypt_pim; @@ -3877,7 +3876,7 @@ int main (int argc, char **argv) if ((hashes->hashlist_mode == HL_MODE_FILE) && (user_options->remove == 1) && (hashes->digests_saved != hashes->digests_done)) { - save_hash (opencl_ctx); + save_hash (user_options, hashconfig, hashes); } /** diff --git a/src/hlfmt.c b/src/hlfmt.c index 2f5498191..9e41db985 100644 --- a/src/hlfmt.c +++ b/src/hlfmt.c @@ -51,9 +51,9 @@ static const char HLFMT_TEXT_NSLDAPS[] = "nsldaps"; // hlfmt hashcat -static void hlfmt_hash_hashcat (char *line_buf, int line_len, char **hashbuf_pos, int *hashbuf_len, const hashconfig_t *hashconfig) +static void hlfmt_hash_hashcat (char *line_buf, int line_len, char **hashbuf_pos, int *hashbuf_len, const hashconfig_t *hashconfig, const user_options_t *user_options) { - if (data.username == 0) + if (user_options->username == 0) { *hashbuf_pos = line_buf; *hashbuf_len = line_len; @@ -333,14 +333,14 @@ char *strhlfmt (const uint hashfile_format) return ((char *) "Unknown"); } -void hlfmt_hash (uint hashfile_format, char *line_buf, int line_len, char **hashbuf_pos, int *hashbuf_len, const hashconfig_t *hashconfig) +void hlfmt_hash (uint hashfile_format, char *line_buf, int line_len, char **hashbuf_pos, int *hashbuf_len, const hashconfig_t *hashconfig, const user_options_t *user_options) { switch (hashfile_format) { - case HLFMT_HASHCAT: hlfmt_hash_hashcat (line_buf, line_len, hashbuf_pos, hashbuf_len, hashconfig); break; - case HLFMT_PWDUMP: hlfmt_hash_pwdump (line_buf, line_len, hashbuf_pos, hashbuf_len, hashconfig); break; - case HLFMT_PASSWD: hlfmt_hash_passwd (line_buf, line_len, hashbuf_pos, hashbuf_len); break; - case HLFMT_SHADOW: hlfmt_hash_shadow (line_buf, line_len, hashbuf_pos, hashbuf_len); break; + case HLFMT_HASHCAT: hlfmt_hash_hashcat (line_buf, line_len, hashbuf_pos, hashbuf_len, hashconfig, user_options); break; + case HLFMT_PWDUMP: hlfmt_hash_pwdump (line_buf, line_len, hashbuf_pos, hashbuf_len, hashconfig); break; + case HLFMT_PASSWD: hlfmt_hash_passwd (line_buf, line_len, hashbuf_pos, hashbuf_len); break; + case HLFMT_SHADOW: hlfmt_hash_shadow (line_buf, line_len, hashbuf_pos, hashbuf_len); break; } } @@ -348,10 +348,10 @@ void hlfmt_user (uint hashfile_format, char *line_buf, int line_len, char **user { switch (hashfile_format) { - case HLFMT_HASHCAT: hlfmt_user_hashcat (line_buf, line_len, userbuf_pos, userbuf_len, hashconfig); break; - case HLFMT_PWDUMP: hlfmt_user_pwdump (line_buf, line_len, userbuf_pos, userbuf_len); break; - case HLFMT_PASSWD: hlfmt_user_passwd (line_buf, line_len, userbuf_pos, userbuf_len); break; - case HLFMT_SHADOW: hlfmt_user_shadow (line_buf, line_len, userbuf_pos, userbuf_len); break; + case HLFMT_HASHCAT: hlfmt_user_hashcat (line_buf, line_len, userbuf_pos, userbuf_len, hashconfig); break; + case HLFMT_PWDUMP: hlfmt_user_pwdump (line_buf, line_len, userbuf_pos, userbuf_len); break; + case HLFMT_PASSWD: hlfmt_user_passwd (line_buf, line_len, userbuf_pos, userbuf_len); break; + case HLFMT_SHADOW: hlfmt_user_shadow (line_buf, line_len, userbuf_pos, userbuf_len); break; } } diff --git a/src/monitor.c b/src/monitor.c index 044fc3042..2137cd0b9 100644 --- a/src/monitor.c +++ b/src/monitor.c @@ -39,22 +39,51 @@ extern hc_thread_mutex_t mux_hwmon; void *thread_monitor (void *p) { - uint runtime_check = 0; - uint remove_check = 0; - uint status_check = 0; - uint restore_check = 0; + opencl_ctx_t *opencl_ctx = data.opencl_ctx; + hashconfig_t *hashconfig = data.hashconfig; + hashes_t *hashes = data.hashes; + user_options_t *user_options = data.user_options; - uint restore_left = data.restore_timer; - uint remove_left = data.remove_timer; - uint status_left = data.status_timer; + bool runtime_check = false; + bool remove_check = false; + bool status_check = false; + bool restore_check = false; + bool hwmon_check = false; - opencl_ctx_t *opencl_ctx = data.opencl_ctx; - hashconfig_t *hashconfig = data.hashconfig; - hashes_t *hashes = data.hashes; + const int sleep_time = 1; + const int temp_threshold = 1; // degrees celcius + const int fan_speed_min = 15; // in percentage + const int fan_speed_max = 100; - uint hwmon_check = 0; + if (user_options->runtime) + { + runtime_check = true; + } - int slowdown_warnings = 0; + if (user_options->restore_timer) + { + restore_check = true; + } + + if ((user_options->remove == true) && (hashes->hashlist_mode == HL_MODE_FILE)) + { + remove_check = true; + } + + if (user_options->status == true) + { + status_check = true; + } + + if (user_options->gpu_temp_disable == false) + { + hwmon_check = true; + } + + if ((runtime_check == false) && (remove_check == false) && (status_check == false) && (restore_check == false) && (hwmon_check == false)) + { + return (p); + } // these variables are mainly used for fan control @@ -65,48 +94,15 @@ void *thread_monitor (void *p) int *temp_diff_old = (int *) mycalloc (opencl_ctx->devices_cnt, sizeof (int)); int *temp_diff_sum = (int *) mycalloc (opencl_ctx->devices_cnt, sizeof (int)); - int temp_threshold = 1; // degrees celcius - - int fan_speed_min = 15; // in percentage - int fan_speed_max = 100; - time_t last_temp_check_time; - uint sleep_time = 1; + time (&last_temp_check_time); - if (data.runtime) - { - runtime_check = 1; - } + u32 slowdown_warnings = 0; - if (data.restore_timer) - { - restore_check = 1; - } - - if ((data.remove == 1) && (hashes->hashlist_mode == HL_MODE_FILE)) - { - remove_check = 1; - } - - if (data.status == 1) - { - status_check = 1; - } - - if (data.gpu_temp_disable == 0) - { - time (&last_temp_check_time); - - hwmon_check = 1; - } - - if ((runtime_check == 0) && (remove_check == 0) && (status_check == 0) && (restore_check == 0)) - { - if (hwmon_check == 0) - - return (p); - } + u32 restore_left = user_options->restore_timer; + u32 remove_left = user_options->remove_timer; + u32 status_left = user_options->status_timer; while (data.shutdown_inner == 0) { @@ -114,7 +110,7 @@ void *thread_monitor (void *p) if (opencl_ctx->devices_status == STATUS_INIT) continue; - if (hwmon_check == 1) + if (hwmon_check == true) { hc_thread_mutex_lock (mux_hwmon); @@ -147,7 +143,7 @@ void *thread_monitor (void *p) { if (slowdown_warnings < 3) { - if (data.quiet == false) clear_prompt (); + if (user_options->quiet == false) clear_prompt (); log_info ("WARNING: Drivers temperature threshold hit on GPU #%d, expect performance to drop...", device_id + 1); @@ -156,7 +152,7 @@ void *thread_monitor (void *p) log_info (""); } - if (data.quiet == false) send_prompt (); + if (user_options->quiet == false) send_prompt (); slowdown_warnings++; } @@ -172,7 +168,7 @@ void *thread_monitor (void *p) hc_thread_mutex_unlock (mux_hwmon); } - if (hwmon_check == 1) + if (hwmon_check == true) { hc_thread_mutex_lock (mux_hwmon); @@ -194,7 +190,7 @@ void *thread_monitor (void *p) const int temperature = hm_get_temperature_with_device_id (opencl_ctx, device_id); - if (temperature > (int) data.gpu_temp_abort) + if (temperature > (int) user_options->gpu_temp_abort) { log_error ("ERROR: Temperature limit on GPU %d reached, aborting...", device_id + 1); @@ -203,7 +199,7 @@ void *thread_monitor (void *p) break; } - const int gpu_temp_retain = data.gpu_temp_retain; + const u32 gpu_temp_retain = user_options->gpu_temp_retain; if (gpu_temp_retain) { @@ -275,19 +271,19 @@ void *thread_monitor (void *p) hc_thread_mutex_unlock (mux_hwmon); } - if (restore_check == 1) + if (restore_check == true) { restore_left--; - if (restore_left == false) + if (restore_left == 0) { - if (data.restore_disable == 0) cycle_restore (opencl_ctx); + if (user_options->restore_disable == 0) cycle_restore (opencl_ctx); - restore_left = data.restore_timer; + restore_left = user_options->restore_timer; } } - if ((runtime_check == 1) && (data.runtime_start > 0)) + if ((runtime_check == true) && (data.runtime_start > 0)) { double ms_paused = data.ms_paused; @@ -308,51 +304,51 @@ void *thread_monitor (void *p) if (runtime_left <= 0) { - if (data.benchmark == false) + if (user_options->benchmark == false) { - if (data.quiet == false) log_info ("\nNOTE: Runtime limit reached, aborting...\n"); + if (user_options->quiet == false) log_info ("\nNOTE: Runtime limit reached, aborting...\n"); } myabort (opencl_ctx); } } - if (remove_check == 1) + if (remove_check == true) { remove_left--; - if (remove_left == false) + if (remove_left == 0) { if (hashes->digests_saved != hashes->digests_done) { hashes->digests_saved = hashes->digests_done; - save_hash (); + save_hash (user_options, hashconfig, hashes); } - remove_left = data.remove_timer; + remove_left = user_options->remove_timer; } } - if (status_check == 1) + if (status_check == true) { status_left--; - if (status_left == false) + if (status_left == 0) { hc_thread_mutex_lock (mux_display); - if (data.quiet == false) clear_prompt (); + if (user_options->quiet == false) clear_prompt (); - if (data.quiet == false) log_info (""); + if (user_options->quiet == false) log_info (""); status_display (opencl_ctx, hashconfig, hashes); - if (data.quiet == false) log_info (""); + if (user_options->quiet == false) log_info (""); hc_thread_mutex_unlock (mux_display); - status_left = data.status_timer; + status_left = user_options->status_timer; } } }