Il developer Al Azif scende nuovamente in campo con lo sviluppo di diversi strumenti che permetteranno di decrittografare e crittografare vari file del firmware della PlayStation 4.
Con le chiavi appropriate, tutte ottenibili dalla console, sarà possibile decrittografare e crittografare correttamente diverse immagini binarie, come EAP KBL (caricatore di avvio del kernel), Kernel EAP, EMC IPL (caricamento iniziale del programma) e Syscon (sia patch che completo).
Read the readme for info. This is NOT CFW like the PS3 or like Ensō for the Vita (Yet, but who knows what may come because of the order stuff is loaded in). Everything here is/was documented publicly to some degree/necessary keys for some revisions of the PS4 are on the dev wiki.
— Al Azif (@_AlAzif) December 24, 2022
Il titolo potrebbe trarre in inganno, effettivamente questo non ha nulla a che fare con un Custom Firmware in quanto lamenta ancora la mancanza di alcune patch per permettere di eseguire codice personalizzato un po’ OVUNQUE.
Questo è ciò che manca ancora all’appello:
- SAMU IPL (crittografato con PCK all’interno di Sflash e firmato con chiavi private).
- Richiesto per CFW in stile PS3 in cui è sufficiente installare un PUP.
- Le chiavi private NON sono sulla console.
- Sette revisioni.
- SELF Files (crittografati e firmati con chiavi private).
- Non importa se SAMU IPL è rotto/personalizzato.
- Le chiavi private NON sono sulla console.
- WiFi FW (non crittografato o firmato. Uno di questi è impacchettato, è solo un ZIP).
- Tre revisioni.
- BD Drive FW (non l’ho guardato).
- Sei revisioni.
- USB SATA Bridge FW (non l’ho guardato).
- Una revisione.
- Processore di comunicazione FW (non l’ho guardato).
- Solo kit di sviluppo.
- Una revisione.
Requisiti
- Compilatore C++ (Clang >= 9.00 consigliato).
- CMake >=3.10.2.
- gflags.
- glog.
- OpenSSL (1.1.1 raccomandato).
- >=3.0.0 genererà avvisi per l’utilizzo di API di basso livello ammortizzato. Con i flag C++ inclusi, gli avvisi sono errori.
EAP
Sinossi
- Decrittografa/crittografa le immagini EAP KBL (Kernel Boot Loader). Situato in
/dev/sflash0s0x33
.
Utilizzo
Flag
-decrypt
(esegui in modalità decrittografia) tipo: bool default: false.
-encrypt
(esegui in modalità crittografia) tipo: bool default: false.
-input
(percorso del file EAP KBL da caricare) tipo: stringa default: “C0010001”.
-keys
(percorso del file chiave da caricare) tipo: stringa default: “keys.json”.
-output
(percorso in cui salvare il file EAP KBL di output) tipo: stringa default: “C0010001.modified”.
-revision
(quale keyset di revisione southbridge usare. Utilizzato solo per la crittografia (“AEOLIA”, “BELIZE”, “BELIZE 2” o “BAIKAL”)) tipo: string default: “”.
EAPK
Sinossi
- Decrittografa/crittografa le immagini del kernel EAP. Situato in
/dev/da0x2
.
Utilizzo
Flag
-decrypt
(esegui in modalità decrittografia) tipo: bool default: false.
-encrypt
(esegui in modalità crittografia) tipo: bool predefinito: false.
-input
(percorso del file del kernel EAP da caricare) digitare: stringa default: “eap_kernel”.
-keys
(percorso del file chiave da caricare) tipo: stringa default: “keys.json”.
-keyset
(quale set di chiavi usare. Utilizzato solo per la crittografia (“0”, “1”, “2” o “3”)) tipo: int32 predefinito: -1.
-output
(percorso in cui salvare il file del kernel EAP di output) tipo: stringa default: “eap_kernel.modified”.
EMC
Sinossi
- Decrittografa/crittografa le immagini EMC. Può applicare patch “Godmode” durante entrambe le operazioni. Situato in
/dev/sflash0s0x32b
.
Utilizzo
Flag
-decrypt
(esegui in modalità decrittografia) tipo: bool default: false.
-encrypt
(Esegui in modalità crittografia) tipo: bool default: false.
-godmode
(dovrebbero essere applicate le patch “Godmode”) tipo: bool default: false.
-input
(percorso del file EMC IPL da caricare) tipo: stringa default: “C0000001”.
-keys
(percorso del file chiave da caricare) tipo: stringa default: “keys.json”.
-output
(percorso in cui salvare il file EAP KBL di output) tipo: stringa default: “C0000001.modified”
-revision
(Quale keyset di revisione southbridge usare. Utilizzato solo per la crittografia (“AEOLIA”, “BELIZE”, “BELIZE 2” o “BAIKAL”)) tipo: stringa default: “”
Syscon
Sinossi
- Decrittografa/crittografa le immagini SYSCON. Inaccessibile dal filesystem.
Utilizzo
Flag
-decrypt
(esegui in modalità decrittografia) tipo: bool default: false.
-encrypt
(esegui in modalità crittografia) tipo: bool default: false.
-input
(percorso del file SYSCON da caricare) tipo: stringa default: “40000001”.
-keys
(percorso del file chiave da caricare) tipo: stringa default: “keys.json”.
-output
(percorso in cui salvare il file SYSCON di output) tipo: stringa default: “40000001.modified”.
Note
- Questo è testato su WSL con Clang 10 e OpenSSL 1.1.1, il supporto per qualsiasi altra cosa non è garantito.
- I file binari di output si troveranno in
bin/
. - Il file binario di input per la crittografia non esegue alcun controllo oltre al controllo per vedere se il file magic è corretto e la dimensione del file si adatta allo spazio libero disponibile una volta installato. È tua responsabilità assicurarti che il binario che stai alimentando sia costruito correttamente/valido.
- Questo viene rimosso da un progetto più ampio, quindi qualcosa potrebbe non funzionare da allora/essere ottimale in questo contesto, tuttavia dovrebbe funzionare come previsto. Ho fatto del mio meglio per minimizzarlo senza riscriverlo. Eventuali modifiche importanti alla funzionalità potrebbero non funzionare nel contesto del programma più ampio (o essere già state eseguite), quindi inviami un messaggio diretto prima di iniziare a lavorare su modifiche importanti.
- Alcune funzionalità sono state rimosse per non calpestare le dita dei piedi e probabilmente verranno aggiunte in un secondo momento. Nessun orario di arrivo previsto.
- Chiavi non incluse, controlla il wiki dev o qualcosa del genere. Questo è apposta … non inviarli per favore, aggiorna il wiki se ne aggiungi di nuovi.
- Assicurati di avere un modo per ripristinare da un backup se stai utilizzando hardware reale.
Download: Source code PS4 CFW Toolkit
Fonte: twitter.com