offsets.txt
· 3.7 KiB · Text
Sin formato
#Name # offset length datatype
adler32 # 0x00 0x04 LE int
adlerSeed # 0x04 0x04 LE int
playerID # 0x08 0x08 string (null term)
region # 0x14 0x04 LE int
avatarID # 0x18 0x04 LE int
level # 0x1C 0x04 LE int
totalCalories # 0x20 0x04 LE float
totalV02 # 0x24 0x04 LE float
numberRunningSteps # 0x28 0x08 LE int64
numberGamesPlayed # 0x30 0x08 LE int64
exp # 0x38 0x08 LE int64
arcadeScore # 0x40 0x08 LE int64
numberMissionsCompleted # 0x48 0x04 LE int
numberCoopMissionsCompleted # 0x4C 0x04 LE int
battleCountWins # 0x50 0x04 LE int
battleCountLoses # 0x54 0x04 LE int
battleCountDraws # 0x58 0x04 LE int
versionString # 0x120 0x08 string (null term)
cpuString # 0x128 0x80 string (null term)
motherboardString # 0x1A8 0x80 string (null term)
gfxcardString # 0x228 0x80 string (null term)
hddString # 0x2A8 0x20 string (null term)
totalRamBytes # 0x2C8 0x04 LE int
haspkeyID # 0x2CC 0x04 LE int
machineStatsBeginnerModePlayCount # 0x2D0 0x04 LE int
machineStatsManiacModePlayCount # 0x2D4 0x04 LE int
machineStatsUnknown # 0x2D8 0x04 LE int
machineStatsUnknown2 # 0x2DC 0x04 LE int
machineStatsBattleModePlayCount # 0x2E0 0x04 LE int
machineStatsMissionZonePlayCount # 0x2E4 0x04 LE int
machineStatsSkillZonePlayCount # 0x2E8 0x04 LE int
machineStatsCoopMissionPlayCount # 0x2EC 0x04 LE int
# Machine HighScore Struct (The array starts at 0x2F0)
songID # 0x00 0x04 LE hex
difficulty # 0x04 0x01 byte
mode # 0x05 0x01 byte
grade # 0x06 0x01 byte
clearState # 0x07 0x01 byte
scoreTotal # 0x08 0x04 LE int
playCountTotal # 0x0C 0x04 LE int
unknown # 0x10 0x04 LE int
playerID # 0x14 0x08 string (null term)
unknown2 # 0x1C 0x04 LE int
nullPadding # 0x20 0x04 LE int
# Personal HighScore Struct (The array starts at 0x25970)
songID # 0x00 0x04 LE hex
difficulty # 0x04 0x01 byte
mode # 0x05 0x01 byte
grade # 0x06 0x01 byte
clearAndUnlockedState # 0x07 0x01 byte
scoreTotal # 0x08 0x04 LE int
playCountTotal # 0x0C 0x04 LE int
nullPadding # 0x10 0x04 LE int
| 1 | #Name # offset length datatype |
| 2 | adler32 # 0x00 0x04 LE int |
| 3 | adlerSeed # 0x04 0x04 LE int |
| 4 | playerID # 0x08 0x08 string (null term) |
| 5 | region # 0x14 0x04 LE int |
| 6 | avatarID # 0x18 0x04 LE int |
| 7 | level # 0x1C 0x04 LE int |
| 8 | totalCalories # 0x20 0x04 LE float |
| 9 | totalV02 # 0x24 0x04 LE float |
| 10 | numberRunningSteps # 0x28 0x08 LE int64 |
| 11 | numberGamesPlayed # 0x30 0x08 LE int64 |
| 12 | exp # 0x38 0x08 LE int64 |
| 13 | arcadeScore # 0x40 0x08 LE int64 |
| 14 | numberMissionsCompleted # 0x48 0x04 LE int |
| 15 | numberCoopMissionsCompleted # 0x4C 0x04 LE int |
| 16 | battleCountWins # 0x50 0x04 LE int |
| 17 | battleCountLoses # 0x54 0x04 LE int |
| 18 | battleCountDraws # 0x58 0x04 LE int |
| 19 | |
| 20 | versionString # 0x120 0x08 string (null term) |
| 21 | cpuString # 0x128 0x80 string (null term) |
| 22 | motherboardString # 0x1A8 0x80 string (null term) |
| 23 | gfxcardString # 0x228 0x80 string (null term) |
| 24 | hddString # 0x2A8 0x20 string (null term) |
| 25 | totalRamBytes # 0x2C8 0x04 LE int |
| 26 | haspkeyID # 0x2CC 0x04 LE int |
| 27 | machineStatsBeginnerModePlayCount # 0x2D0 0x04 LE int |
| 28 | machineStatsManiacModePlayCount # 0x2D4 0x04 LE int |
| 29 | machineStatsUnknown # 0x2D8 0x04 LE int |
| 30 | machineStatsUnknown2 # 0x2DC 0x04 LE int |
| 31 | machineStatsBattleModePlayCount # 0x2E0 0x04 LE int |
| 32 | machineStatsMissionZonePlayCount # 0x2E4 0x04 LE int |
| 33 | machineStatsSkillZonePlayCount # 0x2E8 0x04 LE int |
| 34 | machineStatsCoopMissionPlayCount # 0x2EC 0x04 LE int |
| 35 | |
| 36 | |
| 37 | # Machine HighScore Struct (The array starts at 0x2F0) |
| 38 | songID # 0x00 0x04 LE hex |
| 39 | difficulty # 0x04 0x01 byte |
| 40 | mode # 0x05 0x01 byte |
| 41 | grade # 0x06 0x01 byte |
| 42 | clearState # 0x07 0x01 byte |
| 43 | scoreTotal # 0x08 0x04 LE int |
| 44 | playCountTotal # 0x0C 0x04 LE int |
| 45 | unknown # 0x10 0x04 LE int |
| 46 | playerID # 0x14 0x08 string (null term) |
| 47 | unknown2 # 0x1C 0x04 LE int |
| 48 | nullPadding # 0x20 0x04 LE int |
| 49 | |
| 50 | # Personal HighScore Struct (The array starts at 0x25970) |
| 51 | songID # 0x00 0x04 LE hex |
| 52 | difficulty # 0x04 0x01 byte |
| 53 | mode # 0x05 0x01 byte |
| 54 | grade # 0x06 0x01 byte |
| 55 | clearAndUnlockedState # 0x07 0x01 byte |
| 56 | scoreTotal # 0x08 0x04 LE int |
| 57 | playCountTotal # 0x0C 0x04 LE int |
| 58 | nullPadding # 0x10 0x04 LE int |
| 59 |
tool.py
· 1.5 KiB · Python
Sin formato
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 |