1
0
mirror of https://github.com/hashcat/hashcat.git synced 2025-01-24 14:41:16 +00:00

Update wordlist.c function parameters

This commit is contained in:
jsteube 2016-10-06 16:16:56 +02:00
parent a97e31881c
commit a5e83c27c3
6 changed files with 87 additions and 42 deletions

View File

@ -9,21 +9,18 @@
#include <time.h> #include <time.h>
#include <inttypes.h> #include <inttypes.h>
u32 convert_from_hex (char *line_buf, const u32 line_len, const user_options_t *user_options); u32 convert_from_hex (hashcat_ctx_t *hashcat_ctx, char *line_buf, const u32 line_len);
void load_segment (wl_data_t *wl_data, FILE *fd); void pw_add (hc_device_param_t *device_param, const u8 *pw_buf, const int pw_len);
void get_next_word_lm (char *buf, u64 sz, u64 *len, u64 *off); void get_next_word_lm (char *buf, u64 sz, u64 *len, u64 *off);
void get_next_word_uc (char *buf, u64 sz, u64 *len, u64 *off); void get_next_word_uc (char *buf, u64 sz, u64 *len, u64 *off);
void get_next_word_std (char *buf, u64 sz, u64 *len, u64 *off); void get_next_word_std (char *buf, u64 sz, u64 *len, u64 *off);
void get_next_word (wl_data_t *wl_data, const user_options_t *user_options, const user_options_extra_t *user_options_extra, FILE *fd, char **out_buf, u32 *out_len); void get_next_word (hashcat_ctx_t *hashcat_ctx, FILE *fd, char **out_buf, u32 *out_len);
void load_segment (hashcat_ctx_t *hashcat_ctx, FILE *fd);
void pw_add (hc_device_param_t *device_param, const u8 *pw_buf, const int pw_len); u64 count_words (hashcat_ctx_t *hashcat_ctx, FILE *fd, const char *dictfile);
void wl_data_init (hashcat_ctx_t *hashcat_ctx);
u64 count_words (wl_data_t *wl_data, const user_options_t *user_options, const user_options_extra_t *user_options_extra, const straight_ctx_t *straight_ctx, const combinator_ctx_t *combinator_ctx, FILE *fd, const char *dictfile, dictstat_ctx_t *dictstat_ctx); void wl_data_destroy (hashcat_ctx_t *hashcat_ctx);
void wl_data_init (wl_data_t *wl_data, const user_options_t *user_options, const hashconfig_t *hashconfig);
void wl_data_destroy (wl_data_t *wl_data);
#endif // _WORDLIST_H #endif // _WORDLIST_H

View File

@ -13,11 +13,8 @@
int combinator_ctx_init (hashcat_ctx_t *hashcat_ctx) int combinator_ctx_init (hashcat_ctx_t *hashcat_ctx)
{ {
combinator_ctx_t *combinator_ctx = hashcat_ctx->combinator_ctx; combinator_ctx_t *combinator_ctx = hashcat_ctx->combinator_ctx;
dictstat_ctx_t *dictstat_ctx = hashcat_ctx->dictstat_ctx;
straight_ctx_t *straight_ctx = hashcat_ctx->straight_ctx;
user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra; user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra;
user_options_t *user_options = hashcat_ctx->user_options; user_options_t *user_options = hashcat_ctx->user_options;
wl_data_t *wl_data = hashcat_ctx->wl_data;
combinator_ctx->enabled = false; combinator_ctx->enabled = false;
@ -109,7 +106,7 @@ int combinator_ctx_init (hashcat_ctx_t *hashcat_ctx)
combinator_ctx->combs_cnt = 1; combinator_ctx->combs_cnt = 1;
const u64 words1_cnt = count_words (wl_data, user_options, user_options_extra, straight_ctx, combinator_ctx, fp1, dictfile1, dictstat_ctx); const u64 words1_cnt = count_words (hashcat_ctx, fp1, dictfile1);
if (words1_cnt == 0) if (words1_cnt == 0)
{ {
@ -123,7 +120,7 @@ int combinator_ctx_init (hashcat_ctx_t *hashcat_ctx)
combinator_ctx->combs_cnt = 1; combinator_ctx->combs_cnt = 1;
const u64 words2_cnt = count_words (wl_data, user_options, user_options_extra, straight_ctx, combinator_ctx, fp2, dictfile2, dictstat_ctx); const u64 words2_cnt = count_words (hashcat_ctx, fp2, dictfile2);
if (words2_cnt == 0) if (words2_cnt == 0)
{ {

View File

@ -140,7 +140,7 @@ static void calc_stdin (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_pa
u32 line_len = (u32) in_superchop (line_buf); u32 line_len = (u32) in_superchop (line_buf);
line_len = convert_from_hex (line_buf, line_len, user_options); line_len = convert_from_hex (hashcat_ctx, line_buf, line_len);
// post-process rule engine // post-process rule engine
@ -362,9 +362,39 @@ static void calc (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param)
} }
} }
wl_data_t *wl_data = (wl_data_t *) mymalloc (sizeof (wl_data_t)); hashcat_ctx_t *hashcat_ctx_tmp = (hashcat_ctx_t *) mymalloc (sizeof (hashcat_ctx_t));
wl_data_init (wl_data, user_options, hashconfig); /*
hashcat_ctx_tmp->bitmap_ctx = hashcat_ctx->bitmap_ctx;
hashcat_ctx_tmp->combinator_ctx = hashcat_ctx->combinator_ctx;
hashcat_ctx_tmp->cpt_ctx = hashcat_ctx->cpt_ctx;
hashcat_ctx_tmp->debugfile_ctx = hashcat_ctx->debugfile_ctx;
hashcat_ctx_tmp->dictstat_ctx = hashcat_ctx->dictstat_ctx;
hashcat_ctx_tmp->folder_config = hashcat_ctx->folder_config;
hashcat_ctx_tmp->hashconfig = hashcat_ctx->hashconfig;
hashcat_ctx_tmp->hashes = hashcat_ctx->hashes;
hashcat_ctx_tmp->hwmon_ctx = hashcat_ctx->hwmon_ctx;
hashcat_ctx_tmp->induct_ctx = hashcat_ctx->induct_ctx;
hashcat_ctx_tmp->logfile_ctx = hashcat_ctx->logfile_ctx;
hashcat_ctx_tmp->loopback_ctx = hashcat_ctx->loopback_ctx;
hashcat_ctx_tmp->mask_ctx = hashcat_ctx->mask_ctx;
hashcat_ctx_tmp->opencl_ctx = hashcat_ctx->opencl_ctx;
hashcat_ctx_tmp->outcheck_ctx = hashcat_ctx->outcheck_ctx;
hashcat_ctx_tmp->outfile_ctx = hashcat_ctx->outfile_ctx;
hashcat_ctx_tmp->potfile_ctx = hashcat_ctx->potfile_ctx;
hashcat_ctx_tmp->restore_ctx = hashcat_ctx->restore_ctx;
hashcat_ctx_tmp->status_ctx = hashcat_ctx->status_ctx;
hashcat_ctx_tmp->straight_ctx = hashcat_ctx->straight_ctx;
hashcat_ctx_tmp->tuning_db = hashcat_ctx->tuning_db;
hashcat_ctx_tmp->user_options_extra = hashcat_ctx->user_options_extra;
hashcat_ctx_tmp->user_options = hashcat_ctx->user_options;
*/
memcpy (hashcat_ctx_tmp, hashcat_ctx, sizeof (hashcat_ctx_t)); // yes we actually want to copy these pointers
hashcat_ctx_tmp->wl_data = (wl_data_t *) mymalloc (sizeof (wl_data_t));
wl_data_init (hashcat_ctx_tmp);
u64 words_cur = 0; u64 words_cur = 0;
@ -389,13 +419,13 @@ static void calc (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param)
char *line_buf; char *line_buf;
u32 line_len; u32 line_len;
for ( ; words_cur < words_off; words_cur++) get_next_word (wl_data, user_options, user_options_extra, fd, &line_buf, &line_len); for ( ; words_cur < words_off; words_cur++) get_next_word (hashcat_ctx_tmp, fd, &line_buf, &line_len);
for ( ; words_cur < words_fin; words_cur++) for ( ; words_cur < words_fin; words_cur++)
{ {
get_next_word (wl_data, user_options, user_options_extra, fd, &line_buf, &line_len); get_next_word (hashcat_ctx_tmp, fd, &line_buf, &line_len);
line_len = convert_from_hex (line_buf, line_len, user_options); line_len = convert_from_hex (hashcat_ctx, line_buf, line_len);
// post-process rule engine // post-process rule engine
@ -505,7 +535,11 @@ static void calc (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param)
fclose (device_param->combs_fp); fclose (device_param->combs_fp);
} }
wl_data_destroy (wl_data); wl_data_destroy (hashcat_ctx_tmp);
myfree (hashcat_ctx_tmp->wl_data);
myfree (hashcat_ctx_tmp);
fclose (fd); fclose (fd);
} }

View File

@ -117,7 +117,6 @@ void hashcat_ctx_destroy (hashcat_ctx_t *hashcat_ctx)
static int inner2_loop (hashcat_ctx_t *hashcat_ctx) static int inner2_loop (hashcat_ctx_t *hashcat_ctx)
{ {
combinator_ctx_t *combinator_ctx = hashcat_ctx->combinator_ctx; combinator_ctx_t *combinator_ctx = hashcat_ctx->combinator_ctx;
dictstat_ctx_t *dictstat_ctx = hashcat_ctx->dictstat_ctx;
hashes_t *hashes = hashcat_ctx->hashes; hashes_t *hashes = hashcat_ctx->hashes;
induct_ctx_t *induct_ctx = hashcat_ctx->induct_ctx; induct_ctx_t *induct_ctx = hashcat_ctx->induct_ctx;
logfile_ctx_t *logfile_ctx = hashcat_ctx->logfile_ctx; logfile_ctx_t *logfile_ctx = hashcat_ctx->logfile_ctx;
@ -129,7 +128,6 @@ static int inner2_loop (hashcat_ctx_t *hashcat_ctx)
straight_ctx_t *straight_ctx = hashcat_ctx->straight_ctx; straight_ctx_t *straight_ctx = hashcat_ctx->straight_ctx;
user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra; user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra;
user_options_t *user_options = hashcat_ctx->user_options; user_options_t *user_options = hashcat_ctx->user_options;
wl_data_t *wl_data = hashcat_ctx->wl_data;
//status_ctx->run_main_level1 = true; //status_ctx->run_main_level1 = true;
//status_ctx->run_main_level2 = true; //status_ctx->run_main_level2 = true;
@ -200,7 +198,7 @@ static int inner2_loop (hashcat_ctx_t *hashcat_ctx)
return -1; return -1;
} }
status_ctx->words_cnt = count_words (wl_data, user_options, user_options_extra, straight_ctx, combinator_ctx, fd2, straight_ctx->dict, dictstat_ctx); status_ctx->words_cnt = count_words (hashcat_ctx, fd2, straight_ctx->dict);
fclose (fd2); fclose (fd2);
@ -228,7 +226,7 @@ static int inner2_loop (hashcat_ctx_t *hashcat_ctx)
return -1; return -1;
} }
status_ctx->words_cnt = count_words (wl_data, user_options, user_options_extra, straight_ctx, combinator_ctx, fd2, combinator_ctx->dict1, dictstat_ctx); status_ctx->words_cnt = count_words (hashcat_ctx, fd2, combinator_ctx->dict1);
fclose (fd2); fclose (fd2);
} }
@ -243,7 +241,7 @@ static int inner2_loop (hashcat_ctx_t *hashcat_ctx)
return -1; return -1;
} }
status_ctx->words_cnt = count_words (wl_data, user_options, user_options_extra, straight_ctx, combinator_ctx, fd2, combinator_ctx->dict2, dictstat_ctx); status_ctx->words_cnt = count_words (hashcat_ctx, fd2, combinator_ctx->dict2);
fclose (fd2); fclose (fd2);
} }
@ -282,7 +280,7 @@ static int inner2_loop (hashcat_ctx_t *hashcat_ctx)
return -1; return -1;
} }
status_ctx->words_cnt = count_words (wl_data, user_options, user_options_extra, straight_ctx, combinator_ctx, fd2, straight_ctx->dict, dictstat_ctx); status_ctx->words_cnt = count_words (hashcat_ctx, fd2, straight_ctx->dict);
fclose (fd2); fclose (fd2);
@ -767,7 +765,6 @@ static int outer_loop (hashcat_ctx_t *hashcat_ctx)
status_ctx_t *status_ctx = hashcat_ctx->status_ctx; status_ctx_t *status_ctx = hashcat_ctx->status_ctx;
straight_ctx_t *straight_ctx = hashcat_ctx->straight_ctx; straight_ctx_t *straight_ctx = hashcat_ctx->straight_ctx;
user_options_t *user_options = hashcat_ctx->user_options; user_options_t *user_options = hashcat_ctx->user_options;
wl_data_t *wl_data = hashcat_ctx->wl_data;
status_ctx->devices_status = STATUS_INIT; status_ctx->devices_status = STATUS_INIT;
@ -907,7 +904,7 @@ static int outer_loop (hashcat_ctx_t *hashcat_ctx)
* Wordlist allocate buffer * Wordlist allocate buffer
*/ */
wl_data_init (wl_data, user_options, hashconfig); wl_data_init (hashcat_ctx);
/** /**
* straight mode init * straight mode init
@ -1218,7 +1215,7 @@ static int outer_loop (hashcat_ctx_t *hashcat_ctx)
hashconfig_destroy (hashcat_ctx); hashconfig_destroy (hashcat_ctx);
wl_data_destroy (wl_data); wl_data_destroy (hashcat_ctx);
cpt_ctx_destroy (hashcat_ctx); cpt_ctx_destroy (hashcat_ctx);

View File

@ -1147,7 +1147,7 @@ int run_cracker (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, co
if (line_len >= PW_MAX1) continue; if (line_len >= PW_MAX1) continue;
line_len = convert_from_hex (line_buf, line_len, user_options); line_len = convert_from_hex (hashcat_ctx, line_buf, line_len);
char *line_buf_new = line_buf; char *line_buf_new = line_buf;

View File

@ -13,8 +13,10 @@
#include "rp_cpu.h" #include "rp_cpu.h"
#include "wordlist.h" #include "wordlist.h"
u32 convert_from_hex (char *line_buf, const u32 line_len, const user_options_t *user_options) u32 convert_from_hex (hashcat_ctx_t *hashcat_ctx, char *line_buf, const u32 line_len)
{ {
const user_options_t *user_options = hashcat_ctx->user_options;
if (line_len & 1) return (line_len); // not in hex if (line_len & 1) return (line_len); // not in hex
if (user_options->hex_wordlist == true) if (user_options->hex_wordlist == true)
@ -56,8 +58,10 @@ u32 convert_from_hex (char *line_buf, const u32 line_len, const user_options_t *
return (line_len); return (line_len);
} }
void load_segment (wl_data_t *wl_data, FILE *fd) void load_segment (hashcat_ctx_t *hashcat_ctx, FILE *fd)
{ {
wl_data_t *wl_data = hashcat_ctx->wl_data;
// NOTE: use (never changing) ->incr here instead of ->avail otherwise the buffer gets bigger and bigger // NOTE: use (never changing) ->incr here instead of ->avail otherwise the buffer gets bigger and bigger
wl_data->pos = 0; wl_data->pos = 0;
@ -177,8 +181,12 @@ void get_next_word_std (char *buf, u64 sz, u64 *len, u64 *off)
*len = sz; *len = sz;
} }
void get_next_word (wl_data_t *wl_data, const user_options_t *user_options, const user_options_extra_t *user_options_extra, FILE *fd, char **out_buf, u32 *out_len) void get_next_word (hashcat_ctx_t *hashcat_ctx, FILE *fd, char **out_buf, u32 *out_len)
{ {
user_options_t *user_options = hashcat_ctx->user_options;
user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra;
wl_data_t *wl_data = hashcat_ctx->wl_data;
while (wl_data->pos < wl_data->cnt) while (wl_data->pos < wl_data->cnt)
{ {
u64 off; u64 off;
@ -232,9 +240,9 @@ void get_next_word (wl_data_t *wl_data, const user_options_t *user_options, cons
return; return;
} }
load_segment (wl_data, fd); load_segment (hashcat_ctx, fd);
get_next_word (wl_data, user_options, user_options_extra, fd, out_buf, out_len); get_next_word (hashcat_ctx, fd, out_buf, out_len);
} }
void pw_add (hc_device_param_t *device_param, const u8 *pw_buf, const int pw_len) void pw_add (hc_device_param_t *device_param, const u8 *pw_buf, const int pw_len)
@ -261,8 +269,15 @@ void pw_add (hc_device_param_t *device_param, const u8 *pw_buf, const int pw_len
//} //}
} }
u64 count_words (wl_data_t *wl_data, const user_options_t *user_options, const user_options_extra_t *user_options_extra, const straight_ctx_t *straight_ctx, const combinator_ctx_t *combinator_ctx, FILE *fd, const char *dictfile, dictstat_ctx_t *dictstat_ctx) u64 count_words (hashcat_ctx_t *hashcat_ctx, FILE *fd, const char *dictfile)
{ {
combinator_ctx_t *combinator_ctx = hashcat_ctx->combinator_ctx;
dictstat_ctx_t *dictstat_ctx = hashcat_ctx->dictstat_ctx;
straight_ctx_t *straight_ctx = hashcat_ctx->straight_ctx;
user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra;
user_options_t *user_options = hashcat_ctx->user_options;
wl_data_t *wl_data = hashcat_ctx->wl_data;
//hc_signal (NULL); //hc_signal (NULL);
dictstat_t d; dictstat_t d;
@ -326,7 +341,7 @@ u64 count_words (wl_data_t *wl_data, const user_options_t *user_options, const u
while (!feof (fd)) while (!feof (fd))
{ {
load_segment (wl_data, fd); load_segment (hashcat_ctx, fd);
comp += wl_data->cnt; comp += wl_data->cnt;
@ -400,15 +415,18 @@ u64 count_words (wl_data_t *wl_data, const user_options_t *user_options, const u
return (cnt); return (cnt);
} }
void wl_data_init (wl_data_t *wl_data, const user_options_t *user_options, const hashconfig_t *hashconfig) void wl_data_init (hashcat_ctx_t *hashcat_ctx)
{ {
hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
user_options_t *user_options = hashcat_ctx->user_options;
wl_data_t *wl_data = hashcat_ctx->wl_data;
wl_data->enabled = false; wl_data->enabled = false;
if (user_options->benchmark == true) return; if (user_options->benchmark == true) return;
if (user_options->keyspace == true) return; if (user_options->keyspace == true) return;
if (user_options->left == true) return; if (user_options->left == true) return;
if (user_options->opencl_info == true) return; if (user_options->opencl_info == true) return;
// if (user_options->show == true) return;
if (user_options->usage == true) return; if (user_options->usage == true) return;
if (user_options->version == true) return; if (user_options->version == true) return;
@ -437,8 +455,10 @@ void wl_data_init (wl_data_t *wl_data, const user_options_t *user_options, const
} }
} }
void wl_data_destroy (wl_data_t *wl_data) void wl_data_destroy (hashcat_ctx_t *hashcat_ctx)
{ {
wl_data_t *wl_data = hashcat_ctx->wl_data;
if (wl_data->enabled == false) return; if (wl_data->enabled == false) return;
myfree (wl_data->buf); myfree (wl_data->buf);