8900 Decrypt Algorithm

Note: the 8900Decryptor (which doesn’t work) doesn’t look like the same with this algorithm.

crypt_1 BAB28FA5A3582BC95E463D0E7D8CABF9
iv_1    8EE8A2C9F308FB91264B993F8DFDA5EC
hash = sha1(header[0:0x40])
buf1 = crypt_1
buf2 = hash[0:0x10]
aes(buf1, size=0x10, type=1, key=0, iv=iv_1)
aes_reset_key()
aes(buf2, size=0x10, type=0, key=buf1, iv=[0]*16)
aes_reset_key()
if (memcmp(header[0x40:0x50], buf2)) fail ("bad header")

Or, in plain English, what the code seems to do is

1) hash first 0×40 bytes
2) encrypt crypt_1 with IV=iv_1 and no key(?)
3) encrypt the result of 1 with key=result of 2 and IV=all zeroes
4) compare the result of 3 with bytes at header+0×40

It seems that if type!=0 the “key” param is not used by aes()I‘m 99% sure that the algo is AES-128-CBC but I can’t reproduce the result

Header examples

00: 38 39 30 30 31 2E 30 03 00 00 00 00 00 70 EF 00
10: 00 70 EF 00 80 70 EF 00 0A 0C 00 00 DC 76 C6 77
20: BB EA 47 2D 86 57 60 87 41 35 59 21 AC 15 5E 17
30: 59 23 4D 76 93 96 63 D0 26 B0 A0 EB 00 00 02 00
40: 84 1B EC 18 20 0D C6 4E F3 85 8E 7A A0 EE 0C 63

00: 38 39 30 30 31 2E 30 03 00 00 00 00 70 A6 32 00
10: 70 A6 32 00 F0 A6 32 00 0A 0C 00 00 94 F0 9E 14
20: E4 C6 4A 15 9B 89 18 8C 25 00 43 44 2B 3B 17 5A
30: AE 8E 45 6D B1 58 55 CB A2 B4 37 62 00 00 02 00
40: B3 00 2A 61 22 09 7E F8 2B 59 27 F0 BE 49 87 E0

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word