Difference between revisions of "Activation ACF"

From PS4 Developer wiki
Jump to: navigation, search
Line 9: Line 9:
 
! From !! To !! Description
 
! From !! To !! Description
 
|-
 
|-
| 1C9080 || 1C9083 || '''MAGIC''' acf
+
| 1C9080 || 1C9083 || '''Magic''' "ACF\0"
 
|-
 
|-
| 1C9084 || 1C9087 || '''Constant1''' Constant 4 bytes always the same. (format_ver, format_minor_ver inside)
+
| 1C9084 || 1C9087 || '''Format version''' Constant 4 bytes always the same. (format_ver, format_minor_ver inside)
 
|-
 
|-
 
| 1C9088 || 1C9097 || '''Activation Key'''  
 
| 1C9088 || 1C9097 || '''Activation Key'''  
 
|-
 
|-
| 1C9098 || 1C909B || '''Constant2''' Constant 4 bytes always the same.
+
| 1C9098 || 1C909B || '''Constant 0''' Constant 4 bytes always the same.
 
|-
 
|-
| 1C909C || 1C909F || '''Last start activation date''' 4 bytes. Little Endian.
+
| 1C909C || 1C909F || '''Start date''' 4 bytes. Little Endian.
 
|-
 
|-
| 1C90A0 || 1C90A3 || '''Last end activation date''' 4 bytes. Little Endian. Usually 90 days more than Last start activation date.
+
| 1C90A0 || 1C90A3 || '''Expire date''' 4 bytes. Little Endian. Usually 90 days more than Last start activation date.
 
|-
 
|-
| 1C90A4 || 1C90A7 || '''Const3''' Constant 4 bytes always the same.
+
| 1C90A4 || 1C90A7 || '''Constant 1''' Constant 4 bytes always the same.
 
|-
 
|-
 
| 1C90A8 || 1C90E7 || '''Key_Hash''' Unique 64 bytes.
 
| 1C90A8 || 1C90E7 || '''Key_Hash''' Unique 64 bytes.
Line 28: Line 28:
  
 
<source lang="C">
 
<source lang="C">
  typedef struct ACF {
+
  typedef struct SceAcf {
     const unsigned char MAGIC;
+
     char magic[4];
     const int32 CONST1;
+
     uint32_t format_ver;
     unsigned char BYTE16;
+
     char activation_key[16];
     const int32 CONST2;
+
     uint32_t const_0;
     unsigned char BYTE8;
+
     uint32_t start_date;
     const int32 CONST3;
+
    uint32_t expire_date;
     unsigned char BYTE64;
+
     uint32_t const_1;
  } ACF;
+
     char key_hash[64];
 +
  } SceAcf;
 
</source>
 
</source>
  

Revision as of 23:01, 21 August 2020

ACF is a data structure stored in PS4 Kit System Flash at offset 0x1C9080.

Structure

Total length is 0x68 bytes.

From To Description
1C9080 1C9083 Magic "ACF\0"
1C9084 1C9087 Format version Constant 4 bytes always the same. (format_ver, format_minor_ver inside)
1C9088 1C9097 Activation Key
1C9098 1C909B Constant 0 Constant 4 bytes always the same.
1C909C 1C909F Start date 4 bytes. Little Endian.
1C90A0 1C90A3 Expire date 4 bytes. Little Endian. Usually 90 days more than Last start activation date.
1C90A4 1C90A7 Constant 1 Constant 4 bytes always the same.
1C90A8 1C90E7 Key_Hash Unique 64 bytes.
 typedef struct SceAcf {
     char magic[4];
     uint32_t format_ver;
     char activation_key[16];
     uint32_t const_0;
     uint32_t start_date;
     uint32_t expire_date;
     uint32_t const_1;
     char key_hash[64];
 } SceAcf;

Example

Structure and constant bytes are for every Dev / Test the same. Example:

  • Magic bytes: red.
  • Constant bytes: blue.
  • Unique bytes: green.
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
001C9080  61 63 66 00 01 02 00 00 D6 B1 DA DE C7 82 7A A4 acf.....Ö±ÚÞÇ‚z¤
001C9090  21 AE 4E D0 D9 BF B1 1A 03 00 00 00 11 55 E2 52 !®NÐÙ¿±......UâR
001C90A0  11 FC 58 53 00 00 00 00 CC B4 CD 3A 0A F5 C0 F4 .üXS....Ì´Í:.õÀô
001C90B0  4F 04 6B C3 95 16 E6 D8 FB 0B F2 56 B0 3B BA 00 O.kÕ.æØû.òV°;º.
001C90C0  26 B0 D3 BA 55 5F B0 40 0F 54 34 22 E1 E4 DA A7 &°ÓºU_°@.T4"áäÚ§
001C90D0  D1 7D EE BC EF 03 3C 23 37 EE 10 EB F6 88 1B 85 Ñ}î¼ï.<#7î.ëöˆ.…
001C90E0  35 8F 4B F5 D5 1A C7 3D                         5.KõÕ.Ç=