mirror of
https://github.com/hashcat/hashcat.git
synced 2024-12-01 12:28:24 +00:00
Refactored 134 to 13500. Added esalt struct
This commit is contained in:
parent
2df81367df
commit
8cf6607c87
@ -348,6 +348,7 @@ extern hc_thread_mutex_t mux_display;
|
|||||||
#define HT_13200 "AxCrypt"
|
#define HT_13200 "AxCrypt"
|
||||||
#define HT_13300 "AxCrypt in memory SHA1"
|
#define HT_13300 "AxCrypt in memory SHA1"
|
||||||
#define HT_13400 "Keepass 1 (AES/Twofish) and Keepass 2 (AES)"
|
#define HT_13400 "Keepass 1 (AES/Twofish) and Keepass 2 (AES)"
|
||||||
|
#define HT_13500 "PeopleSoft PS_TOKEN"
|
||||||
|
|
||||||
#define HT_00011 "Joomla < 2.5.18"
|
#define HT_00011 "Joomla < 2.5.18"
|
||||||
#define HT_00012 "PostgreSQL"
|
#define HT_00012 "PostgreSQL"
|
||||||
@ -364,7 +365,6 @@ extern hc_thread_mutex_t mux_display;
|
|||||||
#define HT_00131 "MSSQL(2000)"
|
#define HT_00131 "MSSQL(2000)"
|
||||||
#define HT_00132 "MSSQL(2005)"
|
#define HT_00132 "MSSQL(2005)"
|
||||||
#define HT_00133 "PeopleSoft"
|
#define HT_00133 "PeopleSoft"
|
||||||
#define HT_00134 "PeopleSoft PS_TOKEN"
|
|
||||||
#define HT_00141 "EPiServer 6.x < v4"
|
#define HT_00141 "EPiServer 6.x < v4"
|
||||||
#define HT_01421 "hMailServer"
|
#define HT_01421 "hMailServer"
|
||||||
#define HT_01441 "EPiServer 6.x > v4"
|
#define HT_01441 "EPiServer 6.x > v4"
|
||||||
@ -691,6 +691,8 @@ extern hc_thread_mutex_t mux_display;
|
|||||||
#define DISPLAY_LEN_MAX_13300 1 + 12 + 1 + 40
|
#define DISPLAY_LEN_MAX_13300 1 + 12 + 1 + 40
|
||||||
#define DISPLAY_LEN_MIN_13400 1 + 7 + 1 + 1 + 1 + 1 + 1 + 1 + 32 + 1 + 64 + 1 + 32 + 1 + 64 + 1 + 1 + 1 + 1
|
#define DISPLAY_LEN_MIN_13400 1 + 7 + 1 + 1 + 1 + 1 + 1 + 1 + 32 + 1 + 64 + 1 + 32 + 1 + 64 + 1 + 1 + 1 + 1
|
||||||
#define DISPLAY_LEN_MAX_13400 1 + 7 + 1 + 1 + 10 + 1 + 3 + 1 + 64 + 1 + 64 + 1 + 32 + 1 + 64 + 1 + 4 + 1 + 600000 + 1 + 2 + 1 + 64
|
#define DISPLAY_LEN_MAX_13400 1 + 7 + 1 + 1 + 10 + 1 + 3 + 1 + 64 + 1 + 64 + 1 + 32 + 1 + 64 + 1 + 4 + 1 + 600000 + 1 + 2 + 1 + 64
|
||||||
|
#define DISPLAY_LEN_MIN_13500 40 + 1 + 16 * 2
|
||||||
|
#define DISPLAY_LEN_MAX_13500 40 + 1 + 512 * 2
|
||||||
|
|
||||||
#define DISPLAY_LEN_MIN_11 32 + 1 + 16
|
#define DISPLAY_LEN_MIN_11 32 + 1 + 16
|
||||||
#define DISPLAY_LEN_MAX_11 32 + 1 + 32
|
#define DISPLAY_LEN_MAX_11 32 + 1 + 32
|
||||||
@ -732,8 +734,6 @@ extern hc_thread_mutex_t mux_display;
|
|||||||
#define DISPLAY_LEN_MAX_132 6 + 8 + 40
|
#define DISPLAY_LEN_MAX_132 6 + 8 + 40
|
||||||
#define DISPLAY_LEN_MIN_133 28
|
#define DISPLAY_LEN_MIN_133 28
|
||||||
#define DISPLAY_LEN_MAX_133 28
|
#define DISPLAY_LEN_MAX_133 28
|
||||||
#define DISPLAY_LEN_MIN_134 40 + 150
|
|
||||||
#define DISPLAY_LEN_MAX_134 40 + 300
|
|
||||||
#define DISPLAY_LEN_MIN_141 14 + 0 + 1 + 28
|
#define DISPLAY_LEN_MIN_141 14 + 0 + 1 + 28
|
||||||
#define DISPLAY_LEN_MAX_141 14 + 44 + 1 + 28
|
#define DISPLAY_LEN_MAX_141 14 + 44 + 1 + 28
|
||||||
#define DISPLAY_LEN_MIN_1441 14 + 0 + 1 + 43
|
#define DISPLAY_LEN_MIN_1441 14 + 0 + 1 + 43
|
||||||
@ -1478,7 +1478,6 @@ int netntlmv2_parse_hash (char *input_buf, uint input_len, hash_t *hash
|
|||||||
int oracleh_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
|
int oracleh_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
|
||||||
int oracles_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
|
int oracles_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
|
||||||
int oraclet_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
|
int oraclet_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
|
||||||
int pstoken_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
|
|
||||||
int osc_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
|
int osc_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
|
||||||
int arubaos_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
|
int arubaos_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
|
||||||
int osx1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
|
int osx1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
|
||||||
@ -1598,6 +1597,7 @@ int androidfde_samsung_parse_hash (char *input_buf, uint input_len, hash_t *hash
|
|||||||
int axcrypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
|
int axcrypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
|
||||||
int sha1axcrypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
|
int sha1axcrypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
|
||||||
int keepass_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
|
int keepass_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
|
||||||
|
int pstoken_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
|
||||||
|
|
||||||
void load_kernel (const char *kernel_file, int num_devices, size_t *kernel_lengths, const u8 **kernel_sources);
|
void load_kernel (const char *kernel_file, int num_devices, size_t *kernel_lengths, const u8 **kernel_sources);
|
||||||
void writeProgramBin (char *dst, u8 *binary, size_t binary_size);
|
void writeProgramBin (char *dst, u8 *binary, size_t binary_size);
|
||||||
|
@ -702,6 +702,13 @@ typedef struct
|
|||||||
|
|
||||||
} psafe3_t;
|
} psafe3_t;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
u32 salt_buf[128];
|
||||||
|
u32 salt_len;
|
||||||
|
|
||||||
|
} pstoken_t;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
char plain_buf[256];
|
char plain_buf[256];
|
||||||
|
@ -268,7 +268,6 @@ static uint default_benchmark_algorithms[NUM_DEFAULT_BENCHMARK_ALGORITHMS] =
|
|||||||
8700,
|
8700,
|
||||||
9100,
|
9100,
|
||||||
133,
|
133,
|
||||||
134,
|
|
||||||
11600,
|
11600,
|
||||||
12500,
|
12500,
|
||||||
13000,
|
13000,
|
||||||
@ -301,6 +300,7 @@ static uint default_benchmark_algorithms[NUM_DEFAULT_BENCHMARK_ALGORITHMS] =
|
|||||||
11300,
|
11300,
|
||||||
12700,
|
12700,
|
||||||
13400,
|
13400,
|
||||||
|
13500,
|
||||||
125
|
125
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -697,7 +697,7 @@ const char *USAGE_BIG[] =
|
|||||||
" 8700 = Lotus Notes/Domino 6",
|
" 8700 = Lotus Notes/Domino 6",
|
||||||
" 9100 = Lotus Notes/Domino 8",
|
" 9100 = Lotus Notes/Domino 8",
|
||||||
" 133 = PeopleSoft",
|
" 133 = PeopleSoft",
|
||||||
" 134 = PeopleSoft Token",
|
" 13500 = PeopleSoft Token",
|
||||||
"",
|
"",
|
||||||
"[[ Archives ]]",
|
"[[ Archives ]]",
|
||||||
"",
|
"",
|
||||||
@ -5964,7 +5964,7 @@ int main (int argc, char **argv)
|
|||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hash_mode_chgd && hash_mode > 13400) // just added to remove compiler warnings for hash_mode_chgd
|
if (hash_mode_chgd && hash_mode > 13500) // just added to remove compiler warnings for hash_mode_chgd
|
||||||
{
|
{
|
||||||
log_error ("ERROR: Invalid hash-type specified");
|
log_error ("ERROR: Invalid hash-type specified");
|
||||||
|
|
||||||
@ -7451,30 +7451,6 @@ int main (int argc, char **argv)
|
|||||||
dgst_pos3 = 1;
|
dgst_pos3 = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 134: hash_type = HASH_TYPE_SHA1;
|
|
||||||
salt_type = SALT_TYPE_INTERN;
|
|
||||||
attack_exec = ATTACK_EXEC_INSIDE_KERNEL;
|
|
||||||
opts_type = OPTS_TYPE_PT_GENERATE_BE
|
|
||||||
| OPTS_TYPE_PT_UNICODE
|
|
||||||
| OPTS_TYPE_ST_ADD80
|
|
||||||
| OPTS_TYPE_ST_ADDBITS15;
|
|
||||||
kern_type = KERN_TYPE_SHA1_SLTPWU;
|
|
||||||
dgst_size = DGST_SIZE_4_5;
|
|
||||||
parse_func = pstoken_parse_hash;
|
|
||||||
sort_by_digest = sort_by_digest_4_5;
|
|
||||||
opti_type = OPTI_TYPE_ZERO_BYTE
|
|
||||||
| OPTI_TYPE_PRECOMPUTE_INIT
|
|
||||||
| OPTI_TYPE_PRECOMPUTE_MERKLE
|
|
||||||
| OPTI_TYPE_EARLY_SKIP
|
|
||||||
| OPTI_TYPE_NOT_ITERATED
|
|
||||||
| OPTI_TYPE_PREPENDED_SALT
|
|
||||||
| OPTI_TYPE_RAW_HASH;
|
|
||||||
dgst_pos0 = 3;
|
|
||||||
dgst_pos1 = 4;
|
|
||||||
dgst_pos2 = 2;
|
|
||||||
dgst_pos3 = 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 140: hash_type = HASH_TYPE_SHA1;
|
case 140: hash_type = HASH_TYPE_SHA1;
|
||||||
salt_type = SALT_TYPE_INTERN;
|
salt_type = SALT_TYPE_INTERN;
|
||||||
attack_exec = ATTACK_EXEC_INSIDE_KERNEL;
|
attack_exec = ATTACK_EXEC_INSIDE_KERNEL;
|
||||||
@ -10314,6 +10290,30 @@ int main (int argc, char **argv)
|
|||||||
dgst_pos3 = 3;
|
dgst_pos3 = 3;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 13500: hash_type = HASH_TYPE_SHA1;
|
||||||
|
salt_type = SALT_TYPE_EMBEDDED;
|
||||||
|
attack_exec = ATTACK_EXEC_INSIDE_KERNEL;
|
||||||
|
opts_type = OPTS_TYPE_PT_GENERATE_BE
|
||||||
|
| OPTS_TYPE_PT_UNICODE
|
||||||
|
| OPTS_TYPE_ST_ADD80
|
||||||
|
| OPTS_TYPE_ST_ADDBITS15;
|
||||||
|
kern_type = KERN_TYPE_SHA1_SLTPWU;
|
||||||
|
dgst_size = DGST_SIZE_4_5;
|
||||||
|
parse_func = pstoken_parse_hash;
|
||||||
|
sort_by_digest = sort_by_digest_4_5;
|
||||||
|
opti_type = OPTI_TYPE_ZERO_BYTE
|
||||||
|
| OPTI_TYPE_PRECOMPUTE_INIT
|
||||||
|
| OPTI_TYPE_PRECOMPUTE_MERKLE
|
||||||
|
| OPTI_TYPE_EARLY_SKIP
|
||||||
|
| OPTI_TYPE_NOT_ITERATED
|
||||||
|
| OPTI_TYPE_PREPENDED_SALT
|
||||||
|
| OPTI_TYPE_RAW_HASH;
|
||||||
|
dgst_pos0 = 3;
|
||||||
|
dgst_pos1 = 4;
|
||||||
|
dgst_pos2 = 2;
|
||||||
|
dgst_pos3 = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
default: usage_mini_print (PROGNAME); return (-1);
|
default: usage_mini_print (PROGNAME); return (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -10419,6 +10419,7 @@ int main (int argc, char **argv)
|
|||||||
case 13000: esalt_size = sizeof (rar5_t); break;
|
case 13000: esalt_size = sizeof (rar5_t); break;
|
||||||
case 13100: esalt_size = sizeof (krb5tgs_t); break;
|
case 13100: esalt_size = sizeof (krb5tgs_t); break;
|
||||||
case 13400: esalt_size = sizeof (keepass_t); break;
|
case 13400: esalt_size = sizeof (keepass_t); break;
|
||||||
|
case 13500: esalt_size = sizeof (pstoken_t); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
data.esalt_size = esalt_size;
|
data.esalt_size = esalt_size;
|
||||||
|
16
src/shared.c
16
src/shared.c
@ -5696,7 +5696,6 @@ char *strhashtype (const uint hash_mode)
|
|||||||
case 131: return ((char *) HT_00131); break;
|
case 131: return ((char *) HT_00131); break;
|
||||||
case 132: return ((char *) HT_00132); break;
|
case 132: return ((char *) HT_00132); break;
|
||||||
case 133: return ((char *) HT_00133); break;
|
case 133: return ((char *) HT_00133); break;
|
||||||
case 134: return ((char *) HT_00134); break;
|
|
||||||
case 140: return ((char *) HT_00140); break;
|
case 140: return ((char *) HT_00140); break;
|
||||||
case 141: return ((char *) HT_00141); break;
|
case 141: return ((char *) HT_00141); break;
|
||||||
case 150: return ((char *) HT_00150); break;
|
case 150: return ((char *) HT_00150); break;
|
||||||
@ -5854,6 +5853,7 @@ char *strhashtype (const uint hash_mode)
|
|||||||
case 13200: return ((char *) HT_13200); break;
|
case 13200: return ((char *) HT_13200); break;
|
||||||
case 13300: return ((char *) HT_13300); break;
|
case 13300: return ((char *) HT_13300); break;
|
||||||
case 13400: return ((char *) HT_13400); break;
|
case 13400: return ((char *) HT_13400); break;
|
||||||
|
case 13500: return ((char *) HT_13500); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ((char *) "Unknown");
|
return ((char *) "Unknown");
|
||||||
@ -11760,16 +11760,16 @@ int pstoken_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf)
|
|||||||
{
|
{
|
||||||
if (data.opts_type & OPTS_TYPE_ST_HEX)
|
if (data.opts_type & OPTS_TYPE_ST_HEX)
|
||||||
{
|
{
|
||||||
if ((input_len < DISPLAY_LEN_MIN_134) || (input_len > DISPLAY_LEN_MAX_134)) return (PARSER_GLOBAL_LENGTH);
|
if ((input_len < DISPLAY_LEN_MIN_13500) || (input_len > DISPLAY_LEN_MAX_13500)) return (PARSER_GLOBAL_LENGTH);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ((input_len < DISPLAY_LEN_MIN_134) || (input_len > DISPLAY_LEN_MAX_134)) return (PARSER_GLOBAL_LENGTH);
|
if ((input_len < DISPLAY_LEN_MIN_13500) || (input_len > DISPLAY_LEN_MAX_13500)) return (PARSER_GLOBAL_LENGTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 *digest = (u32 *) hash_buf->digest;
|
u32 *digest = (u32 *) hash_buf->digest;
|
||||||
|
|
||||||
salt_t *salt = hash_buf->salt;
|
salt_t *salt = hash_buf->salt;
|
||||||
|
pstoken_t *pstoken = (pstoken_t *) hash_buf->esalt;
|
||||||
|
|
||||||
digest[0] = hex_to_u32 ((const u8 *) &input_buf[ 0]);
|
digest[0] = hex_to_u32 ((const u8 *) &input_buf[ 0]);
|
||||||
digest[1] = hex_to_u32 ((const u8 *) &input_buf[ 8]);
|
digest[1] = hex_to_u32 ((const u8 *) &input_buf[ 8]);
|
||||||
@ -11789,13 +11789,13 @@ int pstoken_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf)
|
|||||||
|
|
||||||
char *salt_buf = input_buf + 40 + 1;
|
char *salt_buf = input_buf + 40 + 1;
|
||||||
|
|
||||||
char *salt_buf_ptr = (char *) salt->salt_buf;
|
|
||||||
|
|
||||||
salt_len = parse_and_store_salt (salt_buf_ptr, salt_buf, salt_len);
|
|
||||||
|
|
||||||
if (salt_len == UINT_MAX) return (PARSER_SALT_LENGTH);
|
if (salt_len == UINT_MAX) return (PARSER_SALT_LENGTH);
|
||||||
|
|
||||||
salt->salt_len = salt_len;
|
salt->salt_len = salt_len;
|
||||||
|
pstoken->salt_len = salt_len;
|
||||||
|
|
||||||
|
memcpy(salt->salt_buf, salt_buf, 16);
|
||||||
|
memcpy(pstoken->salt_buf, salt_buf, salt_len);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user