diff --git a/docs/changes.txt b/docs/changes.txt index 05cb3f8df..c7eb61f2f 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -27,6 +27,7 @@ - Fixed the parsing of command line options. It doesn't show two times the same error about an invalid option anymore. - Fixed the estimated time value whenever the value is very large and overflows - Fixed the parsing of DCC2 hashes by allowing the "#" character within the user name +- Fixed the parsing of descrypt hashes if the hashes do have non-standard characters within the salt ## ## Improvements diff --git a/src/interface.c b/src/interface.c index c0fa95abc..d0de82950 100644 --- a/src/interface.c +++ b/src/interface.c @@ -3786,7 +3786,13 @@ int descrypt_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE_U salt->salt_buf[0] = itoa64_to_int (input_buf[0]) | itoa64_to_int (input_buf[1]) << 6; - salt->salt_len = 2; + // we need to add 2 additional bytes (the salt sign) such that the salt sorting algorithm + // doesn't eliminate salts that are identical but have different salt signs + + salt->salt_buf[0] |= input_buf[0] << 16 + | input_buf[1] << 24; + + salt->salt_len = 4; // actually it is only 2 (but we need to add the original salt_sign to it) u8 tmp_buf[100] = { 0 };