Changes

46 bytes removed ,  11:26, 5 May 2013
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/journal入口的验校和是这样工作的:
+
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 offset
+
! Image偏移
! Length
+
! 长度
! Description
+
! 说明
 
|-
 
|-
 
| 0x00
 
| 0x00
 
| 0x10
 
| 0x10
| [[AES]] MAC over a 0x20-byte SHA256 hash
+
| 通过 0x20-byte SHA256 hash的[[AES]]MAC
 
|-
 
|-
 
| 0x10
 
| 0x10
 
| 0xF0
 
| 0xF0
| Zero padding
+
| 填充0
 
|}
 
|}
   −
This AES MAC is used to "sign" the DISA/DIFF header. Each time the savegame is updated the hash stored in the DISA/DIFF is updated, therefore the MAC must be updated each time the save is modified as well. SHA256_Update() is used to calculate the hash with the blocks described below.
+
这个AES MAC是用于"签名" DISA/DIFF header的. 每次更新游戏存档,存储在DISA/DIFF的hash都会更新.每次更改存档时,必然更新MAC. SHA256_Update()用于使用下面的加密方式计算这个 hash .
    
==== Savegame Types ====
 
==== Savegame Types ====
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Type
+
! 类型
! Description
+
! 说明
 
|-
 
|-
 
| CTR-EXT0
 
| CTR-EXT0
Line 105: Line 105:  
|-
 
|-
 
| CTR-NOR0
 
| CTR-NOR0
| Gamecard Savegames
+
| 卡带游戏存档
 
|-
 
|-
 
| CTR-SAV0
 
| CTR-SAV0
| Savegames
+
| 游戏存档
 
|-
 
|-
 
| CTR-SIGN
 
| CTR-SIGN
| SD Savegames
+
| SD卡游戏存档
 
|-
 
|-
 
| CTR-9DB0
 
| CTR-9DB0
Line 120: Line 120:  
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Block Size
+
! 块的长度
! Description
+
! 说明
 
|-
 
|-
 
| 0x8
 
| 0x8
| Savegame type
+
| 游戏存档类型
 
|-
 
|-
 
| 0x8
 
| 0x8
155

edits