游戏存档: Difference between revisions
No edit summary |
No edit summary |
||
Line 14: | Line 14: | ||
'''使用新加密方式的游戏:''' | '''使用新加密方式的游戏(原文已无此段):''' | ||
* Super Mario 3D Land 《超级马里奥3D大陆》 | * Super Mario 3D Land 《超级马里奥3D大陆》 | ||
* Mario Kart 7 《马里奥赛车7》 | * Mario Kart 7 《马里奥赛车7》 | ||
Line 68: | Line 68: | ||
magic 是一个固定值 0x080d6ce0. | magic 是一个固定值 0x080d6ce0. | ||
blockmap/ | blockmap/journal入口的验校和是这样算出的: | ||
* 每个 byte 是一个 0x200 大小加密的块的验校和 | * 每个 byte 是一个 0x200 大小加密的块的验校和 | ||
* 计算一个块的CRC16 (从 0xFFFF 开始) ,两个byte的CRC16一起进行异或运算,以产生 8bit 校验和 | * 计算一个块的CRC16 (从 0xFFFF 开始) ,两个byte的CRC16一起进行异或运算,以产生 8bit 校验和 | ||
Line 77: | Line 77: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! Image偏移 | ||
! | ! 长度 | ||
! | ! 说明 | ||
|- | |- | ||
| 0x00 | | 0x00 | ||
| 0x10 | | 0x10 | ||
| [[AES]] MAC | | 通过 0x20-byte SHA256 hash的[[AES]]MAC | ||
|- | |- | ||
| 0x10 | | 0x10 | ||
| 0xF0 | | 0xF0 | ||
| | | 填充0 | ||
|} | |} | ||
这个AES MAC是用于"签名" DISA/DIFF header的. 每次更新游戏存档,存储在DISA/DIFF的hash都会更新.每次更改存档时,必然更新MAC. SHA256_Update()用于使用下面的加密方式计算这个 hash . | |||
==== Savegame Types ==== | ==== Savegame Types ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! 类型 | ||
! | ! 说明 | ||
|- | |- | ||
| CTR-EXT0 | | CTR-EXT0 | ||
Line 105: | Line 105: | ||
|- | |- | ||
| CTR-NOR0 | | CTR-NOR0 | ||
| | | 卡带游戏存档 | ||
|- | |- | ||
| CTR-SAV0 | | CTR-SAV0 | ||
| | | 游戏存档 | ||
|- | |- | ||
| CTR-SIGN | | CTR-SIGN | ||
| | | SD卡游戏存档 | ||
|- | |- | ||
| CTR-9DB0 | | CTR-9DB0 | ||
Line 120: | Line 120: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! 块的长度 | ||
! | ! 说明 | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| | | 游戏存档类型 | ||
|- | |- | ||
| 0x8 | | 0x8 |