PARAM.PFD
Description
This file is responsible to prevent modification of other files, the only purpose is the security of the folder contents
Contains the cryptographic signatures of other files of the same folder (not all. but the ones that developers decided to be important enought to be secured).
Its used in several folders of the PS3, usually to controll data related with the user profile:
/dev_hdd0/home/0000000*/savedata/SAVEDATA_DIRECTORY/PARAM.PFD <---- in all save game folders /dev_hdd0/home/0000000*/trophy/NPCOMMID/PARAM.PFD <--- in all trohpye folders /dev_hdd0/home/0000000*/trophy/_TROPSYS_/PARAM.PFD <---- in the trophy "index" folder
Usually PARAM.SFO is one of the entryes in the list of files controlled by PARAM.PFD but this can vary
e.g. the folder _TROPSYS_ only contains 2 files: TROPSYS.DAT & PARAM.PFD (TROPSYS.DAT is the trophy index, and PARAM.PFD secures it)
Every time one of the files listed inside the .PFD is updated... the .PFD itself needs to be updated to store the new signatures of the files that have changed (e.g. when you update a savegame there is some text that changes inside PARAM.SFO with your current game time, status, level, etc..., or when you install new trophyes from a new game the TROPSYS.DAT "index" needs to be updated to list the new trophy installation as valid in the XMB, or when you unlock a new trophye the file TROPUSR.DAT is updated with this data)
More info on other related file formats: PARAM.SFO Game Saves Trophy files.
Structure
File size seems to be fixed at 0x8000 bytes
This is because the number of entryes seems to be always 60 (when the entry is not used his position is reserved but marked as blank)
Header (from 0x0 to 0x68)
Offset | Size | Description | Value |
---|---|---|---|
0x00 | 4 bytes | Nothing | 00 00 00 00 ¿why this padding? |
0x04 | 4 bytes | Magic value | "PFDB" in ASCII |
0x08 | 8 bytes | Unknown | 00 00 00 00 00 00 00 03 ¿file type? |
0x10 | 80 bytes | Public key | Method unknown |
0x60 | 08 bytes | Unknown | 00 00 00 00 00 00 00 39 ¿mark of the header end? |
Index table (from 0x68 to 0x240)
Table consisting of 60 entryes, each with a lenght of 8byte-words The used entryes seems to be randomly placed in the table
Some common entryes | Description |
---|---|
00 00 00 00 00 00 00 72 | no entry (not used or blank) |
00 00 00 00 00 00 00 01 | entry nº 1 |
00 00 00 00 00 00 00 02 | entry nº 2 |
00 00 00 00 00 00 00 03 | entry nº 3 |
00 00 00 00 00 00 00 00 | weird value at the end of the file ? |
Data table (from 0x240 to 0x4200?)
Each entry 272 bytes lenght:
Lenght | Description | Notes |
---|---|---|
8 bytes | table-entry mark | 00 00 00 00 00 00 00 72 |
64 bytes | filename | null-terminated |
¿8 bytes? | unknown | ¿¿first byte zero, 2 bytes vary, third byte fixed?? |
188 bytes | certificate | null-terminated (when PARAM.SFO is the file then it stores 2 values) |
4 bytes | file size |
Weird repeating pattern on file-end (from 0x7B60 to 0x7FD4)
20-byte pattern on file-end (some kind of sha-1 hash??)
The weird repeating pattern 60 x 12 bytes so an entry for each potential file with the blank entry (I.E. no file) being represented by the repeating byte pattern.
Cryptography
Unknown