tool.py
· 1.5 KiB · Python
Raw
import struct
import zlib
def decryptprofile(savedata,rankdata):
seed = 0xEBADA1
for i in range(0,len(savedata)):
smbuff = savedata[i]
savedata[i] ^= (seed >> 8) & 0xFF
seed = (0x68993 * (smbuff + seed) + 0x4FDCF) & 0xFFFFFFFF
seed = 0xEBADA1
for i in range(0,len(rankdata)):
smbuff = rankdata[i]
rankdata[i] ^= (seed >> 8) & 0xFF
seed = (0x68993 * (smbuff + seed) + 0x4FDCF) & 0xFFFFFFFF
return savedata,rankdata
def encryptprofile(savedata,rankdata):
adlerseed = struct.unpack("<I",savedata[4:8])
newsaveadler = zlib.adler32(savedata[4:],adlerseed[0]) & 0xFFFFFFFF
newrankadler = zlib.adler32(rankdata[4:],adlerseed[0]) & 0xFFFFFFFF
#savedata[0:4] = struct.pack("<I",newsaveadler)
#rankdata[0:4] = struct.pack("<I",newrankadler)
savedata = struct.pack("<I",newsaveadler) + savedata[4:]
rankdata = struct.pack("<I",newrankadler) + rankdata[4:]
savedata = bytearray(savedata)
rankdata = bytearray(rankdata)
seed = 0xEBADA1
for i in range(0,len(savedata)):
smbuff = savedata[i] ^ (seed >> 8) & 0xFF
savedata[i] = smbuff
seed = (0x68993 * (smbuff + seed) + 0x4FDCF) & 0xFFFFFFFF
seed = 0xEBADA1
for i in range(0,len(rankdata)):
smbuff = rankdata[i] ^ (seed >> 8) & 0xFF
rankdata[i] = smbuff
seed = (0x68993 * (smbuff + seed) + 0x4FDCF) & 0xFFFFFFFF
return savedata,rankdata
| 1 | import struct |
| 2 | import zlib |
| 3 | |
| 4 | def 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 | |
| 20 | def 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 |