As my physics teacher once said - le's begin with what we know before we try to solve the problem:
1 - The real interesting contest of the keyfile is 14 bytes long
2 - There is a checksum wich is 4 bytes long.
3 - We have cracked it if the checksum matches the 4 last bytes.
Ascii values for 'Cruehead': | 43 | 72 | 75 | 65 | 68 | 65 | 61 | 64 |
Bytes to XOR with: | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |
The result: | 02 | 30 | 36 | 21 | 2D | 23 | 26 | 2C |
So, now we know the first 8 values of the keyfile. Now we need to make the 9'th value zero. And we know that the 9'th value will be XOR'ed with 49, so the value will simply be 49 (49 xor 49 = 0).
Ok, now we have done 9 values. We have 5 left. We can fill these with whatever we want, they wont change the username nor the checksum, so lets choose to zero them. Our first 14 bytes in our keyfile will then look like this:
02 30 36 21 2D 23 26 2C 49 00 00 00 00 00
Ok, now there are only 4 more bytes to mess with (hehe, messing in bytes, MiB, you know? :)).
We know that the last four bytes must be the sum of the decrypted values Xor'ed with 12345678h. So, let's sum 'em up! The sum is 321 (nice, huh?) and this xor'ed with 12345678 is 12345559.
There, we're done! The contents of the keyfile will be:
02 30 36 21 2D 23 26 2C 49 00 00 00 00 00 59 55 34 12
Copyright © MiB 1998. All rights reversed.