Ostatnio aktywny 1 month ago

Pump It Up Fiesta 2 Save Decrypter/Encrypter

Rewizja e57a780b5ea1ed2bef1724ef4a53973992c9e671

tool.py Surowy
1import struct
2import zlib
3
4def decryptprofile(savedata,rankdata):
5
6 seed = 0xEBADA1
7 for i in range(0,len(savedata)):
8 smbuff = savedata[i]
9 savedata[i] ^= (seed >> 8) & 0xFF
10 seed = (0x68993 * (smbuff + seed) + 0x4FDCF) & 0xFFFFFFFF
11
12 seed = 0xEBADA1
13 for i in range(0,len(rankdata)):
14 smbuff = rankdata[i]
15 rankdata[i] ^= (seed >> 8) & 0xFF
16 seed = (0x68993 * (smbuff + seed) + 0x4FDCF) & 0xFFFFFFFF
17
18 return savedata,rankdata
19
20def encryptprofile(savedata,rankdata):
21 adlerseed = struct.unpack("<I",savedata[4:8])
22 newsaveadler = zlib.adler32(savedata[4:],adlerseed[0]) & 0xFFFFFFFF
23 newrankadler = zlib.adler32(rankdata[4:],adlerseed[0]) & 0xFFFFFFFF
24
25 #savedata[0:4] = struct.pack("<I",newsaveadler)
26 #rankdata[0:4] = struct.pack("<I",newrankadler)
27 savedata = struct.pack("<I",newsaveadler) + savedata[4:]
28 rankdata = struct.pack("<I",newrankadler) + rankdata[4:]
29
30 savedata = bytearray(savedata)
31 rankdata = bytearray(rankdata)
32
33 seed = 0xEBADA1
34 for i in range(0,len(savedata)):
35 smbuff = savedata[i] ^ (seed >> 8) & 0xFF
36 savedata[i] = smbuff
37 seed = (0x68993 * (smbuff + seed) + 0x4FDCF) & 0xFFFFFFFF
38
39 seed = 0xEBADA1
40
41 for i in range(0,len(rankdata)):
42 smbuff = rankdata[i] ^ (seed >> 8) & 0xFF
43 rankdata[i] = smbuff
44 seed = (0x68993 * (smbuff + seed) + 0x4FDCF) & 0xFFFFFFFF
45
46 return savedata,rankdata