Editing Activation File
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 7: | Line 7: | ||
=== File Verification === | === File Verification === | ||
A HMACSHA256 of the entire act.dat file using the SHA256 of the OpenPsId as the key is stored in Vtrm using SceShellCore's | A HMACSHA256 of the entire act.dat file using the SHA256 of the OpenPsId as the key is stored in Vtrm using SceShellCore's process ID in slot 0. | ||
SceShellCore's process ID is <code>0x3800000000000010</code>. | |||
<code>hmacsha256(sha256(sceKernelGetOpenPsIdForSystem()), act.dat)</code> (pseudo-code) | <code>hmacsha256(sha256(sceKernelGetOpenPsIdForSystem()), act.dat)</code> (pseudo-code) | ||
Line 19: | Line 21: | ||
This prevents easily adding or replacing the act.dat file directly. You will need to update this HMAC to prevent the act.dat file from being deleted when adding or replacing it. | This prevents easily adding or replacing the act.dat file directly. You will need to update this HMAC to prevent the act.dat file from being deleted when adding or replacing it. | ||
== File == | == File Structure == | ||
An act.dat file is made up of 1 to 21 sequential activation structures. | An act.dat file is made up of 1 to 21 sequential activation structures. | ||
Line 25: | Line 27: | ||
The file is truncated to valid activation structures, so its size will be a multiple of 512. | The file is truncated to valid activation structures, so its size will be a multiple of 512. | ||
=== Activation | === Activation Structure === | ||
Fields are big-endian. | Fields are big-endian. | ||
Line 38: | Line 40: | ||
| Signature || <code>0x000</code> || 4 || <code>41 43 54 00</code> ('ACT\0') | | Signature || <code>0x000</code> || 4 || <code>41 43 54 00</code> ('ACT\0') | ||
|- | |- | ||
| Version || <code>0x004</code> || 2 || <code>00 01</code> || 1 | | Version || <code>0x004</code> || 2 || <code>00 00 00 01</code> || 1 (current) | ||
|- | |- | ||
| Type || <code>0x006</code> || 2 || <code>00 02</code> || 2 or 3 | | Type || <code>0x006</code> || 2 || <code>00 00 00 02</code> || 2 or 3 | ||
|- | |- | ||
| PSN Account ID || <code>0x008</code> || 8 || <code>AB CD EF 01 02 34 78 91</code> || | | PSN Account ID || <code>0x008</code> || 8 || <code>AB CD EF 01 02 34 78 91</code> || | ||
Line 50: | Line 52: | ||
| Unknown || <code>0x020</code> || 64 || - || | | Unknown || <code>0x020</code> || 64 || - || | ||
|- | |- | ||
| | | OpenPsId SHA256 Hash || <code>0x060</code> || 32 || - || <code>sha256(sceKernelGetOpenPsIdForSystem())</code> (pseudo-code) | ||
|- | |- | ||
| Unknown || <code>0x080</code> || 32 || - || Found to match exactly for different users and consoles. Maybe system version SHA256 hash? | | Unknown || <code>0x080</code> || 32 || - || Found to match exactly for different users and consoles. Maybe system version SHA256 hash? | ||
|- | |- | ||
| | | Unknown || <code>0x0A0</code> || 16 || - || Match exactly to data found in RIF data at 0x260 of same size (KDS RIF only) | ||
|- | |- | ||
| | | Unknown || <code>0x0B0</code> || 16 || - || Used to decrypt RIF secret data (KDS RIF only) | ||
|- | |- | ||
| Unknown || <code> | | Unknown || <code>0x0C0</code> || 64 || - || | ||
|- | |- | ||
| RSA Signature || <code>0x100</code> || 256 || - || Verified using same public key as RIF type 0 | | RSA Signature || <code>0x100</code> || 256 || - || Verified using same public key as RIF type 0 |