1
0
mirror of https://github.com/hashcat/hashcat.git synced 2024-12-23 15:18:16 +00:00

Move dictstat_init() out of outer loop, also add enabled flag

This commit is contained in:
jsteube 2016-09-24 13:01:17 +02:00
parent 489c88e061
commit 521db46c11
5 changed files with 67 additions and 47 deletions

View File

@ -19,7 +19,7 @@
int sort_by_dictstat (const void *s1, const void *s2); int sort_by_dictstat (const void *s1, const void *s2);
void dictstat_init (dictstat_ctx_t *dictstat_ctx, char *profile_dir); void dictstat_init (dictstat_ctx_t *dictstat_ctx, const user_options_t *user_options, const folder_config_t *folder_config);
void dictstat_destroy (dictstat_ctx_t *dictstat_ctx); void dictstat_destroy (dictstat_ctx_t *dictstat_ctx);
void dictstat_read (dictstat_ctx_t *dictstat_ctx); void dictstat_read (dictstat_ctx_t *dictstat_ctx);
int dictstat_write (dictstat_ctx_t *dictstat_ctx); int dictstat_write (dictstat_ctx_t *dictstat_ctx);

View File

@ -775,6 +775,8 @@ typedef struct
typedef struct typedef struct
{ {
bool enabled;
char *filename; char *filename;
dictstat_t *base; dictstat_t *base;

View File

@ -26,23 +26,35 @@ int sort_by_dictstat (const void *s1, const void *s2)
return memcmp (&d1->stat, &d2->stat, sizeof (struct stat)); return memcmp (&d1->stat, &d2->stat, sizeof (struct stat));
} }
void dictstat_init (dictstat_ctx_t *dictstat_ctx, char *profile_dir) void dictstat_init (dictstat_ctx_t *dictstat_ctx, const user_options_t *user_options, const folder_config_t *folder_config)
{ {
dictstat_ctx->enabled = false;
if (user_options->show == true) return;
if (user_options->left == true) return;
if (user_options->keyspace == true) return;
if (user_options->benchmark == true) return;
dictstat_ctx->filename = (char *) mymalloc (HCBUFSIZ_TINY); dictstat_ctx->filename = (char *) mymalloc (HCBUFSIZ_TINY);
dictstat_ctx->base = (dictstat_t *) mycalloc (MAX_DICTSTAT, sizeof (dictstat_t)); dictstat_ctx->base = (dictstat_t *) mycalloc (MAX_DICTSTAT, sizeof (dictstat_t));
dictstat_ctx->cnt = 0; dictstat_ctx->cnt = 0;
dictstat_ctx->enabled = true;
generate_dictstat_filename (profile_dir, dictstat_ctx->filename); generate_dictstat_filename (folder_config->profile_dir, dictstat_ctx->filename);
} }
void dictstat_destroy (dictstat_ctx_t *dictstat_ctx) void dictstat_destroy (dictstat_ctx_t *dictstat_ctx)
{ {
if (dictstat_ctx->enabled == false) return;
myfree (dictstat_ctx->filename); myfree (dictstat_ctx->filename);
myfree (dictstat_ctx->base); myfree (dictstat_ctx->base);
} }
void dictstat_read (dictstat_ctx_t *dictstat_ctx) void dictstat_read (dictstat_ctx_t *dictstat_ctx)
{ {
if (dictstat_ctx->enabled == false) return;
FILE *fp = fopen (dictstat_ctx->filename, "rb"); FILE *fp = fopen (dictstat_ctx->filename, "rb");
if (fp == NULL) if (fp == NULL)
@ -99,6 +111,8 @@ void dictstat_read (dictstat_ctx_t *dictstat_ctx)
int dictstat_write (dictstat_ctx_t *dictstat_ctx) int dictstat_write (dictstat_ctx_t *dictstat_ctx)
{ {
if (dictstat_ctx->enabled == false) return 0;
FILE *fp = fopen (dictstat_ctx->filename, "wb"); FILE *fp = fopen (dictstat_ctx->filename, "wb");
if (fp == NULL) if (fp == NULL)
@ -117,6 +131,8 @@ int dictstat_write (dictstat_ctx_t *dictstat_ctx)
u64 dictstat_find (dictstat_ctx_t *dictstat_ctx, dictstat_t *d) u64 dictstat_find (dictstat_ctx_t *dictstat_ctx, dictstat_t *d)
{ {
if (dictstat_ctx->enabled == false) return 0;
dictstat_t *d_cache = (dictstat_t *) lfind (d, dictstat_ctx->base, &dictstat_ctx->cnt, sizeof (dictstat_t), sort_by_dictstat); dictstat_t *d_cache = (dictstat_t *) lfind (d, dictstat_ctx->base, &dictstat_ctx->cnt, sizeof (dictstat_t), sort_by_dictstat);
if (d_cache == NULL) return 0; if (d_cache == NULL) return 0;
@ -126,6 +142,8 @@ u64 dictstat_find (dictstat_ctx_t *dictstat_ctx, dictstat_t *d)
void dictstat_append (dictstat_ctx_t *dictstat_ctx, dictstat_t *d) void dictstat_append (dictstat_ctx_t *dictstat_ctx, dictstat_t *d)
{ {
if (dictstat_ctx->enabled == false) return;
if (dictstat_ctx->cnt == MAX_DICTSTAT) if (dictstat_ctx->cnt == MAX_DICTSTAT)
{ {
log_error ("ERROR: There are too many entries in the %s database. You have to remove/rename it.", dictstat_ctx->filename); log_error ("ERROR: There are too many entries in the %s database. You have to remove/rename it.", dictstat_ctx->filename);

View File

@ -203,7 +203,7 @@ static void setup_seeding (const user_options_t *user_options, const time_t proc
} }
} }
static int outer_loop (user_options_t *user_options, user_options_extra_t *user_options_extra, int myargc, char **myargv, folder_config_t *folder_config, logfile_ctx_t *logfile_ctx, tuning_db_t *tuning_db, induct_ctx_t *induct_ctx, outcheck_ctx_t *outcheck_ctx, outfile_ctx_t *outfile_ctx, potfile_ctx_t *potfile_ctx, rules_ctx_t *rules_ctx, opencl_ctx_t *opencl_ctx) static int outer_loop (user_options_t *user_options, user_options_extra_t *user_options_extra, int myargc, char **myargv, folder_config_t *folder_config, logfile_ctx_t *logfile_ctx, tuning_db_t *tuning_db, induct_ctx_t *induct_ctx, outcheck_ctx_t *outcheck_ctx, outfile_ctx_t *outfile_ctx, potfile_ctx_t *potfile_ctx, rules_ctx_t *rules_ctx, dictstat_ctx_t *dictstat_ctx, opencl_ctx_t *opencl_ctx)
{ {
opencl_ctx->devices_status = STATUS_INIT; opencl_ctx->devices_status = STATUS_INIT;
@ -350,19 +350,6 @@ static int outer_loop (user_options_t *user_options, user_options_extra_t *user_
bitmap_ctx_init (bitmap_ctx, user_options, hashconfig, hashes); bitmap_ctx_init (bitmap_ctx, user_options, hashconfig, hashes);
/**
* dictstat
*/
dictstat_ctx_t *dictstat_ctx = mymalloc (sizeof (dictstat_ctx_t));
dictstat_init (dictstat_ctx, folder_config->profile_dir);
if (user_options->keyspace == false)
{
dictstat_read (dictstat_ctx);
}
/** /**
* loopback * loopback
*/ */
@ -1061,6 +1048,12 @@ static int outer_loop (user_options_t *user_options, user_options_extra_t *user_
} }
#endif #endif
/**
* dictstat
*/
dictstat_read (dictstat_ctx);
/** /**
* dictionary pad * dictionary pad
*/ */
@ -2689,10 +2682,7 @@ static int outer_loop (user_options_t *user_options, user_options_extra_t *user_
* Update dictionary statistic * Update dictionary statistic
*/ */
if (user_options->keyspace == false) dictstat_write (dictstat_ctx);
{
dictstat_write (dictstat_ctx);
}
/** /**
* Update loopback file * Update loopback file
@ -3180,8 +3170,6 @@ static int outer_loop (user_options_t *user_options, user_options_extra_t *user_
potfile_write_close (potfile_ctx); potfile_write_close (potfile_ctx);
dictstat_destroy (dictstat_ctx);
loopback_destroy (loopback_ctx); loopback_destroy (loopback_ctx);
wl_data_destroy (wl_data); wl_data_destroy (wl_data);
@ -3440,6 +3428,14 @@ int main (int argc, char **argv)
potfile_init (potfile_ctx, folder_config->profile_dir, user_options->potfile_path, user_options->potfile_disable); potfile_init (potfile_ctx, folder_config->profile_dir, user_options->potfile_path, user_options->potfile_disable);
/**
* dictstat init
*/
dictstat_ctx_t *dictstat_ctx = mymalloc (sizeof (dictstat_ctx_t));
dictstat_init (dictstat_ctx, user_options, folder_config);
/** /**
* cpu affinity * cpu affinity
*/ */
@ -3521,7 +3517,7 @@ int main (int argc, char **argv)
if (user_options->hash_mode_chgd == true) if (user_options->hash_mode_chgd == true)
{ {
const int rc = outer_loop (user_options, user_options_extra, myargc, myargv, folder_config, logfile_ctx, tuning_db, induct_ctx, outcheck_ctx, outfile_ctx, potfile_ctx, rules_ctx, opencl_ctx); const int rc = outer_loop (user_options, user_options_extra, myargc, myargv, folder_config, logfile_ctx, tuning_db, induct_ctx, outcheck_ctx, outfile_ctx, potfile_ctx, rules_ctx, dictstat_ctx, opencl_ctx);
if (rc == -1) return -1; if (rc == -1) return -1;
} }
@ -3531,7 +3527,7 @@ int main (int argc, char **argv)
{ {
user_options->hash_mode = DEFAULT_BENCHMARK_ALGORITHMS_BUF[algorithm_pos]; user_options->hash_mode = DEFAULT_BENCHMARK_ALGORITHMS_BUF[algorithm_pos];
const int rc = outer_loop (user_options, user_options_extra, myargc, myargv, folder_config, logfile_ctx, tuning_db, induct_ctx, outcheck_ctx, outfile_ctx, potfile_ctx, rules_ctx, opencl_ctx); const int rc = outer_loop (user_options, user_options_extra, myargc, myargv, folder_config, logfile_ctx, tuning_db, induct_ctx, outcheck_ctx, outfile_ctx, potfile_ctx, rules_ctx, dictstat_ctx, opencl_ctx);
if (rc == -1) return -1; if (rc == -1) return -1;
} }
@ -3539,7 +3535,7 @@ int main (int argc, char **argv)
} }
else else
{ {
const int rc = outer_loop (user_options, user_options_extra, myargc, myargv, folder_config, logfile_ctx, tuning_db, induct_ctx, outcheck_ctx, outfile_ctx, potfile_ctx, rules_ctx, opencl_ctx); const int rc = outer_loop (user_options, user_options_extra, myargc, myargv, folder_config, logfile_ctx, tuning_db, induct_ctx, outcheck_ctx, outfile_ctx, potfile_ctx, rules_ctx, dictstat_ctx, opencl_ctx);
if (rc == -1) return -1; if (rc == -1) return -1;
} }
@ -3571,10 +3567,12 @@ int main (int argc, char **argv)
tuning_db_destroy (tuning_db); tuning_db_destroy (tuning_db);
induct_ctx_destroy (induct_ctx); dictstat_destroy (dictstat_ctx);
potfile_destroy (potfile_ctx); potfile_destroy (potfile_ctx);
induct_ctx_destroy (induct_ctx);
outfile_destroy (outfile_ctx); outfile_destroy (outfile_ctx);
outcheck_ctx_destroy (outcheck_ctx); outcheck_ctx_destroy (outcheck_ctx);

View File

@ -110,7 +110,7 @@ void potfile_init (potfile_ctx_t *potfile_ctx, const char *profile_dir, const ch
{ {
potfile_ctx->disable = potfile_disable; potfile_ctx->disable = potfile_disable;
if (potfile_ctx->disable == 1) return; if (potfile_ctx->disable == true) return;
potfile_ctx->fp = NULL; potfile_ctx->fp = NULL;
@ -133,28 +133,28 @@ void potfile_init (potfile_ctx_t *potfile_ctx, const char *profile_dir, const ch
void potfile_format_plain (potfile_ctx_t *potfile_ctx, const unsigned char *plain_ptr, const uint plain_len) void potfile_format_plain (potfile_ctx_t *potfile_ctx, const unsigned char *plain_ptr, const uint plain_len)
{ {
if (potfile_ctx->disable == 1) return; if (potfile_ctx->disable == true) return;
int needs_hexify = 0; bool needs_hexify = false;
for (uint i = 0; i < plain_len; i++) for (uint i = 0; i < plain_len; i++)
{ {
if (plain_ptr[i] < 0x20) if (plain_ptr[i] < 0x20)
{ {
needs_hexify = 1; needs_hexify = true;
break; break;
} }
if (plain_ptr[i] > 0x7f) if (plain_ptr[i] > 0x7f)
{ {
needs_hexify = 1; needs_hexify = true;
break; break;
} }
} }
if (needs_hexify == 1) if (needs_hexify == true)
{ {
fprintf (potfile_ctx->fp, "$HEX["); fprintf (potfile_ctx->fp, "$HEX[");
@ -173,7 +173,7 @@ void potfile_format_plain (potfile_ctx_t *potfile_ctx, const unsigned char *plai
int potfile_read_open (potfile_ctx_t *potfile_ctx) int potfile_read_open (potfile_ctx_t *potfile_ctx)
{ {
if (potfile_ctx->disable == 1) return 0; if (potfile_ctx->disable == true) return 0;
potfile_ctx->fp = fopen (potfile_ctx->filename, "rb"); potfile_ctx->fp = fopen (potfile_ctx->filename, "rb");
@ -189,7 +189,7 @@ int potfile_read_open (potfile_ctx_t *potfile_ctx)
void potfile_read_parse (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashconfig) void potfile_read_parse (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashconfig)
{ {
if (potfile_ctx->disable == 1) return; if (potfile_ctx->disable == true) return;
if (potfile_ctx->fp == NULL) return; if (potfile_ctx->fp == NULL) return;
@ -296,7 +296,7 @@ void potfile_read_parse (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashcon
void potfile_read_close (potfile_ctx_t *potfile_ctx) void potfile_read_close (potfile_ctx_t *potfile_ctx)
{ {
if (potfile_ctx->disable == 1) return; if (potfile_ctx->disable == true) return;
if (potfile_ctx->fp == NULL) return; if (potfile_ctx->fp == NULL) return;
@ -305,7 +305,7 @@ void potfile_read_close (potfile_ctx_t *potfile_ctx)
int potfile_write_open (potfile_ctx_t *potfile_ctx) int potfile_write_open (potfile_ctx_t *potfile_ctx)
{ {
if (potfile_ctx->disable == 1) return 0; if (potfile_ctx->disable == true) return 0;
potfile_ctx->fp = fopen (potfile_ctx->filename, "ab"); potfile_ctx->fp = fopen (potfile_ctx->filename, "ab");
@ -321,14 +321,14 @@ int potfile_write_open (potfile_ctx_t *potfile_ctx)
void potfile_write_close (potfile_ctx_t *potfile_ctx) void potfile_write_close (potfile_ctx_t *potfile_ctx)
{ {
if (potfile_ctx->disable == 1) return; if (potfile_ctx->disable == true) return;
fclose (potfile_ctx->fp); fclose (potfile_ctx->fp);
} }
void potfile_write_append (potfile_ctx_t *potfile_ctx, const char *out_buf, u8 *plain_ptr, unsigned int plain_len) void potfile_write_append (potfile_ctx_t *potfile_ctx, const char *out_buf, u8 *plain_ptr, unsigned int plain_len)
{ {
if (potfile_ctx->disable == 1) return; if (potfile_ctx->disable == true) return;
FILE *fp = potfile_ctx->fp; FILE *fp = potfile_ctx->fp;
@ -343,7 +343,7 @@ void potfile_write_append (potfile_ctx_t *potfile_ctx, const char *out_buf, u8 *
void potfile_hash_alloc (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashconfig, const uint num) void potfile_hash_alloc (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashconfig, const uint num)
{ {
if (potfile_ctx->disable == 1) return; if (potfile_ctx->disable == true) return;
uint pos = 0; uint pos = 0;
@ -373,7 +373,7 @@ void potfile_hash_alloc (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashcon
void potfile_hash_free (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashconfig) void potfile_hash_free (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashconfig)
{ {
if (potfile_ctx->disable == 1) return; if (potfile_ctx->disable == true) return;
for (uint i = 0; i < potfile_ctx->pot_cnt; i++) for (uint i = 0; i < potfile_ctx->pot_cnt; i++)
{ {
@ -393,11 +393,13 @@ void potfile_hash_free (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashconf
myfree (hashes_buf->esalt); myfree (hashes_buf->esalt);
} }
} }
myfree (potfile_ctx->pot);
} }
void potfile_show_request (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashconfig, outfile_ctx_t *outfile_ctx, char *input_buf, int input_len, hash_t *hashes_buf, int (*sort_by_pot) (const void *, const void *)) void potfile_show_request (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashconfig, outfile_ctx_t *outfile_ctx, char *input_buf, int input_len, hash_t *hashes_buf, int (*sort_by_pot) (const void *, const void *))
{ {
if (potfile_ctx->disable == 1) return; if (potfile_ctx->disable == true) return;
pot_t pot_key; pot_t pot_key;
@ -436,7 +438,7 @@ void potfile_show_request (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashc
void potfile_left_request (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashconfig, outfile_ctx_t *outfile_ctx, char *input_buf, int input_len, hash_t *hashes_buf, int (*sort_by_pot) (const void *, const void *)) void potfile_left_request (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashconfig, outfile_ctx_t *outfile_ctx, char *input_buf, int input_len, hash_t *hashes_buf, int (*sort_by_pot) (const void *, const void *))
{ {
if (potfile_ctx->disable == 1) return; if (potfile_ctx->disable == true) return;
pot_t pot_key; pot_t pot_key;
@ -456,7 +458,7 @@ void potfile_left_request (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashc
void potfile_show_request_lm (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashconfig, outfile_ctx_t *outfile_ctx, char *input_buf, int input_len, hash_t *hash_left, hash_t *hash_right, int (*sort_by_pot) (const void *, const void *)) void potfile_show_request_lm (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashconfig, outfile_ctx_t *outfile_ctx, char *input_buf, int input_len, hash_t *hash_left, hash_t *hash_right, int (*sort_by_pot) (const void *, const void *))
{ {
if (potfile_ctx->disable == 1) return; if (potfile_ctx->disable == true) return;
// left // left
@ -578,7 +580,7 @@ void potfile_show_request_lm (potfile_ctx_t *potfile_ctx, const hashconfig_t *ha
void potfile_left_request_lm (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashconfig, outfile_ctx_t *outfile_ctx, char *input_buf, int input_len, hash_t *hash_left, hash_t *hash_right, int (*sort_by_pot) (const void *, const void *)) void potfile_left_request_lm (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashconfig, outfile_ctx_t *outfile_ctx, char *input_buf, int input_len, hash_t *hash_left, hash_t *hash_right, int (*sort_by_pot) (const void *, const void *))
{ {
if (potfile_ctx->disable == 1) return; if (potfile_ctx->disable == true) return;
// left // left
@ -660,7 +662,7 @@ void potfile_left_request_lm (potfile_ctx_t *potfile_ctx, const hashconfig_t *ha
int potfile_remove_parse (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashconfig, const hashes_t *hashes) int potfile_remove_parse (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashconfig, const hashes_t *hashes)
{ {
if (potfile_ctx->disable == 1) return 0; if (potfile_ctx->disable == true) return 0;
hash_t *hashes_buf = hashes->hashes_buf; hash_t *hashes_buf = hashes->hashes_buf;
uint hashes_cnt = hashes->hashes_cnt; uint hashes_cnt = hashes->hashes_cnt;
@ -871,7 +873,7 @@ int potfile_remove_parse (potfile_ctx_t *potfile_ctx, const hashconfig_t *hashco
void potfile_destroy (potfile_ctx_t *potfile_ctx) void potfile_destroy (potfile_ctx_t *potfile_ctx)
{ {
if (potfile_ctx->disable == 1) return; if (potfile_ctx->disable == true) return;
myfree (potfile_ctx->filename); myfree (potfile_ctx->filename);
} }