/**
* Authors.....: Jens Steube <jens.steube@gmail.com>
* Gabriele Gristina <matrix@hashcat.net>
+ * magnum <john.magnum@hushmail.com>
*
* License.....: MIT
*/
* basic bit handling
*/
+u32 is_power_of_2(u32 v)
+{
+ return (v && !(v & (v - 1)));
+}
+
u32 rotl32 (const u32 a, const u32 n)
{
return ((a << n) | (a >> (32 - n)));
return NULL;
}
+int sort_by_u32 (const void *v1, const void *v2)
+{
+ const u32 *s1 = (const u32 *) v1;
+ const u32 *s2 = (const u32 *) v2;
+
+ return *s1 - *s2;
+}
+
int sort_by_salt (const void *v1, const void *v2)
{
const salt_t *s1 = (const salt_t *) v1;
u8 *ptr_checksum = (u8 *) krb5tgs->checksum;
u8 *ptr_edata2 = (u8 *) krb5tgs->edata2;
- char data[256] = { 0 };
+ char data[2560 * 4 * 2] = { 0 };
char *ptr_data = data;
/* skip '$' */
ptr_data++;
- for (uint i = 0; i < 32; i++, ptr_data += 2)
+ for (uint i = 0; i < krb5tgs->edata2_len; i++, ptr_data += 2)
sprintf (ptr_data, "%02x", ptr_edata2[i]);
- *ptr_data = 0;
-
snprintf (out_buf, len-1, "%s$%s$%s$%s",
SIGNATURE_KRB5TGS,
(char *) krb5tgs->account_info,
*/
/* Skip '$' */
- char *account_pos = input_buf + 11 + 1;
-
+ char *account_pos = input_buf + 11 + 1;
+
char *data_pos;
uint data_len;
*edata_ptr++ = hex_convert (p1) << 0
| hex_convert (p0) << 4;
}
+
+ /* this is needed for hmac_md5 */
+ *edata_ptr++ = 0x80;
- krb5tgs->edata2_len = strlen (edata_ptr - input_len) / (2 * 4);
+ krb5tgs->edata2_len = (data_len - 32) / 2 ;
salt->salt_buf[0] = krb5tgs->checksum[0];
salt->salt_buf[1] = krb5tgs->checksum[1];
salt->salt_buf[2] = krb5tgs->checksum[2];
salt->salt_buf[3] = krb5tgs->checksum[3];
-
+
salt->salt_len = 32;
digest[0] = krb5tgs->checksum[0];