Editing Activation ACF
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 1: | Line 1: | ||
ACF, certainly standing for Activation Code File, is a data structure present in the [[Serial Flash]] [[Non Volatile Storage]] of a PS4 Dev/Test Kit or prototype when it is activated. | ACF, certainly standing for Activation Code/Control/Console File/Flag, is a data structure present in the [[Serial Flash]] [[Non Volatile Storage]] of a PS4 Dev/Test Kit or prototype when it is activated. | ||
On PS Vita, compared to PS4, it is named "act" instead of "acf" and is stored in Syscon NVS instead of Serial Flash NVS. On PS5, Kit activation requires a [https://www.psdevwiki.com/ps5/CP_Box Communication Processor Box] and so may be contained in the [https://www.psdevwiki.com/ps5/CP_Box_Non_Volatile_Storage PS5 CP Box NVS]. | On PS Vita, compared to PS4, it is named "act" instead of "acf" and is stored in Syscon NVS instead of Serial Flash NVS. On PS5, Kit activation requires a [https://www.psdevwiki.com/ps5/CP_Box Communication Processor Box] and so may be contained in the [https://www.psdevwiki.com/ps5/CP_Box_Non_Volatile_Storage PS5 CP Box NVS]. | ||
Line 5: | Line 5: | ||
See also [https://wiki.henkaku.xyz/vita/AFV PS Vita Activation AFV especially its token] and [https://wiki.henkaku.xyz/vita/Ernie#NVS PS Vita Syscon NVS Activation Data]. | See also [https://wiki.henkaku.xyz/vita/AFV PS Vita Activation AFV especially its token] and [https://wiki.henkaku.xyz/vita/Ernie#NVS PS Vita Syscon NVS Activation Data]. | ||
The PS4 ACF is completed by a RSA | The PS4 ACF is completed by a RSA signature stored in a different area of the Serial Flash NVS. | ||
= Structure = | = Structure = | ||
Total length is 0x68 bytes. It may also be 0x6C bytes for some PS4 consoles, according to zecoxao. | Total length is 0x68 bytes. It may also be 0x6C bytes for some PS4 consoles, according to zecoxao. It is written to a 0x80-byte area in [[Serial Flash]] [[Non Volatile Storage]]. | ||
It is written to a 0x80-byte area in [[Serial Flash]] [[Non Volatile Storage]] | |||
{| class="wikitable" | {| class="wikitable" | ||
Line 21: | Line 17: | ||
| 0 || 4 || '''Magic'''. Always "acf\0" on PS4, "act\0" on PS Vita. | | 0 || 4 || '''Magic'''. Always "acf\0" on PS4, "act\0" on PS Vita. | ||
|- | |- | ||
| 4 || | | 4 || 4 || '''Format Version'''. Contains format_major_ver and format_minor_ver. Always 01 02 00 00 on PS4, 01 00 00 00 on PS Vita. | ||
|- | |- | ||
| 8 || 0x10 || '''Activation Key'''. Likely derived from OpenPsId. | | 8 || 0x10 || '''Activation Key'''. Likely derived from OpenPsId. | ||
Line 33: | Line 25: | ||
| 0x1C || 4 || '''Start Date'''. Little Endian. | | 0x1C || 4 || '''Start Date'''. Little Endian. | ||
|- | |- | ||
| 0x20 || 4 || ''' | | 0x20 || 4 || '''Expire Date'''. Little Endian. Usually 90 days since Start Date. | ||
|- | |- | ||
| 0x24 || 4 || '''Reserved'''. Always zeroed. | | 0x24 || 4 || '''Reserved'''. Always zeroed. | ||
Line 40: | Line 32: | ||
|} | |} | ||
< | <source lang="C"> | ||
typedef struct SceAcf { | typedef struct SceAcf { | ||
char magic[4]; | char magic[4]; | ||
uint32_t format_ver; | |||
char activation_key[16]; | char activation_key[16]; | ||
uint32_t issue_no; | uint32_t issue_no; | ||
uint32_t start_date; | uint32_t start_date; | ||
uint32_t | uint32_t expire_date; | ||
uint32_t reserved; | uint32_t reserved; | ||
char key_hash[64]; | char key_hash[64]; | ||
} SceAcf; | } SceAcf; | ||
</ | </source> | ||
= Example = | = Example = |