diff --git a/docs/changes.txt b/docs/changes.txt index 6d4b97ebb..94a785278 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -1,5 +1,11 @@ * changes v3.00 -> v3.xx: +## +## Improvements +## + +- Allow loading of bcrypt hashes with signature $2b$ (February 2014) + ## ## Algorithms ## diff --git a/include/shared.h b/include/shared.h index f576ea3dc..5f0b61113 100644 --- a/include/shared.h +++ b/include/shared.h @@ -1027,8 +1027,9 @@ extern hc_thread_mutex_t mux_display; #define SIGNATURE_PHPASS2 "$H$" #define SIGNATURE_MD5CRYPT "$1$" #define SIGNATURE_BCRYPT1 "$2a$" -#define SIGNATURE_BCRYPT2 "$2x$" -#define SIGNATURE_BCRYPT3 "$2y$" +#define SIGNATURE_BCRYPT2 "$2b$" +#define SIGNATURE_BCRYPT3 "$2x$" +#define SIGNATURE_BCRYPT4 "$2y$" #define SIGNATURE_SHA512CRYPT "$6$" #define SIGNATURE_MD5APR1 "$apr1$" #define SIGNATURE_MSSQL "0x0100" diff --git a/src/shared.c b/src/shared.c index 7c764b1b3..9fd8d70b6 100644 --- a/src/shared.c +++ b/src/shared.c @@ -10106,7 +10106,7 @@ int bcrypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf) { if ((input_len < DISPLAY_LEN_MIN_3200) || (input_len > DISPLAY_LEN_MAX_3200)) return (PARSER_GLOBAL_LENGTH); - if ((memcmp (SIGNATURE_BCRYPT1, input_buf, 4)) && (memcmp (SIGNATURE_BCRYPT2, input_buf, 4)) && (memcmp (SIGNATURE_BCRYPT3, input_buf, 4))) return (PARSER_SIGNATURE_UNMATCHED); + if ((memcmp (SIGNATURE_BCRYPT1, input_buf, 4)) && (memcmp (SIGNATURE_BCRYPT2, input_buf, 4)) && (memcmp (SIGNATURE_BCRYPT3, input_buf, 4)) && (memcmp (SIGNATURE_BCRYPT4, input_buf, 4))) return (PARSER_SIGNATURE_UNMATCHED); u32 *digest = (u32 *) hash_buf->digest;