Home Homebrew LibProsperoPKG: La libreria .NET per creare, leggere e modificare pacchetti PKG PS5...

LibProsperoPKG: La libreria .NET per creare, leggere e modificare pacchetti PKG PS5 con supporto PFS, AES-XTS e PlayGo

242
0

LibProsperoPKG è una nuova libreria sviluppata da SvenGDK e realizzata interamente in C# per offrire agli sviluppatori un sistema completo dedicato alla creazione, all’analisi e alla modifica dei pacchetti PKG della PlayStation 5.

Progettata per funzionare con C# 14 e .NET 10, rappresenta una soluzione moderna che elimina la necessità di ricorrere a strumenti esterni da riga di comando, consentendo di gestire l’intero processo direttamente all’interno delle applicazioni .NET.

Uno degli aspetti più interessanti del progetto è la sua pipeline completamente integrata, che automatizza tutte le fasi necessarie alla generazione di un pacchetto PS5.

A partire da una cartella contenente i file dell’applicazione, la libreria si occupa della creazione del file system PFS interno, dell’applicazione della crittografia AES-XTS, della costruzione del PFS esterno, della generazione dei metadati del container e, infine, della produzione dell’immagine finale destinata alle console di sviluppo.

Tutto il processo viene eseguito in memoria, rendendo l’integrazione particolarmente semplice per chi sviluppa software in ambiente .NET.

LibProsperoPKG offre inoltre un ampio insieme di funzionalità dedicate alla gestione dei pacchetti PS5.

Permette infatti di creare diverse tipologie di PKG, come applicazioni e patch, integra un modello GP5 per la gestione dei progetti, include strumenti per leggere e modificare pacchetti già esistenti e genera automaticamente le immagini DDS in formato BC7 utilizzate per icone e risorse presenti nella cartella sce_sys grazie all’integrazione con Magick.NET.

La libreria supporta inoltre i formati PFS, PFSC e PlayGo, implementa la firma RSA-3072 dei metadati e offre una gestione completa delle chiavi Prospero, mettendo a disposizione un’API chiara e ben documentata che può essere facilmente integrata in strumenti personalizzati.

L’utilizzo risulta piuttosto semplice: è sufficiente definire le opzioni di compilazione, specificando informazioni come la cartella sorgente, la destinazione del pacchetto, il Content ID, il Title ID, il nome dell’applicazione e la versione, lasciando poi alla libreria il compito di eseguire automaticamente l’intero processo di costruzione.

Oltre alla creazione dei pacchetti, è disponibile anche un lettore dedicato che consente di aprire e analizzare PKG già esistenti.

Il progetto è attualmente in fase di sviluppo attivo e viene considerato un work in progress, anche se ha già raggiunto un livello di maturità notevole.

I pacchetti prodotti risultano coerenti e correttamente firmati, ma alcune componenti dell’immagine finale, come la digest table e l’install-metadata archive, vengono ancora generate con un approccio definito “best-effort”.

Al momento la libreria è pensata principalmente per console PS5 in modalità debug, dove i controlli risultano meno restrittivi, mentre il funzionamento sulle console retail resta comunque limitato dalle protezioni hardware della piattaforma.

La documentazione inclusa nel progetto rappresenta uno dei suoi punti di forza. All’interno della cartella dedicata sono disponibili approfondimenti sullo stato di implementazione, una descrizione tecnica del formato PKG della PlayStation 5, la documentazione completa delle API e numerosi dettagli utili per comprendere il funzionamento interno della libreria.

In evidenza

  • Pipeline completamente integrata. Cartella → layout PFS interno → crittografia AES-XTS → PFS esterno → container dei metadati \x7FCNT → immagine di debug \x7FFIH finalizzata, dall’inizio alla fine.
  • Completamente autonoma. Il modello di progetto GP5, il generatore delle immagini PFS, la crittografia AES-XTS, la firma RSA-3072 dei metadati e la generazione dell’immagine di debug finale vengono gestiti interamente dalla libreria.
  • Lettura e scrittura. Consente di analizzare, ispezionare e modificare pacchetti PS5 esistenti (\x7FCNT / \x7FFIH), oltre a crearne di nuovi.
  • Generazione delle texture. Il ricodificatore delle immagini DDS (BC7) utilizzate per icone e immagini nella cartella sce_sys si basa su Magick.NET.

Requisiti

Componente Requisito
Toolchain .NET 10 SDK o versione successiva
Linguaggio C# 14
Dipendenza NuGet Magick.NET-Q8-AnyCPU

Compilazione

cd LibProsperoPKG/src/LibProsperoPkg
dotnet build -c Release

Questo comando genera il file LibProsperoPkg.dll.

Per creare un pacchetto NuGet: dotnet pack -c Release

Guida rapida

Aggiungere un riferimento al progetto (oppure al file LibProsperoPkg.dll compilato o al pacchetto NuGet) e creare un pacchetto partendo da una cartella dell’applicazione già preparata:

C#

using LibProsperoPkg;

var options = new ProsperoBuildOptions
{
    Mode         = ProsperoPackageMode.Application,
    OutputFormat = ProsperoOutputFormat.DebugImage,   // Installabile su console in modalità debug
    SourceFolder = @"/path/to/prepared/app",          // Deve contenere la cartella sce_sys/
    OutputFolder = @"/path/to/output",
    ContentId    = "UP9000-PPSA00000_00-PROSPERO00000000",
    TitleId      = "PPSA00000",
    Title        = "My PS5 Application",
    Version      = "01.00",
};

ProsperoBuildResult result = ProsperoPackageBuilder.Build(options, Console.WriteLine);

Console.WriteLine($"Pacchetto creato in: {result.OutputPath}");
foreach (var warning in result.Warnings)
    Console.WriteLine($"Avviso: {warning}");

Analisi di un pacchetto esistente

C#

using LibProsperoPkg.PKG;

ProsperoPkg pkg = ProsperoPkgReader.Read(@"/path/to/some.pkg");
Console.WriteLine($"Tipo:       {pkg.Type}");
Console.WriteLine($"Content ID: {pkg.Header.ContentId}");
Console.WriteLine($"Elementi:   {pkg.Entries.Count}");

API pubbliche in sintesi

Namespace Tipi principali
LibProsperoPkg ProsperoPackageBuilder, ProsperoBuildOptions, ProsperoBuildResult, ProsperoPackageMode, ProsperoOutputFormat, InnerImageForm
LibProsperoPkg.PKG ProsperoPkgBuilder, ProsperoPkgReader, ProsperoPkgWriter, ProsperoFihBuilder, ProsperoPkgSigner, ProsperoDdsEncoder, ProsperoPkg, ProsperoPkgHeader
LibProsperoPkg.PFS ProsperoPfsLayout, ProsperoPfsImage, ProsperoPfsc
LibProsperoPkg.GP5 Gp5Creator, Gp5Project e relativo modello degli elementi.
LibProsperoPkg.Keys ProsperoKeys
LibProsperoPkg.PlayGo ProsperoPlayGo

Per informazioni più approfondite sullo stato delle funzionalità e sulla documentazione tecnica del formato PKG per PS5, consultare la cartella docs/.

Documentazione

Limitazioni

LibProsperoPkg genera un pacchetto completo e coerente, la cui struttura e il contenitore dei metadati possono essere letti e ricostruiti correttamente tramite il lettore integrato.

Tuttavia, due componenti dell’immagine finale dipendono da informazioni generate direttamente dalla console e vengono quindi ricreate con un approccio best effort anziché essere riprodotte in modo identico: la tabella dei digest dell’immagine finale e l’archivio dei metadati di installazione presente nella parte conclusiva del pacchetto.

La libreria è pensata principalmente per console in modalità debug, dove i controlli sull’immagine finale risultano meno restrittivi. L’accettazione del pacchetto sulla console rimane comunque vincolata all’hardware.

Per maggiori dettagli è possibile consultare docs/implementation-status.md.

Download: Source code LibProsperoPKG

Alcune parti di questo articolo sono state generate con l’aiuto dell’intelligenza artificiale.

🔥 Prodotti in promozione e articoli più venduti: PS5

Vedi altri prodotti PS5

Questo articolo contiene link affiliati a Amazon. Se acquisti tramite questi link, potrei guadagnare una commissione senza costi aggiuntivi per te.

Ultimo aggiornamento 2026-08-10 / Link di affiliazione / Immagini da Amazon Product Advertising API

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui
Captcha verification failed!
Punteggio utente captcha non riuscito. Ci contatti per favore!

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.