mirror of
https://github.com/hashcat/hashcat.git
synced 2025-02-23 13:02:06 +00:00
Merge pull request #3193 from philsmd/philsmd-cleanup-code-style
cleanup and code style fixes
This commit is contained in:
commit
e5d441320d
@ -20,9 +20,10 @@ static const u32 DGST_SIZE = DGST_SIZE_4_8;
|
|||||||
static const u32 HASH_CATEGORY = HASH_CATEGORY_DATABASE_SERVER;
|
static const u32 HASH_CATEGORY = HASH_CATEGORY_DATABASE_SERVER;
|
||||||
static const char *HASH_NAME = "PostgreSQL SCRAM-SHA-256";
|
static const char *HASH_NAME = "PostgreSQL SCRAM-SHA-256";
|
||||||
static const u64 KERN_TYPE = 28600;
|
static const u64 KERN_TYPE = 28600;
|
||||||
static const u32 OPTI_TYPE =
|
static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE
|
||||||
OPTI_TYPE_ZERO_BYTE | OPTI_TYPE_SLOW_HASH_SIMD_LOOP;
|
| OPTI_TYPE_SLOW_HASH_SIMD_LOOP;
|
||||||
static const u64 OPTS_TYPE = OPTS_TYPE_PT_GENERATE_LE | OPTS_TYPE_ST_BASE64;
|
static const u64 OPTS_TYPE = OPTS_TYPE_PT_GENERATE_LE
|
||||||
|
| OPTS_TYPE_ST_BASE64;
|
||||||
static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED;
|
static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED;
|
||||||
static const char *ST_PASS = "hashcat";
|
static const char *ST_PASS = "hashcat";
|
||||||
static const char *ST_HASH = "SCRAM-SHA-256$4096:IKfxzJ8Nq4PkLJCfgKcPmA==$"
|
static const char *ST_HASH = "SCRAM-SHA-256$4096:IKfxzJ8Nq4PkLJCfgKcPmA==$"
|
||||||
@ -45,7 +46,8 @@ const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
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; }
|
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; }
|
||||||
|
|
||||||
|
|
||||||
typedef struct postgres_sha256_tmp {
|
typedef struct postgres_sha256_tmp
|
||||||
|
{
|
||||||
u32 ipad[8];
|
u32 ipad[8];
|
||||||
u32 opad[8];
|
u32 opad[8];
|
||||||
|
|
||||||
@ -54,7 +56,8 @@ typedef struct postgres_sha256_tmp {
|
|||||||
|
|
||||||
} postgres_sha256_tmp_t;
|
} postgres_sha256_tmp_t;
|
||||||
|
|
||||||
typedef struct postgres_sha256 {
|
typedef struct postgres_sha256
|
||||||
|
{
|
||||||
u32 salt[16];
|
u32 salt[16];
|
||||||
u32 storedKey[16];
|
u32 storedKey[16];
|
||||||
|
|
||||||
@ -70,23 +73,27 @@ char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAY
|
|||||||
char *jit_build_options = NULL;
|
char *jit_build_options = NULL;
|
||||||
|
|
||||||
// Extra treatment for Apple systems
|
// Extra treatment for Apple systems
|
||||||
if (device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) {
|
if (device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE)
|
||||||
|
{
|
||||||
return jit_build_options;
|
return jit_build_options;
|
||||||
}
|
}
|
||||||
|
|
||||||
// NVIDIA GPU
|
// NVIDIA GPU
|
||||||
if (device_param->opencl_device_vendor_id == VENDOR_ID_NV) {
|
if (device_param->opencl_device_vendor_id == VENDOR_ID_NV)
|
||||||
|
{
|
||||||
hc_asprintf(&jit_build_options, "-D _unroll");
|
hc_asprintf(&jit_build_options, "-D _unroll");
|
||||||
}
|
}
|
||||||
|
|
||||||
// HIP
|
// HIP
|
||||||
if (device_param->opencl_device_vendor_id == VENDOR_ID_AMD_USE_HIP) {
|
if (device_param->opencl_device_vendor_id == VENDOR_ID_AMD_USE_HIP)
|
||||||
|
{
|
||||||
hc_asprintf(&jit_build_options, "-D _unroll");
|
hc_asprintf(&jit_build_options, "-D _unroll");
|
||||||
}
|
}
|
||||||
|
|
||||||
// ROCM
|
// ROCM
|
||||||
if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) &&
|
if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) &&
|
||||||
(device_param->has_vperm == true)) {
|
(device_param->has_vperm == true))
|
||||||
|
{
|
||||||
hc_asprintf(&jit_build_options, "-D _unroll");
|
hc_asprintf(&jit_build_options, "-D _unroll");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -133,31 +140,34 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
token.sep[0] = '$';
|
token.sep[0] = '$';
|
||||||
token.len_min[0] = 13;
|
token.len_min[0] = 13;
|
||||||
token.len_max[0] = 13;
|
token.len_max[0] = 13;
|
||||||
token.attr[0] = TOKEN_ATTR_VERIFY_LENGTH | TOKEN_ATTR_VERIFY_SIGNATURE;
|
token.attr[0] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
|
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
||||||
|
|
||||||
token.sep[1] = ':';
|
token.sep[1] = ':';
|
||||||
token.len_min[1] = 1;
|
token.len_min[1] = 1;
|
||||||
token.len_max[1] = 7;
|
token.len_max[1] = 7;
|
||||||
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH | TOKEN_ATTR_VERIFY_DIGIT;
|
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
|
| TOKEN_ATTR_VERIFY_DIGIT;
|
||||||
|
|
||||||
token.sep[2] = '$';
|
token.sep[2] = '$';
|
||||||
token.len_min[2] = 0;
|
token.len_min[2] = 0;
|
||||||
token.len_max[2] = 88;
|
token.len_max[2] = 88;
|
||||||
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH | TOKEN_ATTR_VERIFY_BASE64A;
|
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
|
| TOKEN_ATTR_VERIFY_BASE64A;
|
||||||
|
|
||||||
token.sep[3] = ':';
|
token.sep[3] = ':';
|
||||||
token.len_min[3] = 44;
|
token.len_min[3] = 44;
|
||||||
token.len_max[3] = 44;
|
token.len_max[3] = 44;
|
||||||
token.attr[3] = TOKEN_ATTR_VERIFY_LENGTH | TOKEN_ATTR_VERIFY_BASE64A;
|
token.attr[3] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
|
| TOKEN_ATTR_VERIFY_BASE64A;
|
||||||
|
|
||||||
token.len[4] = 44;
|
token.len[4] = 44;
|
||||||
token.attr[4] = TOKEN_ATTR_FIXED_LENGTH | TOKEN_ATTR_VERIFY_BASE64A;
|
token.attr[4] = TOKEN_ATTR_FIXED_LENGTH
|
||||||
|
| TOKEN_ATTR_VERIFY_BASE64A;
|
||||||
|
|
||||||
const int rc_tokenizer =
|
const int rc_tokenizer = input_tokenizer ((const u8 *) line_buf, line_len, &token);
|
||||||
input_tokenizer((const u8 *)line_buf, line_len, &token);
|
|
||||||
|
|
||||||
if (rc_tokenizer != PARSER_OK)
|
if (rc_tokenizer != PARSER_OK) return (rc_tokenizer);
|
||||||
return (rc_tokenizer);
|
|
||||||
|
|
||||||
// iter
|
// iter
|
||||||
|
|
||||||
@ -165,8 +175,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u32 iter = hc_strtoul ((const char *) iter_pos, NULL, 10);
|
const u32 iter = hc_strtoul ((const char *) iter_pos, NULL, 10);
|
||||||
|
|
||||||
if (iter < 1)
|
if (iter < 1) return (PARSER_SALT_ITERATION);
|
||||||
return (PARSER_SALT_ITERATION);
|
|
||||||
|
|
||||||
salt->salt_iter = iter - 1;
|
salt->salt_iter = iter - 1;
|
||||||
|
|
||||||
@ -178,8 +187,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
int tmp_len = base64_decode (base64_to_int, salt_pos, salt_len, tmp_buf);
|
int tmp_len = base64_decode (base64_to_int, salt_pos, salt_len, tmp_buf);
|
||||||
|
|
||||||
if (tmp_len > 64)
|
if (tmp_len > 64) return (PARSER_SALT_LENGTH);
|
||||||
return (PARSER_SALT_LENGTH);
|
|
||||||
|
|
||||||
memcpy (postgres_sha256->salt, tmp_buf, tmp_len);
|
memcpy (postgres_sha256->salt, tmp_buf, tmp_len);
|
||||||
|
|
||||||
@ -241,8 +249,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
tmp_len = base64_decode (base64_to_int, hash_pos, hash_len, tmp_buf);
|
tmp_len = base64_decode (base64_to_int, hash_pos, hash_len, tmp_buf);
|
||||||
|
|
||||||
if (tmp_len != 32)
|
if (tmp_len != 32) return (PARSER_HASH_LENGTH);
|
||||||
return (PARSER_HASH_LENGTH);
|
|
||||||
|
|
||||||
memcpy (digest, tmp_buf, 32);
|
memcpy (digest, tmp_buf, 32);
|
||||||
|
|
||||||
@ -279,8 +286,7 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
u8 salt_base64[64] = { 0 };
|
u8 salt_base64[64] = { 0 };
|
||||||
|
|
||||||
base64_encode(int_to_base64, (const u8 *)salt_buf, salt->salt_len,
|
base64_encode (int_to_base64, (const u8 *) salt_buf, salt->salt_len, salt_base64);
|
||||||
salt_base64);
|
|
||||||
|
|
||||||
// server key
|
// server key
|
||||||
|
|
||||||
@ -311,9 +317,12 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// print final line
|
// print final line
|
||||||
|
|
||||||
const int line_len =
|
const int line_len = snprintf (line_buf, line_size, "%s$%u:%s$%s:%s",
|
||||||
snprintf(line_buf, line_size, "%s$%u:%s$%s:%s", SIGNATURE_POSTGRES_SHA256,
|
SIGNATURE_POSTGRES_SHA256,
|
||||||
salt->salt_iter + 1, salt_base64, stored_key_base64, server_key_base64);
|
salt->salt_iter + 1,
|
||||||
|
salt_base64,
|
||||||
|
stored_key_base64,
|
||||||
|
server_key_base64);
|
||||||
return line_len;
|
return line_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,7 +108,9 @@ void get_next_word_lm_gen (char *buf, u64 sz, u64 *len, u64 *off, u64 cutlen)
|
|||||||
if (i == cutlen)
|
if (i == cutlen)
|
||||||
{
|
{
|
||||||
if (cutlen == 20) buf[i - 1]= ']'; // add ] in $HEX[] format
|
if (cutlen == 20) buf[i - 1]= ']'; // add ] in $HEX[] format
|
||||||
|
|
||||||
*len = i;
|
*len = i;
|
||||||
|
|
||||||
// but continue a loop to skip rest of the line
|
// but continue a loop to skip rest of the line
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,14 +126,16 @@ void get_next_word_lm_gen (char *buf, u64 sz, u64 *len, u64 *off, u64 cutlen)
|
|||||||
}
|
}
|
||||||
|
|
||||||
*off = sz;
|
*off = sz;
|
||||||
|
|
||||||
if (sz < cutlen) *len = sz;
|
if (sz < cutlen) *len = sz;
|
||||||
}
|
}
|
||||||
|
|
||||||
void get_next_word_lm_hex (char *buf, u64 sz, u64 *len, u64 *off)
|
void get_next_word_lm_hex (char *buf, u64 sz, u64 *len, u64 *off)
|
||||||
{
|
{
|
||||||
// this one is called if --hex-wordlist is uesed
|
// this one is called if --hex-wordlist is used
|
||||||
// we need 14 hex-digits to get 7 characters
|
// we need 14 hex-digits to get 7 characters
|
||||||
// but first convert 7 chars to upper case if thay are a-z
|
// but first convert 7 chars to upper case if they are a-z
|
||||||
|
|
||||||
for (u64 i = 5; i < sz; i++)
|
for (u64 i = 5; i < sz; i++)
|
||||||
{
|
{
|
||||||
if ((i & 1) == 0)
|
if ((i & 1) == 0)
|
||||||
@ -147,9 +151,12 @@ void get_next_word_lm_hex (char *buf, u64 sz, u64 *len, u64 *off)
|
|||||||
buf[i] = '5';
|
buf[i] = '5';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i == 12) break; // stop when 7 chars are converted
|
if (i == 12) break; // stop when 7 chars are converted
|
||||||
}
|
}
|
||||||
|
|
||||||
// call generic next_word
|
// call generic next_word
|
||||||
|
|
||||||
get_next_word_lm_gen (buf, sz, len, off, 14);
|
get_next_word_lm_gen (buf, sz, len, off, 14);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,14 +164,19 @@ void get_next_word_lm_hex_or_text (char *buf, u64 sz, u64 *len, u64 *off)
|
|||||||
{
|
{
|
||||||
// check if not $HEX[..] format
|
// check if not $HEX[..] format
|
||||||
bool hex = true;
|
bool hex = true;
|
||||||
|
|
||||||
if (sz < 8) hex = false;
|
if (sz < 8) hex = false;
|
||||||
|
|
||||||
if (hex && (buf[0] != '$')) hex = false;
|
if (hex && (buf[0] != '$')) hex = false;
|
||||||
if (hex && (buf[1] != 'H')) hex = false;
|
if (hex && (buf[1] != 'H')) hex = false;
|
||||||
if (hex && (buf[2] != 'E')) hex = false;
|
if (hex && (buf[2] != 'E')) hex = false;
|
||||||
if (hex && (buf[3] != 'X')) hex = false;
|
if (hex && (buf[3] != 'X')) hex = false;
|
||||||
if (hex && (buf[4] != '[')) hex = false;
|
if (hex && (buf[4] != '[')) hex = false;
|
||||||
if (hex){
|
|
||||||
|
if (hex)
|
||||||
|
{
|
||||||
char *ptr = buf + 5; // starting after '['
|
char *ptr = buf + 5; // starting after '['
|
||||||
|
|
||||||
for (u64 i = 5; i < sz; i++, ptr++)
|
for (u64 i = 5; i < sz; i++, ptr++)
|
||||||
{
|
{
|
||||||
if (*ptr == ']')
|
if (*ptr == ']')
|
||||||
@ -699,7 +711,8 @@ int wl_data_init (hashcat_ctx_t *hashcat_ctx)
|
|||||||
|
|
||||||
if (hashconfig->opts_type & OPTS_TYPE_PT_LM)
|
if (hashconfig->opts_type & OPTS_TYPE_PT_LM)
|
||||||
{
|
{
|
||||||
if (hashconfig->opts_type & OPTS_TYPE_PT_HEX){
|
if (hashconfig->opts_type & OPTS_TYPE_PT_HEX)
|
||||||
|
{
|
||||||
wl_data->func = get_next_word_lm_hex; // all hex in file
|
wl_data->func = get_next_word_lm_hex; // all hex in file
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -707,7 +720,9 @@ int wl_data_init (hashcat_ctx_t *hashcat_ctx)
|
|||||||
if (user_options->wordlist_autohex_disable == false)
|
if (user_options->wordlist_autohex_disable == false)
|
||||||
{
|
{
|
||||||
wl_data->func = get_next_word_lm_hex_or_text; // might be $HEX[] notation
|
wl_data->func = get_next_word_lm_hex_or_text; // might be $HEX[] notation
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
wl_data->func = get_next_word_lm_text; // treat as nromal text
|
wl_data->func = get_next_word_lm_text; // treat as nromal text
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user