System Transfer: Difference between revisions

TimmSkiller (talk | contribs)
No edit summary
TimmSkiller (talk | contribs)
 
Line 134: Line 134:
See also [http://www.nintendo.com/consumer/systems/3ds/en_na/gi_index.jsp?menu=transfer&submenu=ctr-gi-apps-transfer-what-data 3DS System transfer ]
See also [http://www.nintendo.com/consumer/systems/3ds/en_na/gi_index.jsp?menu=transfer&submenu=ctr-gi-apps-transfer-what-data 3DS System transfer ]


==System Save Data Transfer==
==System Save Data / Shared Extdata Transfer==
During a system transfer, the source system transfers raw ([[DISA_and_DIFF|DISA]]) [[System_SaveData|System Save Data]] images (AES-128-CTR encrypted) to the destination system.  
During a system transfer, the source system transfers raw ([[DISA_and_DIFF|DISA/DIFF]]) [[System_SaveData|System Save Data]] and possible [[Extdata#NAND_Shared_Extdata|Shared NAND Extdata]] images (AES-128-CTR encrypted) to the destination system.  


It appears that both the save data for the [[NIM_Services|nim]] sysmodule and the [[Config_Savegame|Configuration Savegame]] are skipped during this process.
It appears that both the save data for the [[NIM_Services|nim]] sysmodule and the [[Config_Savegame|Configuration Savegame]] are skipped during this process.
Line 143: Line 143:
It then uses [[FS:EnumerateSystemSaveData]] to obtain a list of system save data IDs.
It then uses [[FS:EnumerateSystemSaveData]] to obtain a list of system save data IDs.


The source system then creates the encrypted, raw system save data dumps using [[Filesystem_services#0x12345681_Archive_Path_Data_Format|archive ID 0x12345681]].
The source system then creates the encrypted, raw system save data / extdata dumps using [[Filesystem_services#SystemSaveData|System Savedata Transfer]] / [[Filesystem_services#Filesystem_services#Extdata_/_Shared_Extdata|Extdata Transfer / Shared Extdata Transfer]].


The following encryption is used for these dumps:
The following encryption is used for these dumps:
Line 151: Line 151:
- For the CTR, first, the random 16 bytes from the [[Filesystem_services#DeviceMoveContext|Device Move Context]] are hashed with SHA256.
- For the CTR, first, the random 16 bytes from the [[Filesystem_services#DeviceMoveContext|Device Move Context]] are hashed with SHA256.


- The SHA256 hash is updated using the UTF-16 path for the save data file (relative to <code>nand:/data/<ID0></code>), beginning with a </code>/</code> (and including a two-byte NULL termination). Therefore the path would be UTF-16 <code>/sysdata/<lowercase, 8 character hex system save id>/00000000</code> and two additional NULL bytes.
- The SHA256 hash is updated using the UTF-16 path for the save data file (relative to <code>nand:/data/<ID0></code>), beginning with a </code>/</code> (and including a two-byte NULL termination).
 
Therefore the path would be UTF-16 <code>/sysdata/<lowercase, 8 character hex system save id>/00000000</code> and two additional NULL bytes.
 
For Shared Extdata, the path would similarly be <code>/extdata/<shared ext id low>/<shared ext id high>/<file path></code> and two additional NULL bytes.


- The CTR is generated as follows: <code>ctr[i] = hash[i] ^ hash[i + 16]</code> for i from 0 to 16.
- The CTR is generated as follows: <code>ctr[i] = hash[i] ^ hash[i + 16]</code> for i from 0 to 16.
Line 159: Line 163:
On the destination system, [[FS:StartDeviceMoveAsDestination]] is called using the [[Filesystem_services#DeviceMoveContext|Device Move Context]] from the source console.
On the destination system, [[FS:StartDeviceMoveAsDestination]] is called using the [[Filesystem_services#DeviceMoveContext|Device Move Context]] from the source console.


Similarly, [[Filesystem_services#0x12345681_Archive_Path_Data_Format|archive ID 0x12345681]] is used to import the raw save images, though on the destination system, in write mode.  
Similarly, [[Filesystem_services#SystemSaveData|System Savedata Transfer]] / [[Filesystem_services#Filesystem_services#Extdata_/_Shared_Extdata|Extdata Transfer / Shared Extdata Transfer]]  is used to import the raw save images, though on the destination system, in the destination mode.  


The encrypted save images are written directly to the destination system using the FS interface (and decrypted on the fly).
The encrypted save images are written directly to the destination system using the FS interface (and decrypted on the fly).


= See also =
= See also =
Nintendo of Japan System Transfer [http://www.nintendo.co.jp/3ds/support/transfer/index.html page].
Nintendo of Japan System Transfer [http://www.nintendo.co.jp/3ds/support/transfer/index.html page].