Refactor all variables with HCBUFSIZ_LARGE size from stack to heap

pull/563/head
jsteube 8 years ago
parent eb58b076da
commit b8efae4281

@ -566,8 +566,8 @@ typedef struct hashes
hashinfo_t **hash_info;
u8 *out_buf; // allocates [HCBUFSIZ_LARGE];
u8 *tmp_buf; // allocates [HCBUFSIZ_LARGE];
u8 *out_buf; // allocates [HCBUFSIZ_LARGE];
u8 *tmp_buf; // allocates [HCBUFSIZ_LARGE];
} hashes_t;
@ -1050,6 +1050,9 @@ typedef struct potfile_ctx
FILE *fp;
char *filename;
u8 *out_buf; // allocates [HCBUFSIZ_LARGE];
u8 *tmp_buf; // allocates [HCBUFSIZ_LARGE];
} potfile_ctx_t;
typedef struct restore_data

@ -95,7 +95,7 @@ VERSION_TAG := $(shell test -d .git && git describe --tags --dirty=+
BINARY_NATIVE := $(PROG_NAME)
##
## General compiler and linker flags
## General compiler and linker options
##
CFLAGS := -pipe -std=c99 -Iinclude/ -IOpenCL/
@ -108,19 +108,21 @@ CFLAGS += -Wshadow
CFLAGS += -Wmissing-declarations
CFLAGS += -Wmissing-prototypes
CFLAGS += -Wpointer-arith
CFLAGS += -Wcast-align
CFLAGS += -Wstrict-prototypes
CFLAGS += -Waggregate-return
CFLAGS += -Wwrite-strings -Wno-discarded-qualifiers
CFLAGS += -Wcast-qual -Wno-cast-qual
CFLAGS += -Wswitch-enum
CFLAGS += -Wunreachable-code
CFLAGS += -Winit-self
CFLAGS += -Werror-implicit-function-declaration
CFLAGS += -Wformat
CFLAGS += -ftrapv
#CFLAGS += -Werror
# the following compiler options produce warnings that should be fixed at some time
#CFLAGS += -Wcast-align
#CFLAGS += -Wcast-qual
#CFLAGS += -Wsign-conversion
#CFLAGS += -Wwrite-strings
#CFLAGS += -pedantic
# default linux and freebsd thread stack size is 2MB
@ -128,7 +130,7 @@ CFLAGS += -ftrapv
# default OSX thread stack size is 512kB
# unfortionally, this option isn't supported by older GCC and clang versions
CFLAGS += -Wstack-usage=524288
#CFLAGS += -Wstack-usage=524288
LFLAGS :=

@ -273,9 +273,11 @@ void check_hash (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, pl
outfile_write_open (hashcat_ctx);
char tmp_buf[HCBUFSIZ_LARGE];
u8 *tmp_buf = hashes->out_buf;
const int tmp_len = outfile_write (hashcat_ctx, (char *) out_buf, plain_ptr, plain_len, crackpos, NULL, 0, tmp_buf);
tmp_buf[0] = 0;
const int tmp_len = outfile_write (hashcat_ctx, (char *) out_buf, plain_ptr, plain_len, crackpos, NULL, 0, (char *) tmp_buf);
outfile_write_close (hashcat_ctx);

@ -2002,7 +2002,9 @@ static void drupal7_encode (u8 digest[64], u8 buf[43])
static u32 parse_and_store_salt (u8 *out, u8 *in, u32 salt_len, MAYBE_UNUSED const hashconfig_t *hashconfig)
{
u8 tmp[256] = { 0 };
u32 tmp_u32[64] = { 0 };
u8 *tmp = (u8 *) tmp_u32;
if (salt_len > sizeof (tmp))
{
@ -2044,8 +2046,6 @@ static u32 parse_and_store_salt (u8 *out, u8 *in, u32 salt_len, MAYBE_UNUSED con
{
if (salt_len < 20)
{
u32 *tmp_u32 = (u32 *) tmp;
tmp_u32[9] = ((tmp_u32[4] >> 8) & 0x00FF0000) | ((tmp_u32[4] >> 16) & 0x000000FF);
tmp_u32[8] = ((tmp_u32[4] << 8) & 0x00FF0000) | ((tmp_u32[4] >> 0) & 0x000000FF);
tmp_u32[7] = ((tmp_u32[3] >> 8) & 0x00FF0000) | ((tmp_u32[3] >> 16) & 0x000000FF);
@ -2089,8 +2089,6 @@ static u32 parse_and_store_salt (u8 *out, u8 *in, u32 salt_len, MAYBE_UNUSED con
if (hashconfig->opts_type & OPTS_TYPE_ST_GENERATE_LE)
{
u32 *tmp_u32 = (u32 *) tmp;
u32 max = len / 4;
if (len % 4) max++;
@ -2125,7 +2123,7 @@ int bcrypt_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE_UNU
salt_t *salt = hash_buf->salt;
memcpy ((const char *) salt->salt_sign, input_buf, 6);
memcpy ((char *) salt->salt_sign, input_buf, 6);
u8 *iter_pos = input_buf + 4;
@ -4854,7 +4852,7 @@ int ikepsk_md5_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE
size_t in_len[9] = { 0 };
in_off[0] = (u8 *) strtok ((const char *) input_buf, ":");
in_off[0] = (u8 *) strtok ((char *) input_buf, ":");
if (in_off[0] == NULL) return (PARSER_SEPARATOR_UNMATCHED);
@ -4864,7 +4862,7 @@ int ikepsk_md5_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE
for (i = 1; i < 9; i++)
{
in_off[i] = (u8 *) strtok ((const char *) NULL, ":");
in_off[i] = (u8 *) strtok ((char *) NULL, ":");
if (in_off[i] == NULL) return (PARSER_SEPARATOR_UNMATCHED);
@ -4941,7 +4939,7 @@ int ikepsk_sha1_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYB
size_t in_len[9] = { 0 };
in_off[0] = (u8 *) strtok ((const char *) input_buf, ":");
in_off[0] = (u8 *) strtok ((char *) input_buf, ":");
if (in_off[0] == NULL) return (PARSER_SEPARATOR_UNMATCHED);
@ -4951,7 +4949,7 @@ int ikepsk_sha1_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYB
for (i = 1; i < 9; i++)
{
in_off[i] = (u8 *) strtok ((const char *) NULL, ":");
in_off[i] = (u8 *) strtok ((char *) NULL, ":");
if (in_off[i] == NULL) return (PARSER_SEPARATOR_UNMATCHED);
@ -10601,7 +10599,7 @@ int sip_auth_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE_U
u8 *tmp_md5_ptr = (u8 *) tmp_md5_buf;
snprintf ((const char *) tmp_md5_ptr, md5_remaining_len, "%s:", method_pos);
snprintf ((char *) tmp_md5_ptr, md5_remaining_len, "%s:", method_pos);
md5_len += method_len + 1;
tmp_md5_ptr += method_len + 1;
@ -10610,7 +10608,7 @@ int sip_auth_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE_U
{
md5_remaining_len = md5_max_len - md5_len;
snprintf ((const char *) tmp_md5_ptr, md5_remaining_len + 1, "%s:", URI_prefix_pos);
snprintf ((char *) tmp_md5_ptr, md5_remaining_len + 1, "%s:", URI_prefix_pos);
md5_len += URI_prefix_len + 1;
tmp_md5_ptr += URI_prefix_len + 1;
@ -10618,7 +10616,7 @@ int sip_auth_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE_U
md5_remaining_len = md5_max_len - md5_len;
snprintf ((const char *) tmp_md5_ptr, md5_remaining_len + 1, "%s", URI_resource_pos);
snprintf ((char *) tmp_md5_ptr, md5_remaining_len + 1, "%s", URI_resource_pos);
md5_len += URI_resource_len;
tmp_md5_ptr += URI_resource_len;
@ -10627,7 +10625,7 @@ int sip_auth_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE_U
{
md5_remaining_len = md5_max_len - md5_len;
snprintf ((const char *) tmp_md5_ptr, md5_remaining_len + 1, ":%s", URI_suffix_pos);
snprintf ((char *) tmp_md5_ptr, md5_remaining_len + 1, ":%s", URI_suffix_pos);
md5_len += 1 + URI_suffix_len;
}
@ -10659,7 +10657,7 @@ int sip_auth_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE_U
if (esalt_len > max_esalt_len) return (PARSER_SALT_LENGTH);
snprintf ((const char *) esalt_buf_ptr, max_esalt_len, ":%s:%s:%s:%s:%08x%08x%08x%08x",
snprintf ((char *) esalt_buf_ptr, max_esalt_len, ":%s:%s:%s:%s:%08x%08x%08x%08x",
nonce_pos,
nonce_count_pos,
nonce_client_pos,
@ -10675,7 +10673,7 @@ int sip_auth_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE_U
if (esalt_len > max_esalt_len) return (PARSER_SALT_LENGTH);
snprintf ((const char *) esalt_buf_ptr, max_esalt_len, ":%s:%08x%08x%08x%08x",
snprintf ((char *) esalt_buf_ptr, max_esalt_len, ":%s:%08x%08x%08x%08x",
nonce_pos,
tmp_digest[0],
tmp_digest[1],
@ -10701,7 +10699,7 @@ int sip_auth_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE_U
if (salt_len > max_salt_len) return (PARSER_SALT_LENGTH);
snprintf ((const char *) sip_salt_ptr, max_salt_len + 1, "%s:%s:", user_pos, realm_pos);
snprintf ((char *) sip_salt_ptr, max_salt_len + 1, "%s:%s:", user_pos, realm_pos);
sip->salt_len = salt_len;
@ -10720,7 +10718,7 @@ int sip_auth_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE_U
fake_salt_len = max_salt_len;
}
snprintf ((const char *) salt_buf_ptr, max_salt_len + 1, "%s:%s:", user_pos, realm_pos);
snprintf ((char *) salt_buf_ptr, max_salt_len + 1, "%s:%s:", user_pos, realm_pos);
salt->salt_len = fake_salt_len;
@ -12597,25 +12595,25 @@ char *stroptitype (const u32 opti_type)
{
switch (opti_type)
{
case OPTI_TYPE_ZERO_BYTE: return ((const char *) OPTI_STR_ZERO_BYTE);
case OPTI_TYPE_PRECOMPUTE_INIT: return ((const char *) OPTI_STR_PRECOMPUTE_INIT);
case OPTI_TYPE_PRECOMPUTE_MERKLE: return ((const char *) OPTI_STR_PRECOMPUTE_MERKLE);
case OPTI_TYPE_PRECOMPUTE_PERMUT: return ((const char *) OPTI_STR_PRECOMPUTE_PERMUT);
case OPTI_TYPE_MEET_IN_MIDDLE: return ((const char *) OPTI_STR_MEET_IN_MIDDLE);
case OPTI_TYPE_EARLY_SKIP: return ((const char *) OPTI_STR_EARLY_SKIP);
case OPTI_TYPE_NOT_SALTED: return ((const char *) OPTI_STR_NOT_SALTED);
case OPTI_TYPE_NOT_ITERATED: return ((const char *) OPTI_STR_NOT_ITERATED);
case OPTI_TYPE_PREPENDED_SALT: return ((const char *) OPTI_STR_PREPENDED_SALT);
case OPTI_TYPE_APPENDED_SALT: return ((const char *) OPTI_STR_APPENDED_SALT);
case OPTI_TYPE_SINGLE_HASH: return ((const char *) OPTI_STR_SINGLE_HASH);
case OPTI_TYPE_SINGLE_SALT: return ((const char *) OPTI_STR_SINGLE_SALT);
case OPTI_TYPE_BRUTE_FORCE: return ((const char *) OPTI_STR_BRUTE_FORCE);
case OPTI_TYPE_RAW_HASH: return ((const char *) OPTI_STR_RAW_HASH);
case OPTI_TYPE_SLOW_HASH_SIMD: return ((const char *) OPTI_STR_SLOW_HASH_SIMD);
case OPTI_TYPE_USES_BITS_8: return ((const char *) OPTI_STR_USES_BITS_8);
case OPTI_TYPE_USES_BITS_16: return ((const char *) OPTI_STR_USES_BITS_16);
case OPTI_TYPE_USES_BITS_32: return ((const char *) OPTI_STR_USES_BITS_32);
case OPTI_TYPE_USES_BITS_64: return ((const char *) OPTI_STR_USES_BITS_64);
case OPTI_TYPE_ZERO_BYTE: return ((char *) OPTI_STR_ZERO_BYTE);
case OPTI_TYPE_PRECOMPUTE_INIT: return ((char *) OPTI_STR_PRECOMPUTE_INIT);
case OPTI_TYPE_PRECOMPUTE_MERKLE: return ((char *) OPTI_STR_PRECOMPUTE_MERKLE);
case OPTI_TYPE_PRECOMPUTE_PERMUT: return ((char *) OPTI_STR_PRECOMPUTE_PERMUT);
case OPTI_TYPE_MEET_IN_MIDDLE: return ((char *) OPTI_STR_MEET_IN_MIDDLE);
case OPTI_TYPE_EARLY_SKIP: return ((char *) OPTI_STR_EARLY_SKIP);
case OPTI_TYPE_NOT_SALTED: return ((char *) OPTI_STR_NOT_SALTED);
case OPTI_TYPE_NOT_ITERATED: return ((char *) OPTI_STR_NOT_ITERATED);
case OPTI_TYPE_PREPENDED_SALT: return ((char *) OPTI_STR_PREPENDED_SALT);
case OPTI_TYPE_APPENDED_SALT: return ((char *) OPTI_STR_APPENDED_SALT);
case OPTI_TYPE_SINGLE_HASH: return ((char *) OPTI_STR_SINGLE_HASH);
case OPTI_TYPE_SINGLE_SALT: return ((char *) OPTI_STR_SINGLE_SALT);
case OPTI_TYPE_BRUTE_FORCE: return ((char *) OPTI_STR_BRUTE_FORCE);
case OPTI_TYPE_RAW_HASH: return ((char *) OPTI_STR_RAW_HASH);
case OPTI_TYPE_SLOW_HASH_SIMD: return ((char *) OPTI_STR_SLOW_HASH_SIMD);
case OPTI_TYPE_USES_BITS_8: return ((char *) OPTI_STR_USES_BITS_8);
case OPTI_TYPE_USES_BITS_16: return ((char *) OPTI_STR_USES_BITS_16);
case OPTI_TYPE_USES_BITS_32: return ((char *) OPTI_STR_USES_BITS_32);
case OPTI_TYPE_USES_BITS_64: return ((char *) OPTI_STR_USES_BITS_64);
}
return (NULL);
@ -12625,243 +12623,243 @@ char *strhashtype (const u32 hash_mode)
{
switch (hash_mode)
{
case 0: return ((const char *) HT_00000);
case 10: return ((const char *) HT_00010);
case 11: return ((const char *) HT_00011);
case 12: return ((const char *) HT_00012);
case 20: return ((const char *) HT_00020);
case 21: return ((const char *) HT_00021);
case 22: return ((const char *) HT_00022);
case 23: return ((const char *) HT_00023);
case 30: return ((const char *) HT_00030);
case 40: return ((const char *) HT_00040);
case 50: return ((const char *) HT_00050);
case 60: return ((const char *) HT_00060);
case 100: return ((const char *) HT_00100);
case 101: return ((const char *) HT_00101);
case 110: return ((const char *) HT_00110);
case 111: return ((const char *) HT_00111);
case 112: return ((const char *) HT_00112);
case 120: return ((const char *) HT_00120);
case 121: return ((const char *) HT_00121);
case 122: return ((const char *) HT_00122);
case 124: return ((const char *) HT_00124);
case 125: return ((const char *) HT_00125);
case 130: return ((const char *) HT_00130);
case 131: return ((const char *) HT_00131);
case 132: return ((const char *) HT_00132);
case 133: return ((const char *) HT_00133);
case 140: return ((const char *) HT_00140);
case 141: return ((const char *) HT_00141);
case 150: return ((const char *) HT_00150);
case 160: return ((const char *) HT_00160);
case 200: return ((const char *) HT_00200);
case 300: return ((const char *) HT_00300);
case 400: return ((const char *) HT_00400);
case 500: return ((const char *) HT_00500);
case 501: return ((const char *) HT_00501);
case 900: return ((const char *) HT_00900);
case 910: return ((const char *) HT_00910);
case 1000: return ((const char *) HT_01000);
case 1100: return ((const char *) HT_01100);
case 1400: return ((const char *) HT_01400);
case 1410: return ((const char *) HT_01410);
case 1420: return ((const char *) HT_01420);
case 1421: return ((const char *) HT_01421);
case 1430: return ((const char *) HT_01430);
case 1440: return ((const char *) HT_01440);
case 1441: return ((const char *) HT_01441);
case 1450: return ((const char *) HT_01450);
case 1460: return ((const char *) HT_01460);
case 1500: return ((const char *) HT_01500);
case 1600: return ((const char *) HT_01600);
case 1700: return ((const char *) HT_01700);
case 1710: return ((const char *) HT_01710);
case 1711: return ((const char *) HT_01711);
case 1720: return ((const char *) HT_01720);
case 1722: return ((const char *) HT_01722);
case 1730: return ((const char *) HT_01730);
case 1731: return ((const char *) HT_01731);
case 1740: return ((const char *) HT_01740);
case 1750: return ((const char *) HT_01750);
case 1760: return ((const char *) HT_01760);
case 1800: return ((const char *) HT_01800);
case 2100: return ((const char *) HT_02100);
case 2400: return ((const char *) HT_02400);
case 2410: return ((const char *) HT_02410);
case 2500: return ((const char *) HT_02500);
case 2600: return ((const char *) HT_02600);
case 2611: return ((const char *) HT_02611);
case 2612: return ((const char *) HT_02612);
case 2711: return ((const char *) HT_02711);
case 2811: return ((const char *) HT_02811);
case 3000: return ((const char *) HT_03000);
case 3100: return ((const char *) HT_03100);
case 3200: return ((const char *) HT_03200);
case 3710: return ((const char *) HT_03710);
case 3711: return ((const char *) HT_03711);
case 3800: return ((const char *) HT_03800);
case 4300: return ((const char *) HT_04300);
case 4400: return ((const char *) HT_04400);
case 4500: return ((const char *) HT_04500);
case 4700: return ((const char *) HT_04700);
case 4800: return ((const char *) HT_04800);
case 4900: return ((const char *) HT_04900);
case 5000: return ((const char *) HT_05000);
case 5100: return ((const char *) HT_05100);
case 5200: return ((const char *) HT_05200);
case 5300: return ((const char *) HT_05300);
case 5400: return ((const char *) HT_05400);
case 5500: return ((const char *) HT_05500);
case 5600: return ((const char *) HT_05600);
case 5700: return ((const char *) HT_05700);
case 5800: return ((const char *) HT_05800);
case 6000: return ((const char *) HT_06000);
case 6100: return ((const char *) HT_06100);
case 6211: return ((const char *) HT_06211);
case 6212: return ((const char *) HT_06212);
case 6213: return ((const char *) HT_06213);
case 6221: return ((const char *) HT_06221);
case 6222: return ((const char *) HT_06222);
case 6223: return ((const char *) HT_06223);
case 6231: return ((const char *) HT_06231);
case 6232: return ((const char *) HT_06232);
case 6233: return ((const char *) HT_06233);
case 6241: return ((const char *) HT_06241);
case 6242: return ((const char *) HT_06242);
case 6243: return ((const char *) HT_06243);
case 6300: return ((const char *) HT_06300);
case 6400: return ((const char *) HT_06400);
case 6500: return ((const char *) HT_06500);
case 6600: return ((const char *) HT_06600);
case 6700: return ((const char *) HT_06700);
case 6800: return ((const char *) HT_06800);
case 6900: return ((const char *) HT_06900);
case 7100: return ((const char *) HT_07100);
case 7200: return ((const char *) HT_07200);
case 7300: return ((const char *) HT_07300);
case 7400: return ((const char *) HT_07400);
case 7500: return ((const char *) HT_07500);
case 7600: return ((const char *) HT_07600);
case 7700: return ((const char *) HT_07700);
case 7800: return ((const char *) HT_07800);
case 7900: return ((const char *) HT_07900);
case 8000: return ((const char *) HT_08000);
case 8100: return ((const char *) HT_08100);
case 8200: return ((const char *) HT_08200);
case 8300: return ((const char *) HT_08300);
case 8400: return ((const char *) HT_08400);
case 8500: return ((const char *) HT_08500);
case 8600: return ((const char *) HT_08600);
case 8700: return ((const char *) HT_08700);
case 8800: return ((const char *) HT_08800);
case 8900: return ((const char *) HT_08900);
case 9000: return ((const char *) HT_09000);
case 9100: return ((const char *) HT_09100);
case 9200: return ((const char *) HT_09200);
case 9300: return ((const char *) HT_09300);
case 9400: return ((const char *) HT_09400);
case 9500: return ((const char *) HT_09500);
case 9600: return ((const char *) HT_09600);
case 9700: return ((const char *) HT_09700);
case 9710: return ((const char *) HT_09710);
case 9720: return ((const char *) HT_09720);
case 9800: return ((const char *) HT_09800);
case 9810: return ((const char *) HT_09810);
case 9820: return ((const char *) HT_09820);
case 9900: return ((const char *) HT_09900);
case 10000: return ((const char *) HT_10000);
case 10100: return ((const char *) HT_10100);
case 10200: return ((const char *) HT_10200);
case 10300: return ((const char *) HT_10300);
case 10400: return ((const char *) HT_10400);
case 10410: return ((const char *) HT_10410);
case 10420: return ((const char *) HT_10420);
case 10500: return ((const char *) HT_10500);
case 10600: return ((const char *) HT_10600);
case 10700: return ((const char *) HT_10700);
case 10800: return ((const char *) HT_10800);
case 10900: return ((const char *) HT_10900);
case 11000: return ((const char *) HT_11000);
case 11100: return ((const char *) HT_11100);
case 11200: return ((const char *) HT_11200);
case 11300: return ((const char *) HT_11300);
case 11400: return ((const char *) HT_11400);
case 11500: return ((const char *) HT_11500);
case 11600: return ((const char *) HT_11600);
case 11700: return ((const char *) HT_11700);
case 11800: return ((const char *) HT_11800);
case 11900: return ((const char *) HT_11900);
case 12000: return ((const char *) HT_12000);
case 12100: return ((const char *) HT_12100);
case 12200: return ((const char *) HT_12200);
case 12300: return ((const char *) HT_12300);
case 12400: return ((const char *) HT_12400);
case 12500: return ((const char *) HT_12500);
case 12600: return ((const char *) HT_12600);
case 12700: return ((const char *) HT_12700);
case 12800: return ((const char *) HT_12800);
case 12900: return ((const char *) HT_12900);
case 13000: return ((const char *) HT_13000);
case 13100: return ((const char *) HT_13100);
case 13200: return ((const char *) HT_13200);
case 13300: return ((const char *) HT_13300);
case 13400: return ((const char *) HT_13400);
case 13500: return ((const char *) HT_13500);
case 13600: return ((const char *) HT_13600);
case 13711: return ((const char *) HT_13711);
case 13712: return ((const char *) HT_13712);
case 13713: return ((const char *) HT_13713);
case 13721: return ((const char *) HT_13721);
case 13722: return ((const char *) HT_13722);
case 13723: return ((const char *) HT_13723);
case 13731: return ((const char *) HT_13731);
case 13732: return ((const char *) HT_13732);
case 13733: return ((const char *) HT_13733);
case 13741: return ((const char *) HT_13741);
case 13742: return ((const char *) HT_13742);
case 13743: return ((const char *) HT_13743);
case 13751: return ((const char *) HT_13751);
case 13752: return ((const char *) HT_13752);
case 13753: return ((const char *) HT_13753);
case 13761: return ((const char *) HT_13761);
case 13762: return ((const char *) HT_13762);
case 13763: return ((const char *) HT_13763);
case 13800: return ((const char *) HT_13800);
case 13900: return ((const char *) HT_13900);
case 14000: return ((const char *) HT_14000);
case 14100: return ((const char *) HT_14100);
}
return ((const char *) "Unknown");
case 0: return ((char *) HT_00000);
case 10: return ((char *) HT_00010);
case 11: return ((char *) HT_00011);
case 12: return ((char *) HT_00012);
case 20: return ((char *) HT_00020);
case 21: return ((char *) HT_00021);
case 22: return ((char *) HT_00022);
case 23: return ((char *) HT_00023);
case 30: return ((char *) HT_00030);
case 40: return ((char *) HT_00040);
case 50: return ((char *) HT_00050);
case 60: return ((char *) HT_00060);
case 100: return ((char *) HT_00100);
case 101: return ((char *) HT_00101);
case 110: return ((char *) HT_00110);
case 111: return ((char *) HT_00111);
case 112: return ((char *) HT_00112);
case 120: return ((char *) HT_00120);
case 121: return ((char *) HT_00121);
case 122: return ((char *) HT_00122);
case 124: return ((char *) HT_00124);
case 125: return ((char *) HT_00125);
case 130: return ((char *) HT_00130);
case 131: return ((char *) HT_00131);
case 132: return ((char *) HT_00132);
case 133: return ((char *) HT_00133);
case 140: return ((char *) HT_00140);
case 141: return ((char *) HT_00141);
case 150: return ((char *) HT_00150);
case 160: return ((char *) HT_00160);
case 200: return ((char *) HT_00200);
case 300: return ((char *) HT_00300);
case 400: return ((char *) HT_00400);
case 500: return ((char *) HT_00500);
case 501: return ((char *) HT_00501);
case 900: return ((char *) HT_00900);
case 910: return ((char *) HT_00910);
case 1000: return ((char *) HT_01000);
case 1100: return ((char *) HT_01100);
case 1400: return ((char *) HT_01400);
case 1410: return ((char *) HT_01410);
case 1420: return ((char *) HT_01420);
case 1421: return ((char *) HT_01421);
case 1430: return ((char *) HT_01430);
case 1440: return ((char *) HT_01440);
case 1441: return ((char *) HT_01441);
case 1450: return ((char *) HT_01450);
case 1460: return ((char *) HT_01460);
case 1500: return ((char *) HT_01500);
case 1600: return ((char *) HT_01600);
case 1700: return ((char *) HT_01700);
case 1710: return ((char *) HT_01710);
case 1711: return ((char *) HT_01711);
case 1720: return ((char *) HT_01720);
case 1722: return ((char *) HT_01722);
case 1730: return ((char *) HT_01730);
case 1731: return ((char *) HT_01731);
case 1740: return ((char *) HT_01740);
case 1750: return ((char *) HT_01750);
case 1760: return ((char *) HT_01760);
case 1800: return ((char *) HT_01800);
case 2100: return ((char *) HT_02100);
case 2400: return ((char *) HT_02400);
case 2410: return ((char *) HT_02410);
case 2500: return ((char *) HT_02500);
case 2600: return ((char *) HT_02600);
case 2611: return ((char *) HT_02611);
case 2612: return ((char *) HT_02612);
case 2711: return ((char *) HT_02711);
case 2811: return ((char *) HT_02811);
case 3000: return ((char *) HT_03000);
case 3100: return ((char *) HT_03100);
case 3200: return ((char *) HT_03200);
case 3710: return ((char *) HT_03710);
case 3711: return ((char *) HT_03711);
case 3800: return ((char *) HT_03800);
case 4300: return ((char *) HT_04300);
case 4400: return ((char *) HT_04400);
case 4500: return ((char *) HT_04500);
case 4700: return ((char *) HT_04700);
case 4800: return ((char *) HT_04800);
case 4900: return ((char *) HT_04900);
case 5000: return ((char *) HT_05000);
case 5100: return ((char *) HT_05100);
case 5200: return ((char *) HT_05200);
case 5300: return ((char *) HT_05300);
case 5400: return ((char *) HT_05400);
case 5500: return ((char *) HT_05500);
case 5600: return ((char *) HT_05600);
case 5700: return ((char *) HT_05700);
case 5800: return ((char *) HT_05800);
case 6000: return ((char *) HT_06000);
case 6100: return ((char *) HT_06100);
case 6211: return ((char *) HT_06211);
case 6212: return ((char *) HT_06212);
case 6213: return ((char *) HT_06213);
case 6221: return ((char *) HT_06221);
case 6222: return ((char *) HT_06222);
case 6223: return ((char *) HT_06223);
case 6231: return ((char *) HT_06231);
case 6232: return ((char *) HT_06232);
case 6233: return ((char *) HT_06233);
case 6241: return ((char *) HT_06241);
case 6242: return ((char *) HT_06242);
case 6243: return ((char *) HT_06243);
case 6300: return ((char *) HT_06300);
case 6400: return ((char *) HT_06400);
case 6500: return ((char *) HT_06500);
case 6600: return ((char *) HT_06600);
case 6700: return ((char *) HT_06700);
case 6800: return ((char *) HT_06800);
case 6900: return ((char *) HT_06900);
case 7100: return ((char *) HT_07100);
case 7200: return ((char *) HT_07200);
case 7300: return ((char *) HT_07300);
case 7400: return ((char *) HT_07400);
case 7500: return ((char *) HT_07500);
case 7600: return ((char *) HT_07600);
case 7700: return ((char *) HT_07700);
case 7800: return ((char *) HT_07800);
case 7900: return ((char *) HT_07900);
case 8000: return ((char *) HT_08000);
case 8100: return ((char *) HT_08100);
case 8200: return ((char *) HT_08200);
case 8300: return ((char *) HT_08300);
case 8400: return ((char *) HT_08400);
case 8500: return ((char *) HT_08500);
case 8600: return ((char *) HT_08600);
case 8700: return ((char *) HT_08700);
case 8800: return ((char *) HT_08800);
case 8900: return ((char *) HT_08900);
case 9000: return ((char *) HT_09000);
case 9100: return ((char *) HT_09100);
case 9200: return ((char *) HT_09200);
case 9300: return ((char *) HT_09300);
case 9400: return ((char *) HT_09400);
case 9500: return ((char *) HT_09500);
case 9600: return ((char *) HT_09600);
case 9700: return ((char *) HT_09700);
case 9710: return ((char *) HT_09710);
case 9720: return ((char *) HT_09720);
case 9800: return ((char *) HT_09800);
case 9810: return ((char *) HT_09810);
case 9820: return ((char *) HT_09820);
case 9900: return ((char *) HT_09900);
case 10000: return ((char *) HT_10000);
case 10100: return ((char *) HT_10100);
case 10200: return ((char *) HT_10200);
case 10300: return ((char *) HT_10300);
case 10400: return ((char *) HT_10400);
case 10410: return ((char *) HT_10410);
case 10420: return ((char *) HT_10420);
case 10500: return ((char *) HT_10500);
case 10600: return ((char *) HT_10600);
case 10700: return ((char *) HT_10700);
case 10800: return ((char *) HT_10800);
case 10900: return ((char *) HT_10900);
case 11000: return ((char *) HT_11000);
case 11100: return ((char *) HT_11100);
case 11200: return ((char *) HT_11200);
case 11300: return ((char *) HT_11300);
case 11400: return ((char *) HT_11400);
case 11500: return ((char *) HT_11500);
case 11600: return ((char *) HT_11600);
case 11700: return ((char *) HT_11700);
case 11800: return ((char *) HT_11800);
case 11900: return ((char *) HT_11900);
case 12000: return ((char *) HT_12000);
case 12100: return ((char *) HT_12100);
case 12200: return ((char *) HT_12200);
case 12300: return ((char *) HT_12300);
case 12400: return ((char *) HT_12400);
case 12500: return ((char *) HT_12500);
case 12600: return ((char *) HT_12600);
case 12700: return ((char *) HT_12700);
case 12800: return ((char *) HT_12800);
case 12900: return ((char *) HT_12900);
case 13000: return ((char *) HT_13000);
case 13100: return ((char *) HT_13100);
case 13200: return ((char *) HT_13200);
case 13300: return ((char *) HT_13300);
case 13400: return ((char *) HT_13400);
case 13500: return ((char *) HT_13500);
case 13600: return ((char *) HT_13600);
case 13711: return ((char *) HT_13711);
case 13712: return ((char *) HT_13712);
case 13713: return ((char *) HT_13713);
case 13721: return ((char *) HT_13721);
case 13722: return ((char *) HT_13722);
case 13723: return ((char *) HT_13723);
case 13731: return ((char *) HT_13731);
case 13732: return ((char *) HT_13732);
case 13733: return ((char *) HT_13733);
case 13741: return ((char *) HT_13741);
case 13742: return ((char *) HT_13742);
case 13743: return ((char *) HT_13743);
case 13751: return ((char *) HT_13751);
case 13752: return ((char *) HT_13752);
case 13753: return ((char *) HT_13753);
case 13761: return ((char *) HT_13761);
case 13762: return ((char *) HT_13762);
case 13763: return ((char *) HT_13763);
case 13800: return ((char *) HT_13800);
case 13900: return ((char *) HT_13900);
case 14000: return ((char *) HT_14000);
case 14100: return ((char *) HT_14100);
}
return ((char *) "Unknown");
}
char *strparser (const u32 parser_status)
{
switch (parser_status)
{
case PARSER_OK: return ((const char *) PA_000);
case PARSER_COMMENT: return ((const char *) PA_001);
case PARSER_GLOBAL_ZERO: return ((const char *) PA_002);
case PARSER_GLOBAL_LENGTH: return ((const char *) PA_003);
case PARSER_HASH_LENGTH: return ((const char *) PA_004);
case PARSER_HASH_VALUE: return ((const char *) PA_005);
case PARSER_SALT_LENGTH: return ((const char *) PA_006);
case PARSER_SALT_VALUE: return ((const char *) PA_007);
case PARSER_SALT_ITERATION: return ((const char *) PA_008);
case PARSER_SEPARATOR_UNMATCHED: return ((const char *) PA_009);
case PARSER_SIGNATURE_UNMATCHED: return ((const char *) PA_010);
case PARSER_HCCAP_FILE_SIZE: return ((const char *) PA_011);
case PARSER_HCCAP_EAPOL_SIZE: return ((const char *) PA_012);
case PARSER_PSAFE2_FILE_SIZE: return ((const char *) PA_013);
case PARSER_PSAFE3_FILE_SIZE: return ((const char *) PA_014);
case PARSER_TC_FILE_SIZE: return ((const char *) PA_015);
case PARSER_VC_FILE_SIZE: return ((const char *) PA_016);
case PARSER_SIP_AUTH_DIRECTIVE: return ((const char *) PA_017);
case PARSER_HASH_FILE: return ((const char *) PA_018);
}
return ((const char *) PA_255);
case PARSER_OK: return ((char *) PA_000);
case PARSER_COMMENT: return ((char *) PA_001);
case PARSER_GLOBAL_ZERO: return ((char *) PA_002);
case PARSER_GLOBAL_LENGTH: return ((char *) PA_003);
case PARSER_HASH_LENGTH: return ((char *) PA_004);
case PARSER_HASH_VALUE: return ((char *) PA_005);
case PARSER_SALT_LENGTH: return ((char *) PA_006);
case PARSER_SALT_VALUE: return ((char *) PA_007);
case PARSER_SALT_ITERATION: return ((char *) PA_008);
case PARSER_SEPARATOR_UNMATCHED: return ((char *) PA_009);
case PARSER_SIGNATURE_UNMATCHED: return ((char *) PA_010);
case PARSER_HCCAP_FILE_SIZE: return ((char *) PA_011);
case PARSER_HCCAP_EAPOL_SIZE: return ((char *) PA_012);
case PARSER_PSAFE2_FILE_SIZE: return ((char *) PA_013);
case PARSER_PSAFE3_FILE_SIZE: return ((char *) PA_014);
case PARSER_TC_FILE_SIZE: return ((char *) PA_015);
case PARSER_VC_FILE_SIZE: return ((char *) PA_016);
case PARSER_SIP_AUTH_DIRECTIVE: return ((char *) PA_017);
case PARSER_HASH_FILE: return ((char *) PA_018);
}
return ((char *) PA_255);
}
void to_hccap_t (hashcat_ctx_t *hashcat_ctx, hccap_t *hccap, const u32 salt_pos, const u32 digest_pos)

@ -182,6 +182,18 @@ int potfile_init (hashcat_ctx_t *hashcat_ctx)
potfile_write_close (hashcat_ctx);
// starting from here, we should allocate some scratch buffer for later use
u8 *out_buf = (u8 *) hcmalloc (hashcat_ctx, HCBUFSIZ_LARGE); VERIFY_PTR (out_buf);
potfile_ctx->out_buf = out_buf;
// we need two buffers in parallel
u8 *tmp_buf = (u8 *) hcmalloc (hashcat_ctx, HCBUFSIZ_LARGE); VERIFY_PTR (tmp_buf);
potfile_ctx->tmp_buf = tmp_buf;
return 0;
}
@ -191,6 +203,9 @@ void potfile_destroy (hashcat_ctx_t *hashcat_ctx)
if (potfile_ctx->enabled == false) return;
hcfree (potfile_ctx->out_buf);
hcfree (potfile_ctx->tmp_buf);
memset (potfile_ctx, 0, sizeof (potfile_ctx_t));
}
@ -256,7 +271,7 @@ void potfile_write_append (hashcat_ctx_t *hashcat_ctx, const char *out_buf, u8 *
if (potfile_ctx->enabled == false) return;
char tmp_buf[HCBUFSIZ_LARGE];
u8 *tmp_buf = potfile_ctx->tmp_buf;
int tmp_len = 0;
@ -518,9 +533,10 @@ int potfile_remove_parse (hashcat_ctx_t *hashcat_ctx)
int potfile_handle_show (hashcat_ctx_t *hashcat_ctx)
{
hashes_t *hashes = hashcat_ctx->hashes;
hashes_t *hashes = hashcat_ctx->hashes;
potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
hash_t *hashes_buf = hashes->hashes_buf;
hash_t *hashes_buf = hashes->hashes_buf;
u32 salts_cnt = hashes->salts_cnt;
salt_t *salts_buf = hashes->salts_buf;
@ -539,16 +555,12 @@ int potfile_handle_show (hashcat_ctx_t *hashcat_ctx)
if (digests_shown[hashes_idx] == 0) continue;
u8 *out_buf = hashes->out_buf;
u8 *out_buf = potfile_ctx->out_buf;
out_buf[0] = 0;
ascii_digest (hashcat_ctx, (char *) out_buf, salt_idx, digest_idx);
u8 *tmp_buf = hashes->tmp_buf;
tmp_buf[0] = 0;
hash_t *hash = &hashes_buf[hashes_idx];
// user
@ -570,6 +582,10 @@ int potfile_handle_show (hashcat_ctx_t *hashcat_ctx)
}
}
u8 *tmp_buf = potfile_ctx->tmp_buf;
tmp_buf[0] = 0;
const int tmp_len = outfile_write (hashcat_ctx, (char *) out_buf, (u8 *) hash->pw_buf, hash->pw_len, 0, username, user_len, (char *) tmp_buf);
EVENT_DATA (EVENT_POTFILE_HASH_SHOW, tmp_buf, tmp_len);
@ -581,7 +597,8 @@ int potfile_handle_show (hashcat_ctx_t *hashcat_ctx)
int potfile_handle_left (hashcat_ctx_t *hashcat_ctx)
{
hashes_t *hashes = hashcat_ctx->hashes;
hashes_t *hashes = hashcat_ctx->hashes;
potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
hash_t *hashes_buf = hashes->hashes_buf;
@ -602,7 +619,7 @@ int potfile_handle_left (hashcat_ctx_t *hashcat_ctx)
if (digests_shown[hashes_idx] == 1) continue;
u8 *out_buf = hashes->out_buf;
u8 *out_buf = potfile_ctx->out_buf;
out_buf[0] = 0;
@ -629,7 +646,9 @@ int potfile_handle_left (hashcat_ctx_t *hashcat_ctx)
}
}
u8 *tmp_buf = hashes->tmp_buf;
u8 *tmp_buf = potfile_ctx->tmp_buf;
tmp_buf[0] = 0;
const int tmp_len = outfile_write (hashcat_ctx, (char *) out_buf, NULL, 0, 0, username, user_len, (char *) tmp_buf);

Loading…
Cancel
Save