From 2029be782e3a5f7d56a5b1efc1befddeec49e6e4 Mon Sep 17 00:00:00 2001 From: jsteube Date: Thu, 9 Nov 2023 15:04:32 +0000 Subject: [PATCH] Refactor extract_dynamic_x() to extract_dynamicx_hash() and add code --- include/shared.h | 2 +- src/shared.c | 26 +++++++------------------- 2 files changed, 8 insertions(+), 20 deletions(-) diff --git a/include/shared.h b/include/shared.h index ac4042226..f1660c58e 100644 --- a/include/shared.h +++ b/include/shared.h @@ -104,7 +104,7 @@ int generic_salt_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, const u8 int input_tokenizer (const u8 *input_buf, const int input_len, hc_token_t *token); -int extract_dynamic_x (const u8 *input_buf); +int extract_dynamicx_hash (const u8 *input_buf, const int input_len, u8 **output_buf, int *output_len); #if defined (__APPLE__) bool is_apple_silicon (void); diff --git a/src/shared.c b/src/shared.c index f141e25fc..04fc71ef4 100644 --- a/src/shared.c +++ b/src/shared.c @@ -1484,31 +1484,19 @@ char *file_to_buffer (const char *filename) return NULL; } -int extract_dynamic_x (const u8 *input_buf) +int extract_dynamicx_hash (const u8 *input_buf, const int input_len, u8 **output_buf, int *output_len) { -/* - if (input_len < 12) return -1; + int hash_mode = -1; - if (input_buf[0] != '$') return -1; - if (input_buf[1] != 'd') return -1; - if (input_buf[2] != 'y') return -1; - if (input_buf[3] != 'n') return -1; - if (input_buf[4] != 'a') return -1; - if (input_buf[5] != 'm') return -1; - if (input_buf[6] != 'i') return -1; - if (input_buf[7] != 'c') return -1; - if (input_buf[8] != '_') return -1; + if (sscanf ((char *) input_buf, "$dynamic_%d$", &hash_mode) != 1) return -1; - int digit_len = 0; + *output_buf = (u8 *) index ((char *) input_buf + 10, '$'); - for (int i = 0; i < input_len; i++) - { + if (*output_buf == NULL) return -1; - } -*/ - int hash_mode = -1; + *output_buf += 1; // the $ itself - if (sscanf ((char *) input_buf, "$dynamic_%d$", &hash_mode) != 1) return -1; + *output_len = input_len - (*output_buf - input_buf); return hash_mode; }