Merge pull request #3396 from ventaquil/code-cleanup-truecrypt

TrueCrypt code cleanup
pull/3398/head
Jens Steube 2 years ago committed by GitHub
commit 950a356f33
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -17,9 +17,11 @@
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
#endif
#define TC_DATA_LEN (448)
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;

@ -17,9 +17,11 @@
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
#endif
#define TC_DATA_LEN (448)
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;

@ -17,9 +17,11 @@
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
#endif
#define TC_DATA_LEN (448)
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;

@ -17,9 +17,11 @@
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
#endif
#define TC_DATA_LEN (448)
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;

@ -17,9 +17,11 @@
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
#endif
#define TC_DATA_LEN (448)
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;

@ -17,9 +17,11 @@
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
#endif
#define TC_DATA_LEN (448)
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;

@ -17,9 +17,11 @@
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
#endif
#define TC_DATA_LEN (448)
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;

@ -17,9 +17,11 @@
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
#endif
#define TC_DATA_LEN (448)
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;

@ -17,9 +17,11 @@
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
#endif
#define TC_DATA_LEN (448)
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;

@ -46,9 +46,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_HEADER_LEN 512
#define TC_SALT_LEN ( 64)
#define TC_DATA_LEN ( 448)
#define TC_HEADER_LEN ( 512)
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
typedef struct tc_tmp
{
@ -62,7 +63,7 @@ typedef struct tc_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -130,20 +131,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
{
const size_t st_hash_len = strlen (hashconfig->st_hash);
char header[TC_HEADER_LEN + 1] = { 0 };
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
{
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
tmpdata[i] = c;
}
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
hcfree (tmpdata);
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
return parser_status;
}
@ -247,7 +239,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}

@ -46,9 +46,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_HEADER_LEN 512
#define TC_SALT_LEN ( 64)
#define TC_DATA_LEN ( 448)
#define TC_HEADER_LEN ( 512)
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
typedef struct tc_tmp
{
@ -62,7 +63,7 @@ typedef struct tc_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -130,20 +131,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
{
const size_t st_hash_len = strlen (hashconfig->st_hash);
char header[TC_HEADER_LEN + 1] = { 0 };
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
{
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
tmpdata[i] = c;
}
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
hcfree (tmpdata);
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
return parser_status;
}
@ -247,7 +239,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}

@ -46,9 +46,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_HEADER_LEN 512
#define TC_SALT_LEN ( 64)
#define TC_DATA_LEN ( 448)
#define TC_HEADER_LEN ( 512)
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
typedef struct tc_tmp
{
@ -62,7 +63,7 @@ typedef struct tc_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -130,20 +131,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
{
const size_t st_hash_len = strlen (hashconfig->st_hash);
char header[TC_HEADER_LEN + 1] = { 0 };
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
{
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
tmpdata[i] = c;
}
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
hcfree (tmpdata);
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
return parser_status;
}
@ -247,7 +239,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}

@ -48,9 +48,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_HEADER_LEN 512
#define TC_SALT_LEN ( 64)
#define TC_DATA_LEN ( 448)
#define TC_HEADER_LEN ( 512)
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
typedef struct tc64_tmp
{
@ -64,7 +65,7 @@ typedef struct tc64_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -132,20 +133,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
{
const size_t st_hash_len = strlen (hashconfig->st_hash);
char header[TC_HEADER_LEN + 1] = { 0 };
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
{
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
tmpdata[i] = c;
}
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
hcfree (tmpdata);
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
return parser_status;
}
@ -251,7 +243,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}

@ -48,9 +48,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_HEADER_LEN 512
#define TC_SALT_LEN ( 64)
#define TC_DATA_LEN ( 448)
#define TC_HEADER_LEN ( 512)
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
typedef struct tc64_tmp
{
@ -64,7 +65,7 @@ typedef struct tc64_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -132,20 +133,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
{
const size_t st_hash_len = strlen (hashconfig->st_hash);
char header[TC_HEADER_LEN + 1] = { 0 };
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
{
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
tmpdata[i] = c;
}
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
hcfree (tmpdata);
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
return parser_status;
}
@ -251,7 +243,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}

@ -48,9 +48,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_HEADER_LEN 512
#define TC_SALT_LEN ( 64)
#define TC_DATA_LEN ( 448)
#define TC_HEADER_LEN ( 512)
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
typedef struct tc64_tmp
{
@ -64,7 +65,7 @@ typedef struct tc64_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -132,20 +133,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
{
const size_t st_hash_len = strlen (hashconfig->st_hash);
char header[TC_HEADER_LEN + 1] = { 0 };
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
{
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
tmpdata[i] = c;
}
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
hcfree (tmpdata);
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
return parser_status;
}
@ -251,7 +243,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}

@ -47,9 +47,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_HEADER_LEN 512
#define TC_SALT_LEN ( 64)
#define TC_DATA_LEN ( 448)
#define TC_HEADER_LEN ( 512)
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
typedef struct tc_tmp
{
@ -63,7 +64,7 @@ typedef struct tc_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -140,20 +141,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
{
const size_t st_hash_len = strlen (hashconfig->st_hash);
char header[TC_HEADER_LEN + 1] = { 0 };
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
{
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
tmpdata[i] = c;
}
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
hcfree (tmpdata);
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
return parser_status;
}
@ -259,7 +251,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}

@ -47,9 +47,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_HEADER_LEN 512
#define TC_SALT_LEN ( 64)
#define TC_DATA_LEN ( 448)
#define TC_HEADER_LEN ( 512)
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
typedef struct tc_tmp
{
@ -63,7 +64,7 @@ typedef struct tc_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -140,20 +141,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
{
const size_t st_hash_len = strlen (hashconfig->st_hash);
char header[TC_HEADER_LEN + 1] = { 0 };
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
{
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
tmpdata[i] = c;
}
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
hcfree (tmpdata);
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
return parser_status;
}
@ -259,7 +251,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}

@ -47,9 +47,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_HEADER_LEN 512
#define TC_SALT_LEN ( 64)
#define TC_DATA_LEN ( 448)
#define TC_HEADER_LEN ( 512)
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
typedef struct tc_tmp
{
@ -63,7 +64,7 @@ typedef struct tc_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -136,20 +137,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
{
const size_t st_hash_len = strlen (hashconfig->st_hash);
char header[TC_HEADER_LEN + 1] = { 0 };
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
{
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
tmpdata[i] = c;
}
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
hcfree (tmpdata);
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
return parser_status;
}
@ -255,7 +247,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}

@ -47,9 +47,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_HEADER_LEN 512
#define TC_SALT_LEN ( 64)
#define TC_DATA_LEN ( 448)
#define TC_HEADER_LEN ( 512)
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
typedef struct tc_tmp
{
@ -63,7 +64,7 @@ typedef struct tc_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -143,20 +144,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
{
const size_t st_hash_len = strlen (hashconfig->st_hash);
char header[TC_HEADER_LEN + 1] = { 0 };
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
{
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
tmpdata[i] = c;
}
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
hcfree (tmpdata);
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
return parser_status;
}
@ -262,7 +254,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}

@ -47,9 +47,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_HEADER_LEN 512
#define TC_SALT_LEN ( 64)
#define TC_DATA_LEN ( 448)
#define TC_HEADER_LEN ( 512)
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
typedef struct tc_tmp
{
@ -63,7 +64,7 @@ typedef struct tc_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -143,20 +144,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
{
const size_t st_hash_len = strlen (hashconfig->st_hash);
char header[TC_HEADER_LEN + 1] = { 0 };
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
{
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
tmpdata[i] = c;
}
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
hcfree (tmpdata);
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
return parser_status;
}
@ -262,7 +254,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}

@ -47,9 +47,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_HEADER_LEN 512
#define TC_SALT_LEN ( 64)
#define TC_DATA_LEN ( 448)
#define TC_HEADER_LEN ( 512)
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
typedef struct tc_tmp
{
@ -63,7 +64,7 @@ typedef struct tc_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -143,20 +144,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
{
const size_t st_hash_len = strlen (hashconfig->st_hash);
char header[TC_HEADER_LEN + 1] = { 0 };
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
{
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
tmpdata[i] = c;
}
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
hcfree (tmpdata);
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
return parser_status;
}
@ -262,7 +254,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}

@ -46,8 +46,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_SALT_LEN ( 64)
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
#define TC_DATA_LEN ( 448)
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
typedef struct tc_tmp
{
@ -61,7 +64,7 @@ typedef struct tc_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -132,14 +135,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
| TOKEN_ATTR_VERIFY_SIGNATURE;
token.sep[1] = '$';
token.len_min[1] = 128;
token.len_max[1] = 128;
token.len_min[1] = TC_SALT_HEX_LEN;
token.len_max[1] = TC_SALT_HEX_LEN;
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
token.sep[2] = '$';
token.len_min[2] = 896;
token.len_max[2] = 896;
token.len_min[2] = TC_DATA_HEX_LEN;
token.len_max[2] = TC_DATA_HEX_LEN;
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
@ -151,12 +154,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *salt_pos = token.buf[1];
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
}
salt->salt_len = TC_SALT_LEN;
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
// iter
@ -166,10 +164,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *data_pos = token.buf[2];
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
tc->data_buf[i] = hex_to_u32 (data_pos + j);
}
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
// entropy
@ -183,7 +178,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}
@ -237,25 +232,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// salt
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
}
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
// data
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
char data_buf[TC_DATA_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
}
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
// output

@ -46,8 +46,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_SALT_LEN ( 64)
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
#define TC_DATA_LEN ( 448)
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
typedef struct tc_tmp
{
@ -61,7 +64,7 @@ typedef struct tc_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -132,14 +135,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
| TOKEN_ATTR_VERIFY_SIGNATURE;
token.sep[1] = '$';
token.len_min[1] = 128;
token.len_max[1] = 128;
token.len_min[1] = TC_SALT_HEX_LEN;
token.len_max[1] = TC_SALT_HEX_LEN;
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
token.sep[2] = '$';
token.len_min[2] = 896;
token.len_max[2] = 896;
token.len_min[2] = TC_DATA_HEX_LEN;
token.len_max[2] = TC_DATA_HEX_LEN;
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
@ -151,12 +154,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *salt_pos = token.buf[1];
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
}
salt->salt_len = TC_SALT_LEN;
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
// iter
@ -166,10 +164,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *data_pos = token.buf[2];
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
tc->data_buf[i] = hex_to_u32 (data_pos + j);
}
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
// entropy
@ -183,7 +178,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}
@ -237,25 +232,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// salt
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
}
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
// data
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
char data_buf[TC_DATA_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
}
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
// output

@ -46,8 +46,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_SALT_LEN ( 64)
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
#define TC_DATA_LEN ( 448)
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
typedef struct tc_tmp
{
@ -61,7 +64,7 @@ typedef struct tc_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -132,14 +135,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
| TOKEN_ATTR_VERIFY_SIGNATURE;
token.sep[1] = '$';
token.len_min[1] = 128;
token.len_max[1] = 128;
token.len_min[1] = TC_SALT_HEX_LEN;
token.len_max[1] = TC_SALT_HEX_LEN;
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
token.sep[2] = '$';
token.len_min[2] = 896;
token.len_max[2] = 896;
token.len_min[2] = TC_DATA_HEX_LEN;
token.len_max[2] = TC_DATA_HEX_LEN;
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
@ -151,12 +154,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *salt_pos = token.buf[1];
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
}
salt->salt_len = TC_SALT_LEN;
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
// iter
@ -166,10 +164,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *data_pos = token.buf[2];
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
tc->data_buf[i] = hex_to_u32 (data_pos + j);
}
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
// entropy
@ -183,7 +178,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}
@ -237,25 +232,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// salt
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
}
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
// data
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
char data_buf[TC_DATA_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
}
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
// output

@ -48,8 +48,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_SALT_LEN ( 64)
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
#define TC_DATA_LEN ( 448)
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
typedef struct tc64_tmp
{
@ -63,7 +66,7 @@ typedef struct tc64_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -134,14 +137,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
| TOKEN_ATTR_VERIFY_SIGNATURE;
token.sep[1] = '$';
token.len_min[1] = 128;
token.len_max[1] = 128;
token.len_min[1] = TC_SALT_HEX_LEN;
token.len_max[1] = TC_SALT_HEX_LEN;
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
token.sep[2] = '$';
token.len_min[2] = 896;
token.len_max[2] = 896;
token.len_min[2] = TC_DATA_HEX_LEN;
token.len_max[2] = TC_DATA_HEX_LEN;
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
@ -153,12 +156,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *salt_pos = token.buf[1];
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
}
salt->salt_len = TC_SALT_LEN;
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
// iter
@ -168,10 +166,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *data_pos = token.buf[2];
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
tc->data_buf[i] = hex_to_u32 (data_pos + j);
}
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
// entropy
@ -185,7 +180,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}
@ -239,25 +234,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// salt
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
}
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
// data
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
char data_buf[TC_DATA_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
}
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
// output

@ -48,8 +48,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_SALT_LEN ( 64)
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
#define TC_DATA_LEN ( 448)
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
typedef struct tc64_tmp
{
@ -63,7 +66,7 @@ typedef struct tc64_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -134,14 +137,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
| TOKEN_ATTR_VERIFY_SIGNATURE;
token.sep[1] = '$';
token.len_min[1] = 128;
token.len_max[1] = 128;
token.len_min[1] = TC_SALT_HEX_LEN;
token.len_max[1] = TC_SALT_HEX_LEN;
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
token.sep[2] = '$';
token.len_min[2] = 896;
token.len_max[2] = 896;
token.len_min[2] = TC_DATA_HEX_LEN;
token.len_max[2] = TC_DATA_HEX_LEN;
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
@ -153,12 +156,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *salt_pos = token.buf[1];
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
}
salt->salt_len = TC_SALT_LEN;
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
// iter
@ -168,10 +166,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *data_pos = token.buf[2];
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
tc->data_buf[i] = hex_to_u32 (data_pos + j);
}
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
// entropy
@ -185,7 +180,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}
@ -239,25 +234,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// salt
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
}
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
// data
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
char data_buf[TC_DATA_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
}
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
// output

@ -48,8 +48,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_SALT_LEN ( 64)
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
#define TC_DATA_LEN ( 448)
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
typedef struct tc64_tmp
{
@ -63,7 +66,7 @@ typedef struct tc64_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -134,14 +137,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
| TOKEN_ATTR_VERIFY_SIGNATURE;
token.sep[1] = '$';
token.len_min[1] = 128;
token.len_max[1] = 128;
token.len_min[1] = TC_SALT_HEX_LEN;
token.len_max[1] = TC_SALT_HEX_LEN;
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
token.sep[2] = '$';
token.len_min[2] = 896;
token.len_max[2] = 896;
token.len_min[2] = TC_DATA_HEX_LEN;
token.len_max[2] = TC_DATA_HEX_LEN;
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
@ -153,12 +156,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *salt_pos = token.buf[1];
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
}
salt->salt_len = TC_SALT_LEN;
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
// iter
@ -168,10 +166,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *data_pos = token.buf[2];
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
tc->data_buf[i] = hex_to_u32 (data_pos + j);
}
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
// entropy
@ -185,7 +180,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}
@ -239,25 +234,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// salt
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
}
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
// data
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
char data_buf[TC_DATA_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
}
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
// output

@ -47,8 +47,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_SALT_LEN ( 64)
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
#define TC_DATA_LEN ( 448)
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
typedef struct tc_tmp
{
@ -62,7 +65,7 @@ typedef struct tc_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -142,14 +145,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
| TOKEN_ATTR_VERIFY_SIGNATURE;
token.sep[1] = '$';
token.len_min[1] = 128;
token.len_max[1] = 128;
token.len_min[1] = TC_SALT_HEX_LEN;
token.len_max[1] = TC_SALT_HEX_LEN;
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
token.sep[2] = '$';
token.len_min[2] = 896;
token.len_max[2] = 896;
token.len_min[2] = TC_DATA_HEX_LEN;
token.len_max[2] = TC_DATA_HEX_LEN;
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
@ -161,12 +164,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *salt_pos = token.buf[1];
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
}
salt->salt_len = TC_SALT_LEN;
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
// iter
@ -176,10 +174,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *data_pos = token.buf[2];
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
tc->data_buf[i] = hex_to_u32 (data_pos + j);
}
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
// entropy
@ -193,7 +188,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}
@ -247,25 +242,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// salt
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
}
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
// data
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
char data_buf[TC_DATA_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
}
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
// output

@ -47,8 +47,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_SALT_LEN ( 64)
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
#define TC_DATA_LEN ( 448)
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
typedef struct tc_tmp
{
@ -62,7 +65,7 @@ typedef struct tc_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -142,14 +145,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
| TOKEN_ATTR_VERIFY_SIGNATURE;
token.sep[1] = '$';
token.len_min[1] = 128;
token.len_max[1] = 128;
token.len_min[1] = TC_SALT_HEX_LEN;
token.len_max[1] = TC_SALT_HEX_LEN;
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
token.sep[2] = '$';
token.len_min[2] = 896;
token.len_max[2] = 896;
token.len_min[2] = TC_DATA_HEX_LEN;
token.len_max[2] = TC_DATA_HEX_LEN;
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
@ -161,12 +164,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *salt_pos = token.buf[1];
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
}
salt->salt_len = TC_SALT_LEN;
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
// iter
@ -176,10 +174,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *data_pos = token.buf[2];
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
tc->data_buf[i] = hex_to_u32 (data_pos + j);
}
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
// entropy
@ -193,7 +188,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}
@ -247,25 +242,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// salt
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
}
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
// data
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
char data_buf[TC_DATA_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
}
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
// output

@ -47,8 +47,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_SALT_LEN ( 64)
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
#define TC_DATA_LEN ( 448)
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
typedef struct tc_tmp
{
@ -62,7 +65,7 @@ typedef struct tc_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -138,14 +141,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
| TOKEN_ATTR_VERIFY_SIGNATURE;
token.sep[1] = '$';
token.len_min[1] = 128;
token.len_max[1] = 128;
token.len_min[1] = TC_SALT_HEX_LEN;
token.len_max[1] = TC_SALT_HEX_LEN;
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
token.sep[2] = '$';
token.len_min[2] = 896;
token.len_max[2] = 896;
token.len_min[2] = TC_DATA_HEX_LEN;
token.len_max[2] = TC_DATA_HEX_LEN;
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
@ -157,12 +160,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *salt_pos = token.buf[1];
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
}
salt->salt_len = TC_SALT_LEN;
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
// iter
@ -172,10 +170,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *data_pos = token.buf[2];
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
tc->data_buf[i] = hex_to_u32 (data_pos + j);
}
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
// entropy
@ -189,7 +184,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}
@ -243,25 +238,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// salt
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
}
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
// data
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
char data_buf[TC_DATA_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
}
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
// output

@ -47,8 +47,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_SALT_LEN ( 64)
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
#define TC_DATA_LEN ( 448)
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
typedef struct tc_tmp
{
@ -62,7 +65,7 @@ typedef struct tc_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -145,14 +148,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
| TOKEN_ATTR_VERIFY_SIGNATURE;
token.sep[1] = '$';
token.len_min[1] = 128;
token.len_max[1] = 128;
token.len_min[1] = TC_SALT_HEX_LEN;
token.len_max[1] = TC_SALT_HEX_LEN;
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
token.sep[2] = '$';
token.len_min[2] = 896;
token.len_max[2] = 896;
token.len_min[2] = TC_DATA_HEX_LEN;
token.len_max[2] = TC_DATA_HEX_LEN;
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
@ -164,12 +167,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *salt_pos = token.buf[1];
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
}
salt->salt_len = TC_SALT_LEN;
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
// iter
@ -179,10 +177,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *data_pos = token.buf[2];
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
tc->data_buf[i] = hex_to_u32 (data_pos + j);
}
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
// entropy
@ -196,7 +191,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}
@ -250,25 +245,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// salt
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
}
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
// data
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
char data_buf[TC_DATA_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
}
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
// output

@ -47,8 +47,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_SALT_LEN ( 64)
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
#define TC_DATA_LEN ( 448)
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
typedef struct tc_tmp
{
@ -62,7 +65,7 @@ typedef struct tc_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -145,14 +148,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
| TOKEN_ATTR_VERIFY_SIGNATURE;
token.sep[1] = '$';
token.len_min[1] = 128;
token.len_max[1] = 128;
token.len_min[1] = TC_SALT_HEX_LEN;
token.len_max[1] = TC_SALT_HEX_LEN;
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
token.sep[2] = '$';
token.len_min[2] = 896;
token.len_max[2] = 896;
token.len_min[2] = TC_DATA_HEX_LEN;
token.len_max[2] = TC_DATA_HEX_LEN;
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
@ -164,12 +167,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *salt_pos = token.buf[1];
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
}
salt->salt_len = TC_SALT_LEN;
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
// iter
@ -179,10 +177,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *data_pos = token.buf[2];
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
tc->data_buf[i] = hex_to_u32 (data_pos + j);
}
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
// entropy
@ -196,7 +191,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}
@ -250,25 +245,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// salt
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
}
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
// data
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
char data_buf[TC_DATA_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
}
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
// output

@ -47,8 +47,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
#define TC_SALT_LEN 64
#define TC_DATA_LEN 448
#define TC_SALT_LEN ( 64)
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
#define TC_DATA_LEN ( 448)
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
typedef struct tc_tmp
{
@ -62,7 +65,7 @@ typedef struct tc_tmp
typedef struct tc
{
u32 data_buf[112];
u32 data_buf[TC_DATA_LEN / 4];
u32 keyfile_buf16[16];
u32 keyfile_buf32[32];
u32 keyfile_enabled;
@ -145,14 +148,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
| TOKEN_ATTR_VERIFY_SIGNATURE;
token.sep[1] = '$';
token.len_min[1] = 128;
token.len_max[1] = 128;
token.len_min[1] = TC_SALT_HEX_LEN;
token.len_max[1] = TC_SALT_HEX_LEN;
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
token.sep[2] = '$';
token.len_min[2] = 896;
token.len_max[2] = 896;
token.len_min[2] = TC_DATA_HEX_LEN;
token.len_max[2] = TC_DATA_HEX_LEN;
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
| TOKEN_ATTR_VERIFY_HEX;
@ -164,12 +167,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *salt_pos = token.buf[1];
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
}
salt->salt_len = TC_SALT_LEN;
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
// iter
@ -179,10 +177,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
const u8 *data_pos = token.buf[2];
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
tc->data_buf[i] = hex_to_u32 (data_pos + j);
}
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
// entropy
@ -196,7 +191,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// fake digest
memcpy (digest, tc->data_buf, 112);
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
return (PARSER_OK);
}
@ -250,25 +245,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
// salt
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
{
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
}
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
// data
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
char data_buf[TC_DATA_HEX_LEN] = { 0 };
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
{
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
}
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
// output

@ -1,5 +1,10 @@
#!/usr/bin/env python3
#
# Author......: See docs/credits.txt
# License.....: MIT
#
from argparse import ArgumentParser, ArgumentTypeError
@ -23,9 +28,10 @@ def validate_offset(offset):
offset = BOOTABLE_OFFSET + HIDDEN_OFFSET
try:
offset = int(offset)
assert offset >= 0
except (AssertionError, ValueError):
raise ArgumentTypeError("offset is nether non-negative number nor bootable, hidden or bootable+hidden value")
except ValueError as e:
raise ArgumentTypeError("value is nether number nor allowed string") from e
if offset < 0:
raise ArgumentTypeError("value cannot be less than zero")
return offset
@ -42,14 +48,18 @@ if __name__ == "__main__":
args = parser.parse_args()
with open(args.path, "rb") as file:
file.seek(args.offset)
try:
with open(args.path, "rb") as file:
file.seek(args.offset)
header = file.read(HEADER_LENGTH)
header = file.read(HEADER_LENGTH)
assert len(header) == HEADER_LENGTH, "less data than needed"
if len(header) < HEADER_LENGTH:
parser.error("file contains less data than needed")
salt, data = header[:SALT_LENGTH], header[SALT_LENGTH:]
salt, data = header[:SALT_LENGTH], header[SALT_LENGTH:]
hash = SIGNATURE + salt.hex() + "$" + data.hex()
print(hash)
hash = SIGNATURE + salt.hex() + "$" + data.hex()
print(hash)
except IOError as e:
parser.error(e.strerror.lower())

Loading…
Cancel
Save