pstoken->salt_len = salt_len / 2;
- salt->salt_len = 32;
-
/* some fake salt for the sorting mechanisms */
salt->salt_buf[0] = pstoken->salt_buf[0];
pstoken->pc_offset = 0;
- for (uint i = 0; i < pstoken->salt_len - 64; i += 64)
+ for (int i = 0; i < (int) pstoken->salt_len - 64; i += 64)
{
uint w[16];
- w[ 0] = byte_swap_32 (pstoken->salt_buf[i + 0]);
- w[ 1] = byte_swap_32 (pstoken->salt_buf[i + 1]);
- w[ 2] = byte_swap_32 (pstoken->salt_buf[i + 2]);
- w[ 3] = byte_swap_32 (pstoken->salt_buf[i + 3]);
- w[ 4] = byte_swap_32 (pstoken->salt_buf[i + 4]);
- w[ 5] = byte_swap_32 (pstoken->salt_buf[i + 5]);
- w[ 6] = byte_swap_32 (pstoken->salt_buf[i + 6]);
- w[ 7] = byte_swap_32 (pstoken->salt_buf[i + 7]);
- w[ 8] = byte_swap_32 (pstoken->salt_buf[i + 8]);
- w[ 9] = byte_swap_32 (pstoken->salt_buf[i + 9]);
- w[10] = byte_swap_32 (pstoken->salt_buf[i + 10]);
- w[11] = byte_swap_32 (pstoken->salt_buf[i + 11]);
- w[12] = byte_swap_32 (pstoken->salt_buf[i + 12]);
- w[13] = byte_swap_32 (pstoken->salt_buf[i + 13]);
- w[14] = byte_swap_32 (pstoken->salt_buf[i + 14]);
- w[15] = byte_swap_32 (pstoken->salt_buf[i + 15]);
+ w[ 0] = byte_swap_32 (pstoken->salt_buf[pstoken->pc_offset + 0]);
+ w[ 1] = byte_swap_32 (pstoken->salt_buf[pstoken->pc_offset + 1]);
+ w[ 2] = byte_swap_32 (pstoken->salt_buf[pstoken->pc_offset + 2]);
+ w[ 3] = byte_swap_32 (pstoken->salt_buf[pstoken->pc_offset + 3]);
+ w[ 4] = byte_swap_32 (pstoken->salt_buf[pstoken->pc_offset + 4]);
+ w[ 5] = byte_swap_32 (pstoken->salt_buf[pstoken->pc_offset + 5]);
+ w[ 6] = byte_swap_32 (pstoken->salt_buf[pstoken->pc_offset + 6]);
+ w[ 7] = byte_swap_32 (pstoken->salt_buf[pstoken->pc_offset + 7]);
+ w[ 8] = byte_swap_32 (pstoken->salt_buf[pstoken->pc_offset + 8]);
+ w[ 9] = byte_swap_32 (pstoken->salt_buf[pstoken->pc_offset + 9]);
+ w[10] = byte_swap_32 (pstoken->salt_buf[pstoken->pc_offset + 10]);
+ w[11] = byte_swap_32 (pstoken->salt_buf[pstoken->pc_offset + 11]);
+ w[12] = byte_swap_32 (pstoken->salt_buf[pstoken->pc_offset + 12]);
+ w[13] = byte_swap_32 (pstoken->salt_buf[pstoken->pc_offset + 13]);
+ w[14] = byte_swap_32 (pstoken->salt_buf[pstoken->pc_offset + 14]);
+ w[15] = byte_swap_32 (pstoken->salt_buf[pstoken->pc_offset + 15]);
sha1_64 (w, pstoken->pc_digest);
return (PARSER_OK);
}
-
int sha1b64_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf)
{
if ((input_len < DISPLAY_LEN_MIN_101) || (input_len > DISPLAY_LEN_MAX_101)) return (PARSER_GLOBAL_LENGTH);
}
elsif ($mode == 13500)
{
- $hash_buf = sha1_hex (pack("H*",$salt_buf) . encode ("UTF-16LE", $word_buf));
+ $hash_buf = sha1_hex (pack ("H*", $salt_buf) . encode ("UTF-16LE", $word_buf));
$tmp_hash = sprintf ("%s:%s", $hash_buf, $salt_buf);
}
sub get_pstoken_salt
{
- # Cannot be fully random because of the salt structure, will use a constant salt.
- my $pstoken_const =
- "\x71\x00\x00\x00\x04\x03\x02\x01\x01\x00\x00\x00\xbc\x02" .
- "\x00\x00\x00\x00\x00\x00\x10\x50\x00\x50\x00\x57\x00\x45" .
- "\x00\x42\x00\x45\x00\x58\x00\x54\x00\x06\x45\x00\x4e\x00" .
- "\x47\x00\x0e\x50\x00\x53\x00\x46\x00\x54\x00\x5f\x00\x48" .
- "\x00\x52\x00\x34\x32\x00\x30\x00\x31\x00\x36\x00\x2d\x00" .
- "\x30\x00\x34\x00\x2d\x00\x30\x00\x38\x00\x2d\x00\x31\x00" .
- "\x39\x00\x2e\x00\x32\x00\x37\x00\x2e\x00\x30\x00\x35\x00" .
- "\x2e\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x32\x00" .
- "\x00";
+ my $pstoken_length = get_random_num (16, 256);
+
+ ## not a valid pstoken but a better test
+ ## because of random length
+
+ my $pstoken_const = randbytes ($pstoken_length);
return unpack ("H*", $pstoken_const);
}