1
0
mirror of https://github.com/hashcat/hashcat.git synced 2024-11-23 00:28:11 +00:00

Add hash-mode option OPTS_TYPE_PT_ALWAYS_ASCII to control need_hexify() from interface.c

This commit is contained in:
jsteube 2016-11-05 14:46:00 +01:00
parent 7548295f3f
commit 2507f62722
7 changed files with 49 additions and 29 deletions

View File

@ -8,7 +8,7 @@
#include <ctype.h> #include <ctype.h>
bool need_hexify (const u8 *buf, const int len, bool accept_utf8); bool need_hexify (const u8 *buf, const int len, bool always_ascii);
void exec_hexify (const u8 *buf, const int len, u8 *out); void exec_hexify (const u8 *buf, const int len, u8 *out);
bool is_valid_hex_char (const u8 c); bool is_valid_hex_char (const u8 c);

View File

@ -344,22 +344,23 @@ typedef enum opts_type
OPTS_TYPE_PT_GENERATE_BE = (1 << 9), OPTS_TYPE_PT_GENERATE_BE = (1 << 9),
OPTS_TYPE_PT_NEVERCRACK = (1 << 10), // if we want all possible results OPTS_TYPE_PT_NEVERCRACK = (1 << 10), // if we want all possible results
OPTS_TYPE_PT_BITSLICE = (1 << 11), OPTS_TYPE_PT_BITSLICE = (1 << 11),
OPTS_TYPE_ST_UNICODE = (1 << 12), OPTS_TYPE_PT_ALWAYS_ASCII = (1 << 12),
OPTS_TYPE_ST_UPPER = (1 << 13), OPTS_TYPE_ST_UNICODE = (1 << 13),
OPTS_TYPE_ST_LOWER = (1 << 14), OPTS_TYPE_ST_UPPER = (1 << 14),
OPTS_TYPE_ST_ADD01 = (1 << 15), OPTS_TYPE_ST_LOWER = (1 << 15),
OPTS_TYPE_ST_ADD02 = (1 << 16), OPTS_TYPE_ST_ADD01 = (1 << 16),
OPTS_TYPE_ST_ADD80 = (1 << 17), OPTS_TYPE_ST_ADD02 = (1 << 17),
OPTS_TYPE_ST_ADDBITS14 = (1 << 18), OPTS_TYPE_ST_ADD80 = (1 << 18),
OPTS_TYPE_ST_ADDBITS15 = (1 << 19), OPTS_TYPE_ST_ADDBITS14 = (1 << 19),
OPTS_TYPE_ST_GENERATE_LE = (1 << 20), OPTS_TYPE_ST_ADDBITS15 = (1 << 20),
OPTS_TYPE_ST_GENERATE_BE = (1 << 21), OPTS_TYPE_ST_GENERATE_LE = (1 << 21),
OPTS_TYPE_ST_HEX = (1 << 22), OPTS_TYPE_ST_GENERATE_BE = (1 << 22),
OPTS_TYPE_ST_BASE64 = (1 << 23), OPTS_TYPE_ST_HEX = (1 << 23),
OPTS_TYPE_HASH_COPY = (1 << 24), OPTS_TYPE_ST_BASE64 = (1 << 24),
OPTS_TYPE_HOOK12 = (1 << 25), OPTS_TYPE_HASH_COPY = (1 << 25),
OPTS_TYPE_HOOK23 = (1 << 26), OPTS_TYPE_HOOK12 = (1 << 26),
OPTS_TYPE_BINARY_HASHFILE = (1 << 27), OPTS_TYPE_HOOK23 = (1 << 27),
OPTS_TYPE_BINARY_HASHFILE = (1 << 28),
} opts_type_t; } opts_type_t;

View File

@ -75,16 +75,32 @@ static bool printable_ascii (const u8 *buf, const int len)
return true; return true;
} }
bool need_hexify (const u8 *buf, const int len, bool accept_utf8) bool need_hexify (const u8 *buf, const int len, bool always_ascii)
{ {
if (accept_utf8) if (always_ascii == true)
{ {
return !printable_utf8 (buf, len); if (printable_ascii (buf, len) == true)
{
return false;
}
else
{
return true;
}
} }
else else
{ {
return !printable_ascii (buf, len); if (printable_utf8 (buf, len) == true)
{
return false;
}
else
{
return true;
}
} }
return false;
} }
void exec_hexify (const u8 *buf, const int len, u8 *out) void exec_hexify (const u8 *buf, const int len, u8 *out)

View File

@ -17430,7 +17430,8 @@ int hashconfig_init (hashcat_ctx_t *hashcat_ctx)
hashconfig->attack_exec = ATTACK_EXEC_INSIDE_KERNEL; hashconfig->attack_exec = ATTACK_EXEC_INSIDE_KERNEL;
hashconfig->opts_type = OPTS_TYPE_PT_GENERATE_LE hashconfig->opts_type = OPTS_TYPE_PT_GENERATE_LE
| OPTS_TYPE_PT_UPPER | OPTS_TYPE_PT_UPPER
| OPTS_TYPE_PT_BITSLICE; | OPTS_TYPE_PT_BITSLICE
| OPTS_TYPE_PT_ALWAYS_ASCII;
hashconfig->kern_type = KERN_TYPE_LM; hashconfig->kern_type = KERN_TYPE_LM;
hashconfig->dgst_size = DGST_SIZE_4_4; // originally DGST_SIZE_4_2 hashconfig->dgst_size = DGST_SIZE_4_4; // originally DGST_SIZE_4_2
hashconfig->parse_func = lm_parse_hash; hashconfig->parse_func = lm_parse_hash;

View File

@ -367,9 +367,9 @@ int outfile_write (hashcat_ctx_t *hashcat_ctx, const char *out_buf, const unsign
if (outfile_ctx->outfile_format & OUTFILE_FMT_PLAIN) if (outfile_ctx->outfile_format & OUTFILE_FMT_PLAIN)
{ {
bool accept_utf8 = hashcat_ctx->hashconfig->hash_type != HASH_TYPE_LM; const bool always_ascii = (hashconfig->hash_type & OPTS_TYPE_PT_ALWAYS_ASCII);
if ((user_options->outfile_autohex == true) && (need_hexify (plain_ptr, plain_len, accept_utf8) == true)) if ((user_options->outfile_autohex == true) && (need_hexify (plain_ptr, plain_len, always_ascii) == true))
{ {
tmp_buf[tmp_len++] = '$'; tmp_buf[tmp_len++] = '$';
tmp_buf[tmp_len++] = 'H'; tmp_buf[tmp_len++] = 'H';

View File

@ -267,6 +267,7 @@ void potfile_write_close (hashcat_ctx_t *hashcat_ctx)
void potfile_write_append (hashcat_ctx_t *hashcat_ctx, const char *out_buf, u8 *plain_ptr, unsigned int plain_len) void potfile_write_append (hashcat_ctx_t *hashcat_ctx, const char *out_buf, u8 *plain_ptr, unsigned int plain_len)
{ {
const hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
const potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx; const potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
const user_options_t *user_options = hashcat_ctx->user_options; const user_options_t *user_options = hashcat_ctx->user_options;
@ -291,9 +292,9 @@ void potfile_write_append (hashcat_ctx_t *hashcat_ctx, const char *out_buf, u8 *
if (1) if (1)
{ {
bool accept_utf8 = hashcat_ctx->hashconfig->hash_type != HASH_TYPE_LM; const bool always_ascii = (hashconfig->hash_type & OPTS_TYPE_PT_ALWAYS_ASCII);
if ((user_options->outfile_autohex == true) && (need_hexify (plain_ptr, plain_len, accept_utf8) == true)) if ((user_options->outfile_autohex == true) && (need_hexify (plain_ptr, plain_len, always_ascii) == true))
{ {
tmp_buf[tmp_len++] = '$'; tmp_buf[tmp_len++] = '$';
tmp_buf[tmp_len++] = 'H'; tmp_buf[tmp_len++] = 'H';

View File

@ -538,6 +538,7 @@ int status_get_input_mask_length (const hashcat_ctx_t *hashcat_ctx)
char *status_get_input_candidates_dev (const hashcat_ctx_t *hashcat_ctx, const int device_id) char *status_get_input_candidates_dev (const hashcat_ctx_t *hashcat_ctx, const int device_id)
{ {
const hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
const opencl_ctx_t *opencl_ctx = hashcat_ctx->opencl_ctx; const opencl_ctx_t *opencl_ctx = hashcat_ctx->opencl_ctx;
const status_ctx_t *status_ctx = hashcat_ctx->status_ctx; const status_ctx_t *status_ctx = hashcat_ctx->status_ctx;
const user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra; const user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra;
@ -582,10 +583,10 @@ char *status_get_input_candidates_dev (const hashcat_ctx_t *hashcat_ctx, const i
build_plain ((hashcat_ctx_t *) hashcat_ctx, device_param, &plain1, plain_buf1, &plain_len1); build_plain ((hashcat_ctx_t *) hashcat_ctx, device_param, &plain1, plain_buf1, &plain_len1);
build_plain ((hashcat_ctx_t *) hashcat_ctx, device_param, &plain2, plain_buf2, &plain_len2); build_plain ((hashcat_ctx_t *) hashcat_ctx, device_param, &plain2, plain_buf2, &plain_len2);
bool accept_utf8 = hashcat_ctx->hashconfig->hash_type != HASH_TYPE_LM; const bool always_ascii = (hashconfig->hash_type & OPTS_TYPE_PT_ALWAYS_ASCII);
const bool need_hex1 = need_hexify (plain_ptr1, plain_len1, accept_utf8); const bool need_hex1 = need_hexify (plain_ptr1, plain_len1, always_ascii);
const bool need_hex2 = need_hexify (plain_ptr2, plain_len2, accept_utf8); const bool need_hex2 = need_hexify (plain_ptr2, plain_len2, always_ascii);
if ((need_hex1 == true) || (need_hex2 == true)) if ((need_hex1 == true) || (need_hex2 == true))
{ {