1
0
mirror of https://github.com/hashcat/hashcat.git synced 2024-12-23 07:08:19 +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);
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_read (dictstat_ctx_t *dictstat_ctx);
int dictstat_write (dictstat_ctx_t *dictstat_ctx);

View File

@ -775,6 +775,8 @@ typedef struct
typedef struct
{
bool enabled;
char *filename;
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));
}
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->base = (dictstat_t *) mycalloc (MAX_DICTSTAT, sizeof (dictstat_t));
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)
{
if (dictstat_ctx->enabled == false) return;
myfree (dictstat_ctx->filename);
myfree (dictstat_ctx->base);
}
void dictstat_read (dictstat_ctx_t *dictstat_ctx)
{
if (dictstat_ctx->enabled == false) return;
FILE *fp = fopen (dictstat_ctx->filename, "rb");
if (fp == NULL)
@ -99,6 +111,8 @@ void dictstat_read (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");
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)
{
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);
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)
{
if (dictstat_ctx->enabled == false) return;
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);

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;
@ -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);
/**
* 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
*/
@ -1061,6 +1048,12 @@ static int outer_loop (user_options_t *user_options, user_options_extra_t *user_
}
#endif
/**
* dictstat
*/
dictstat_read (dictstat_ctx);
/**
* dictionary pad
*/
@ -2689,10 +2682,7 @@ static int outer_loop (user_options_t *user_options, user_options_extra_t *user_
* Update dictionary statistic
*/
if (user_options->keyspace == false)
{
dictstat_write (dictstat_ctx);
}
dictstat_write (dictstat_ctx);
/**
* 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);
dictstat_destroy (dictstat_ctx);
loopback_destroy (loopback_ctx);
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);
/**
* dictstat init
*/
dictstat_ctx_t *dictstat_ctx = mymalloc (sizeof (dictstat_ctx_t));
dictstat_init (dictstat_ctx, user_options, folder_config);
/**
* cpu affinity
*/
@ -3521,7 +3517,7 @@ int main (int argc, char **argv)
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;
}
@ -3531,7 +3527,7 @@ int main (int argc, char **argv)
{
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;
}
@ -3539,7 +3535,7 @@ int main (int argc, char **argv)
}
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;
}
@ -3571,10 +3567,12 @@ int main (int argc, char **argv)
tuning_db_destroy (tuning_db);
induct_ctx_destroy (induct_ctx);
dictstat_destroy (dictstat_ctx);
potfile_destroy (potfile_ctx);
induct_ctx_destroy (induct_ctx);
outfile_destroy (outfile_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;
if (potfile_ctx->disable == 1) return;
if (potfile_ctx->disable == true) return;
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)
{
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++)
{
if (plain_ptr[i] < 0x20)
{
needs_hexify = 1;
needs_hexify = true;
break;
}
if (plain_ptr[i] > 0x7f)
{
needs_hexify = 1;
needs_hexify = true;
break;
}
}
if (needs_hexify == 1)
if (needs_hexify == true)
{
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)
{
if (potfile_ctx->disable == 1) return 0;
if (potfile_ctx->disable == true) return 0;
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)
{
if (potfile_ctx->disable == 1) return;
if (potfile_ctx->disable == true) 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)
{
if (potfile_ctx->disable == 1) return;
if (potfile_ctx->disable == true) 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)
{
if (potfile_ctx->disable == 1) return 0;
if (potfile_ctx->disable == true) return 0;
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)
{
if (potfile_ctx->disable == 1) return;
if (potfile_ctx->disable == true) return;
fclose (potfile_ctx->fp);
}
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;
@ -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)
{
if (potfile_ctx->disable == 1) return;
if (potfile_ctx->disable == true) return;
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)
{
if (potfile_ctx->disable == 1) return;
if (potfile_ctx->disable == true) return;
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 (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 *))
{
if (potfile_ctx->disable == 1) return;
if (potfile_ctx->disable == true) return;
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 *))
{
if (potfile_ctx->disable == 1) return;
if (potfile_ctx->disable == true) return;
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 *))
{
if (potfile_ctx->disable == 1) return;
if (potfile_ctx->disable == true) return;
// 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 *))
{
if (potfile_ctx->disable == 1) return;
if (potfile_ctx->disable == true) return;
// 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)
{
if (potfile_ctx->disable == 1) return 0;
if (potfile_ctx->disable == true) return 0;
hash_t *hashes_buf = hashes->hashes_buf;
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)
{
if (potfile_ctx->disable == 1) return;
if (potfile_ctx->disable == true) return;
myfree (potfile_ctx->filename);
}