mirror of
https://github.com/hashcat/hashcat.git
synced 2024-12-26 00:18:36 +00:00
fix HCFILE with potfile BUG and something else related to HCFILE wrong usage
This commit is contained in:
parent
ea786f715f
commit
2db6dfcd4e
@ -27,8 +27,8 @@ typedef struct extra_info_combi
|
||||
{
|
||||
u64 pos;
|
||||
|
||||
HCFILE *base_fp;
|
||||
HCFILE *combs_fp;
|
||||
HCFILE base_fp;
|
||||
HCFILE combs_fp;
|
||||
|
||||
u64 comb_pos_prev;
|
||||
u64 comb_pos;
|
||||
|
@ -1163,7 +1163,7 @@ typedef struct hc_device_param
|
||||
|
||||
char *scratch_buf;
|
||||
|
||||
HCFILE *combs_fp;
|
||||
HCFILE combs_fp;
|
||||
pw_t *combs_buf;
|
||||
|
||||
void *hooks_buf;
|
||||
@ -1639,7 +1639,7 @@ typedef struct potfile_ctx
|
||||
{
|
||||
bool enabled;
|
||||
|
||||
FILE *fp;
|
||||
HCFILE fp;
|
||||
char *filename;
|
||||
|
||||
u8 *out_buf; // allocates [HCBUFSIZ_LARGE];
|
||||
|
@ -4377,7 +4377,7 @@ int run_cracker (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, co
|
||||
device_param->kernel_params_buf32[31] = salt_buf->digests_cnt;
|
||||
device_param->kernel_params_buf32[32] = salt_buf->digests_offset;
|
||||
|
||||
HCFILE *combs_fp = device_param->combs_fp;
|
||||
HCFILE *combs_fp = &device_param->combs_fp;
|
||||
|
||||
if (user_options->slow_candidates == true)
|
||||
{
|
||||
|
@ -747,30 +747,26 @@ static int calc (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param)
|
||||
combs_file = combinator_ctx->dict1;
|
||||
}
|
||||
|
||||
HCFILE base_fp;
|
||||
extra_info_combi_t extra_info_combi;
|
||||
|
||||
if (hc_fopen (&base_fp, base_file, "rb") == false)
|
||||
memset (&extra_info_combi, 0, sizeof (extra_info_combi));
|
||||
|
||||
if (hc_fopen (&extra_info_combi.base_fp, base_file, "rb") == false)
|
||||
{
|
||||
event_log_error (hashcat_ctx, "%s: %s", base_file, strerror (errno));
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
HCFILE combs_fp;
|
||||
|
||||
if (hc_fopen (&combs_fp, combs_file, "rb") == false)
|
||||
if (hc_fopen (&extra_info_combi.combs_fp, combs_file, "rb") == false)
|
||||
{
|
||||
event_log_error (hashcat_ctx, "%s: %s", combs_file, strerror (errno));
|
||||
|
||||
hc_fclose (&extra_info_combi.base_fp);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
extra_info_combi_t extra_info_combi;
|
||||
|
||||
memset (&extra_info_combi, 0, sizeof (extra_info_combi));
|
||||
|
||||
extra_info_combi.base_fp = &base_fp;
|
||||
extra_info_combi.combs_fp = &combs_fp;
|
||||
extra_info_combi.scratch_buf = device_param->scratch_buf;
|
||||
|
||||
hashcat_ctx_t *hashcat_ctx_tmp = (hashcat_ctx_t *) hcmalloc (sizeof (hashcat_ctx_t));
|
||||
@ -783,12 +779,10 @@ static int calc (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param)
|
||||
|
||||
if (rc_wl_data_init == -1)
|
||||
{
|
||||
hc_fclose (&combs_fp);
|
||||
|
||||
hc_fclose (&base_fp);
|
||||
hc_fclose (&extra_info_combi.base_fp);
|
||||
hc_fclose (&extra_info_combi.combs_fp);
|
||||
|
||||
hcfree (hashcat_ctx_tmp->wl_data);
|
||||
|
||||
hcfree (hashcat_ctx_tmp);
|
||||
|
||||
return -1;
|
||||
@ -996,12 +990,10 @@ static int calc (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param)
|
||||
|
||||
if (CL_rc == -1)
|
||||
{
|
||||
hc_fclose (&combs_fp);
|
||||
|
||||
hc_fclose (&base_fp);
|
||||
hc_fclose (&extra_info_combi.base_fp);
|
||||
hc_fclose (&extra_info_combi.combs_fp);
|
||||
|
||||
hcfree (hashcat_ctx_tmp->wl_data);
|
||||
|
||||
hcfree (hashcat_ctx_tmp);
|
||||
|
||||
return -1;
|
||||
@ -1011,12 +1003,10 @@ static int calc (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param)
|
||||
|
||||
if (CL_rc == -1)
|
||||
{
|
||||
hc_fclose (&combs_fp);
|
||||
|
||||
hc_fclose (&base_fp);
|
||||
hc_fclose (&extra_info_combi.base_fp);
|
||||
hc_fclose (&extra_info_combi.combs_fp);
|
||||
|
||||
hcfree (hashcat_ctx_tmp->wl_data);
|
||||
|
||||
hcfree (hashcat_ctx_tmp);
|
||||
|
||||
return -1;
|
||||
@ -1058,14 +1048,12 @@ static int calc (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param)
|
||||
if (words_fin == 0) break;
|
||||
}
|
||||
|
||||
hc_fclose (&combs_fp);
|
||||
|
||||
hc_fclose (&base_fp);
|
||||
hc_fclose (&extra_info_combi.base_fp);
|
||||
hc_fclose (&extra_info_combi.combs_fp);
|
||||
|
||||
wl_data_destroy (hashcat_ctx_tmp);
|
||||
|
||||
hcfree (hashcat_ctx_tmp->wl_data);
|
||||
|
||||
hcfree (hashcat_ctx_tmp);
|
||||
}
|
||||
else if (attack_mode == ATTACK_MODE_BF)
|
||||
@ -1322,16 +1310,12 @@ static int calc (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param)
|
||||
{
|
||||
char *dictfile = straight_ctx->dict;
|
||||
|
||||
HCFILE combs_fp;
|
||||
|
||||
if (hc_fopen (&combs_fp, dictfile, "rb") == false)
|
||||
if (hc_fopen (&device_param->combs_fp, dictfile, "rb") == false)
|
||||
{
|
||||
event_log_error (hashcat_ctx, "%s: %s", dictfile, strerror (errno));
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
device_param->combs_fp = &combs_fp;
|
||||
}
|
||||
|
||||
while (status_ctx->run_thread_level1 == true)
|
||||
@ -1388,31 +1372,23 @@ static int calc (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param)
|
||||
{
|
||||
const char *dictfilec = combinator_ctx->dict2;
|
||||
|
||||
HCFILE combs_fp;
|
||||
|
||||
if (hc_fopen (&combs_fp, dictfilec, "rb") == false)
|
||||
if (hc_fopen (&device_param->combs_fp, dictfilec, "rb") == false)
|
||||
{
|
||||
event_log_error (hashcat_ctx, "%s: %s", combinator_ctx->dict2, strerror (errno));
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
device_param->combs_fp = &combs_fp;
|
||||
}
|
||||
else if (combs_mode == COMBINATOR_MODE_BASE_RIGHT)
|
||||
{
|
||||
const char *dictfilec = combinator_ctx->dict1;
|
||||
|
||||
HCFILE combs_fp;
|
||||
|
||||
if (hc_fopen (&combs_fp, dictfilec, "rb") == false)
|
||||
if (hc_fopen (&device_param->combs_fp, dictfilec, "rb") == false)
|
||||
{
|
||||
event_log_error (hashcat_ctx, "%s: %s", dictfilec, strerror (errno));
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
device_param->combs_fp = &combs_fp;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1435,7 +1411,7 @@ static int calc (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param)
|
||||
|
||||
if (rc_wl_data_init == -1)
|
||||
{
|
||||
if (attack_mode == ATTACK_MODE_COMBI) hc_fclose (device_param->combs_fp);
|
||||
if (attack_mode == ATTACK_MODE_COMBI) hc_fclose (&device_param->combs_fp);
|
||||
|
||||
hc_fclose (&fp);
|
||||
|
||||
@ -1567,7 +1543,7 @@ static int calc (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param)
|
||||
|
||||
if (CL_rc == -1)
|
||||
{
|
||||
if (attack_mode == ATTACK_MODE_COMBI) hc_fclose (device_param->combs_fp);
|
||||
if (attack_mode == ATTACK_MODE_COMBI) hc_fclose (&device_param->combs_fp);
|
||||
|
||||
hc_fclose (&fp);
|
||||
|
||||
@ -1582,7 +1558,7 @@ static int calc (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param)
|
||||
|
||||
if (CL_rc == -1)
|
||||
{
|
||||
if (attack_mode == ATTACK_MODE_COMBI) hc_fclose (device_param->combs_fp);
|
||||
if (attack_mode == ATTACK_MODE_COMBI) hc_fclose (&device_param->combs_fp);
|
||||
|
||||
hc_fclose (&fp);
|
||||
|
||||
@ -1638,7 +1614,7 @@ static int calc (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param)
|
||||
if (words_fin == 0) break;
|
||||
}
|
||||
|
||||
if (attack_mode == ATTACK_MODE_COMBI) hc_fclose (device_param->combs_fp);
|
||||
if (attack_mode == ATTACK_MODE_COMBI) hc_fclose (&device_param->combs_fp);
|
||||
|
||||
hc_fclose (&fp);
|
||||
|
||||
|
@ -117,14 +117,14 @@ int potfile_init (hashcat_ctx_t *hashcat_ctx)
|
||||
|
||||
if (user_options->potfile_path == NULL)
|
||||
{
|
||||
potfile_ctx->fp = NULL;
|
||||
potfile_ctx->fp.pfp = NULL;
|
||||
|
||||
hc_asprintf (&potfile_ctx->filename, "%s/hashcat.potfile", folder_config->profile_dir);
|
||||
}
|
||||
else
|
||||
{
|
||||
potfile_ctx->filename = hcstrdup (user_options->potfile_path);
|
||||
potfile_ctx->fp = NULL;
|
||||
potfile_ctx->fp.pfp = NULL;
|
||||
}
|
||||
|
||||
// starting from here, we should allocate some scratch buffer for later use
|
||||
@ -181,9 +181,7 @@ int potfile_read_open (hashcat_ctx_t *hashcat_ctx)
|
||||
|
||||
if (potfile_ctx->enabled == false) return 0;
|
||||
|
||||
potfile_ctx->fp = fopen (potfile_ctx->filename, "rb");
|
||||
|
||||
if (potfile_ctx->fp == NULL)
|
||||
if (hc_fopen (&potfile_ctx->fp, potfile_ctx->filename, "rb") == false)
|
||||
{
|
||||
event_log_error (hashcat_ctx, "%s: %s", potfile_ctx->filename, strerror (errno));
|
||||
|
||||
@ -202,9 +200,9 @@ void potfile_read_close (hashcat_ctx_t *hashcat_ctx)
|
||||
|
||||
if (hashconfig->potfile_disable == true) return;
|
||||
|
||||
if (potfile_ctx->fp == NULL) return;
|
||||
if (potfile_ctx->fp.pfp == NULL) return;
|
||||
|
||||
fclose (potfile_ctx->fp);
|
||||
hc_fclose (&potfile_ctx->fp);
|
||||
}
|
||||
|
||||
int potfile_write_open (hashcat_ctx_t *hashcat_ctx)
|
||||
@ -213,17 +211,13 @@ int potfile_write_open (hashcat_ctx_t *hashcat_ctx)
|
||||
|
||||
if (potfile_ctx->enabled == false) return 0;
|
||||
|
||||
FILE *fp = fopen (potfile_ctx->filename, "ab");
|
||||
|
||||
if (fp == NULL)
|
||||
if (hc_fopen (&potfile_ctx->fp, potfile_ctx->filename, "ab") == false)
|
||||
{
|
||||
event_log_error (hashcat_ctx, "%s: %s", potfile_ctx->filename, strerror (errno));
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
potfile_ctx->fp = fp;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -236,14 +230,14 @@ void potfile_write_close (hashcat_ctx_t *hashcat_ctx)
|
||||
|
||||
if (hashconfig->potfile_disable == true) return;
|
||||
|
||||
fclose (potfile_ctx->fp);
|
||||
hc_fclose (&potfile_ctx->fp);
|
||||
}
|
||||
|
||||
void potfile_write_append (hashcat_ctx_t *hashcat_ctx, const char *out_buf, const int out_len, u8 *plain_ptr, unsigned int plain_len)
|
||||
{
|
||||
const hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
|
||||
const potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
|
||||
const user_options_t *user_options = hashcat_ctx->user_options;
|
||||
potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
|
||||
|
||||
if (potfile_ctx->enabled == false) return;
|
||||
|
||||
@ -292,18 +286,13 @@ void potfile_write_append (hashcat_ctx_t *hashcat_ctx, const char *out_buf, cons
|
||||
|
||||
tmp_buf[tmp_len] = 0;
|
||||
|
||||
HCFILE fp;
|
||||
fp.is_gzip = false;
|
||||
fp.pfp = potfile_ctx->fp;
|
||||
fp.fd = fileno (fp.pfp);
|
||||
hc_lockfile (&potfile_ctx->fp);
|
||||
|
||||
hc_lockfile (&fp);
|
||||
hc_fprintf (&potfile_ctx->fp, "%s" EOL, tmp_buf);
|
||||
|
||||
fprintf (potfile_ctx->fp, "%s" EOL, tmp_buf);
|
||||
hc_fflush (&potfile_ctx->fp);
|
||||
|
||||
fflush (potfile_ctx->fp);
|
||||
|
||||
if (hc_unlockfile (&fp))
|
||||
if (hc_unlockfile (&potfile_ctx->fp))
|
||||
{
|
||||
event_log_error (hashcat_ctx, "%s: Failed to unlock file.", potfile_ctx->filename);
|
||||
}
|
||||
@ -380,7 +369,7 @@ int potfile_remove_parse (hashcat_ctx_t *hashcat_ctx)
|
||||
const hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
|
||||
const hashes_t *hashes = hashcat_ctx->hashes;
|
||||
const module_ctx_t *module_ctx = hashcat_ctx->module_ctx;
|
||||
const potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
|
||||
potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
|
||||
|
||||
if (potfile_ctx->enabled == false) return 0;
|
||||
|
||||
@ -530,15 +519,9 @@ int potfile_remove_parse (hashcat_ctx_t *hashcat_ctx)
|
||||
|
||||
char *line_buf = (char *) hcmalloc (HCBUFSIZ_LARGE);
|
||||
|
||||
// workaround for new fgetl
|
||||
HCFILE fp;
|
||||
fp.is_gzip = false;
|
||||
fp.pfp = potfile_ctx->fp;
|
||||
fp.fd = fileno (fp.pfp);
|
||||
|
||||
while (!feof (potfile_ctx->fp))
|
||||
while (!hc_feof (&potfile_ctx->fp))
|
||||
{
|
||||
size_t line_len = fgetl (&fp, line_buf);
|
||||
size_t line_len = fgetl (&potfile_ctx->fp, line_buf);
|
||||
|
||||
if (line_len == 0) continue;
|
||||
|
||||
|
@ -76,8 +76,8 @@ void slow_candidates_seek (hashcat_ctx_t *hashcat_ctx, void *extra_info, const u
|
||||
{
|
||||
extra_info_combi_t *extra_info_combi = (extra_info_combi_t *) extra_info;
|
||||
|
||||
HCFILE *base_fp = extra_info_combi->base_fp;
|
||||
HCFILE *combs_fp = extra_info_combi->combs_fp;
|
||||
HCFILE *base_fp = &extra_info_combi->base_fp;
|
||||
HCFILE *combs_fp = &extra_info_combi->combs_fp;
|
||||
|
||||
for (u64 i = cur; i < end; i++)
|
||||
{
|
||||
@ -238,8 +238,8 @@ void slow_candidates_next (hashcat_ctx_t *hashcat_ctx, void *extra_info)
|
||||
{
|
||||
extra_info_combi_t *extra_info_combi = (extra_info_combi_t *) extra_info;
|
||||
|
||||
HCFILE *base_fp = extra_info_combi->base_fp;
|
||||
HCFILE *combs_fp = extra_info_combi->combs_fp;
|
||||
HCFILE *base_fp = &extra_info_combi->base_fp;
|
||||
HCFILE *combs_fp = &extra_info_combi->combs_fp;
|
||||
|
||||
if ((extra_info_combi->pos % combinator_ctx->combs_cnt) == 0)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user