dadd650ac624535704b2871f655aeb750e592aaf
15 //void mangle(char * password)
16 u32x
mangle_md5 (u32x w0
[4], u32x w1
[4], const u32x in_len
)
18 u32x out_len
= in_len
;
27 append_0x80_2x4_VV (w0
, w1
, out_len
);
43 w3_t
[2] = (out_len
) * 8;
51 md5_transform (w0_t
, w1_t
, w2_t
, w3_t
, digest
);
56 ((u8 *)digest)[0] = 0x87;
57 ((u8 *)digest)[1] = 0x43;
58 ((u8 *)digest)[2] = 0xb5;
59 ((u8 *)digest)[3] = 0x20;
60 ((u8 *)digest)[4] = 0x63;
61 ((u8 *)digest)[5] = 0xcd;
63 out_len
= b64_encode (b64encoded
, 6, (u8
*)digest
);
65 for (i
= out_len
; i
< 16; i
++) {
81 w0
[0] = ((u32x
*)b64encoded
)[0];
82 w0
[1] = ((u32x
*)b64encoded
)[1];
83 w0
[2] = ((u32x
*)b64encoded
)[2];
84 w0
[3] = ((u32x
*)b64encoded
)[3];
93 u32x
mangle_hmac (u32x w0
[4], u32x w1
[4], const u32x in_len
)
95 u32x out_len
= in_len
;
109 md5hmac_cl("flypig.co.uk", strlen("flypig.co.uk"), (u8
*)data
, in_len
, (u8
*)digest
);
112 for (i
= 0; i
< 16; i
++) {
113 printf("%x", ((u8
*)digest
)[i
]);
126 out_len
= b64_encode ((u8
*)data
, 16, (u8
*)w0
);
128 for (i
= out_len
; i
< 32; i
++) {
144 int main(int argc
, char * argv
[]) {
145 unsigned char result
[RESULT_MAX
];
146 unsigned char salt
[SALT_MAX
];
147 unsigned char digest
[DIGEST_SIZE
];
148 unsigned char hash
[DIGEST_SIZE
* 2 + 1];
151 char password
[PASS_MAX
];
153 for (pos
= 0; pos
< PASS_MAX
; pos
++) {
158 strncpy(password
, argv
[1], PASS_MAX
);
161 strncpy(password
, "hashcat", PASS_MAX
);
163 password
[PASS_MAX
- 1] = '\0';
166 strncpy(salt
, argv
[2], SALT_MAX
);
169 strncpy(salt
, "1234", SALT_MAX
);
171 salt
[SALT_MAX
- 1] = '\0';
173 SPH_HashedPassowrd("hashcat", "flypig.co.uk", result
);
177 mangle_hmac ((u32x
*)password
, (u32x
*)(password
+ 16), strlen(password
));
179 //md5hmac(salt, password, digest);
181 md5hmac_cl(salt
, strlen(salt
), password
, strlen(password
), digest
);
184 for (pos
= 0; pos
< DIGEST_SIZE
; pos
++) {
185 writeHexByte(digest
[pos
], hash
+ (pos
* 2));
187 hash
[DIGEST_SIZE
* 2] = '\0';
189 printf("(password, salt) = (\"%s\", \"%s\")\n", password
, salt
);
190 printf("Result: %s:%s\n", hash
, salt
);