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# | 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# | 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]. |