|
|
|
@ -13,10 +13,8 @@
|
|
|
|
|
#include "opencl.h"
|
|
|
|
|
#include "interface.h"
|
|
|
|
|
#include "filehandling.h"
|
|
|
|
|
#include "ext_lzma.h"
|
|
|
|
|
#include "modules.h"
|
|
|
|
|
#include "dynloader.h"
|
|
|
|
|
#include "cpu_crc32.h"
|
|
|
|
|
|
|
|
|
|
static const char *ST_PASS_HASHCAT_PLAIN = "hashcat";
|
|
|
|
|
static const char *ST_PASS_HASHCAT_EXCL = "hashcat!";
|
|
|
|
@ -953,151 +951,6 @@ void hashconfig_destroy (hashcat_ctx_t *hashcat_ctx)
|
|
|
|
|
memset (hashconfig, 0, sizeof (hashconfig_t));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int hashconfig_general_defaults (hashcat_ctx_t *hashcat_ctx)
|
|
|
|
|
{
|
|
|
|
|
hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
|
|
|
|
|
user_options_t *user_options = hashcat_ctx->user_options;
|
|
|
|
|
|
|
|
|
|
// truecrypt and veracrypt only
|
|
|
|
|
if (((hashconfig->hash_mode >= 6200) && (hashconfig->hash_mode <= 6299))
|
|
|
|
|
|| ((hashconfig->hash_mode >= 13700) && (hashconfig->hash_mode == 13799)))
|
|
|
|
|
{
|
|
|
|
|
hashes_t *hashes = hashcat_ctx->hashes;
|
|
|
|
|
|
|
|
|
|
tc_t *tc = (tc_t *) hashes->esalts_buf;
|
|
|
|
|
|
|
|
|
|
char *optional_param1 = NULL;
|
|
|
|
|
|
|
|
|
|
if (user_options->truecrypt_keyfiles) optional_param1 = user_options->truecrypt_keyfiles;
|
|
|
|
|
if (user_options->veracrypt_keyfiles) optional_param1 = user_options->veracrypt_keyfiles;
|
|
|
|
|
|
|
|
|
|
if (optional_param1)
|
|
|
|
|
{
|
|
|
|
|
char *tcvc_keyfiles = optional_param1;
|
|
|
|
|
|
|
|
|
|
char *keyfiles = hcstrdup (tcvc_keyfiles);
|
|
|
|
|
|
|
|
|
|
if (keyfiles == NULL) return -1;
|
|
|
|
|
|
|
|
|
|
char *saveptr = NULL;
|
|
|
|
|
|
|
|
|
|
char *keyfile = strtok_r (keyfiles, ",", &saveptr);
|
|
|
|
|
|
|
|
|
|
if (keyfile == NULL)
|
|
|
|
|
{
|
|
|
|
|
free (keyfiles);
|
|
|
|
|
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
do
|
|
|
|
|
{
|
|
|
|
|
const int rc_crc32 = cpu_crc32 (hashcat_ctx, keyfile, (u8 *) tc->keyfile_buf);
|
|
|
|
|
|
|
|
|
|
if (rc_crc32 == -1)
|
|
|
|
|
{
|
|
|
|
|
free (keyfiles);
|
|
|
|
|
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} while ((keyfile = strtok_r ((char *) NULL, ",", &saveptr)) != NULL);
|
|
|
|
|
|
|
|
|
|
free (keyfiles);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// truecrypt and veracrypt boot only
|
|
|
|
|
if (hashconfig->opts_type & OPTS_TYPE_KEYBOARD_MAPPING)
|
|
|
|
|
{
|
|
|
|
|
if (user_options->keyboard_layout_mapping)
|
|
|
|
|
{
|
|
|
|
|
const bool rc = initialize_keyboard_layout_mapping (hashcat_ctx, user_options->keyboard_layout_mapping, tc->keyboard_layout_mapping_buf, &tc->keyboard_layout_mapping_cnt);
|
|
|
|
|
|
|
|
|
|
if (rc == false) return -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// veracrypt only
|
|
|
|
|
if ((hashconfig->hash_mode >= 13700) && (hashconfig->hash_mode == 13799))
|
|
|
|
|
{
|
|
|
|
|
if (user_options->veracrypt_pim)
|
|
|
|
|
{
|
|
|
|
|
// we can access salt directly here because in VC it's always just one salt not many
|
|
|
|
|
|
|
|
|
|
hashes_t *hashes = hashcat_ctx->hashes;
|
|
|
|
|
|
|
|
|
|
salt_t *salts_buf = hashes->salts_buf;
|
|
|
|
|
|
|
|
|
|
salt_t *salt = &salts_buf[0];
|
|
|
|
|
|
|
|
|
|
switch (hashconfig->hash_mode)
|
|
|
|
|
{
|
|
|
|
|
case 13711: salt->salt_iter = 15000 + (user_options->veracrypt_pim * 1000);
|
|
|
|
|
break;
|
|
|
|
|
case 13712: salt->salt_iter = 15000 + (user_options->veracrypt_pim * 1000);
|
|
|
|
|
break;
|
|
|
|
|
case 13713: salt->salt_iter = 15000 + (user_options->veracrypt_pim * 1000);
|
|
|
|
|
break;
|
|
|
|
|
case 13721: salt->salt_iter = 15000 + (user_options->veracrypt_pim * 1000);
|
|
|
|
|
break;
|
|
|
|
|
case 13722: salt->salt_iter = 15000 + (user_options->veracrypt_pim * 1000);
|
|
|
|
|
break;
|
|
|
|
|
case 13723: salt->salt_iter = 15000 + (user_options->veracrypt_pim * 1000);
|
|
|
|
|
break;
|
|
|
|
|
case 13731: salt->salt_iter = 15000 + (user_options->veracrypt_pim * 1000);
|
|
|
|
|
break;
|
|
|
|
|
case 13732: salt->salt_iter = 15000 + (user_options->veracrypt_pim * 1000);
|
|
|
|
|
break;
|
|
|
|
|
case 13733: salt->salt_iter = 15000 + (user_options->veracrypt_pim * 1000);
|
|
|
|
|
break;
|
|
|
|
|
case 13741: salt->salt_iter = user_options->veracrypt_pim * 2048;
|
|
|
|
|
break;
|
|
|
|
|
case 13742: salt->salt_iter = user_options->veracrypt_pim * 2048;
|
|
|
|
|
break;
|
|
|
|
|
case 13743: salt->salt_iter = user_options->veracrypt_pim * 2048;
|
|
|
|
|
break;
|
|
|
|
|
case 13751: salt->salt_iter = 15000 + (user_options->veracrypt_pim * 1000);
|
|
|
|
|
break;
|
|
|
|
|
case 13752: salt->salt_iter = 15000 + (user_options->veracrypt_pim * 1000);
|
|
|
|
|
break;
|
|
|
|
|
case 13753: salt->salt_iter = 15000 + (user_options->veracrypt_pim * 1000);
|
|
|
|
|
break;
|
|
|
|
|
case 13761: salt->salt_iter = user_options->veracrypt_pim * 2048;
|
|
|
|
|
break;
|
|
|
|
|
case 13762: salt->salt_iter = user_options->veracrypt_pim * 2048;
|
|
|
|
|
break;
|
|
|
|
|
case 13763: salt->salt_iter = user_options->veracrypt_pim * 2048;
|
|
|
|
|
break;
|
|
|
|
|
case 13771: salt->salt_iter = 15000 + (user_options->veracrypt_pim * 1000);
|
|
|
|
|
break;
|
|
|
|
|
case 13772: salt->salt_iter = 15000 + (user_options->veracrypt_pim * 1000);
|
|
|
|
|
break;
|
|
|
|
|
case 13773: salt->salt_iter = 15000 + (user_options->veracrypt_pim * 1000);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
salt->salt_iter -= 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void hashconfig_benchmark_defaults (hashcat_ctx_t *hashcat_ctx, salt_t *salt, void *esalt, void *hook_salt)
|
|
|
|
|
{
|
|
|
|
|
hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
|
|
|
|
|
|
|
|
|
|
if (hashconfig->is_salted == true)
|
|
|
|
|
{
|
|
|
|
|
memcpy (salt, hashconfig->benchmark_salt, sizeof (salt_t));
|
|
|
|
|
|
|
|
|
|
memcpy (esalt, hashconfig->benchmark_esalt, hashconfig->esalt_size);
|
|
|
|
|
|
|
|
|
|
memcpy (hook_salt, hashconfig->benchmark_hook_salt, hashconfig->hook_salt_size);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
u32 default_hash_mode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra)
|
|
|
|
|
{
|
|
|
|
|
const u32 hash_mode = user_options->hash_mode;
|
|
|
|
|