xvdtool è una semplice utility a riga di comando per la manipolazione dei pacchetti XVD/XVC della console Xbox One. Lo strumento ci permette di stampare sullo schermo informazioni dettagliate sulle intestazioni dei pacchetti, resign, rehash, en/decrypt e verificare l’integrità dei dati di un pacchetto.
L’applicazione ci permette di convertire anche i file XVD decrittografati in VHD o estrarre il filesystem stesso. Attualmente è stato testato solo con pacchetti dev-crypted (che utilizzano una chiave di distribuzione offline (ODK) a 256 bit diversa rispetto ai pacchetti al dettaglio), poiché la chiave di vendita al dettaglio è ancora sconosciuta.
Questo attualmente rende lo strumento inutile per il 90% delle persone, ma non per gli sviluppatori che possono esaminare il funzionamento dei file XVD e per cercare una mappatura dettagliata delle strutture XVD con metodi quasi completi per manipolarli.
Tuttavia, con questo strumento non vengono fornite chiavi di crittografia, questo significa che dovrete trovarle da soli. Gli hash per le chiavi dev sono forniti di seguito.
Se avete installato un kit di sviluppo per Xbox One o un framework GamingServices (esclusivo per Windows 10), potrete fare uso di DurangoKeyExtractor per estrarre le chiavi da lì.
Il programma include anche uno strumento per estrarre file dall’XBFS (Xbox Boot File System) all’interno della NAND Xbox One, basato sul lavoro originale di Tuxuser NANDOne con alcune piccole aggiunte. Grazie Kebob
per aver fornito OpenXvd.
Requisiti
Guida
Per decifrare pacchetti non XVC avrete bisogno dell’ODK corretto. Il devkit ODK è “ampiamente conosciuto” e gli hash sono forniti di seguito, ma come menzionato sopra la chiave di vendita al momento è sconosciuta.
La decrittografia dei pacchetti XVC è una questione diversa, i pacchetti XVC utilizzano una Content Instance Key (CIK) che sembra essere archiviata da qualche parte al di fuori del pacchetto, tuttavia dove e come è archiviato è attualmente sconosciuto. Se hai il CIK deoffuscato corretto per un determinato pacchetto dovresti essere in grado di usarlo per decrittografare il pacchetto.
I pacchetti XVC firmati da Devkit/test utilizzano una CIK statica che è anche “ampiamente conosciuta” (Hash fornito di seguito).
File richiesti
Per sfruttare appieno questo strumento avrete bisogno dei seguenti file, che non sono inclusi. Lo strumento funzionerà bene senza di loro, ma alcune funzioni potrebbero non funzionare.
Da qui è possibile utilizzare lo strumento incluso “DurangoKeyExtractor” per estrarre queste chiavi dal framework Microsoft.GamingServices
disponibile su Windows 10. Basta controllare alcuni file DLL/SYS/EXE – potresti trovarli.
33ec8436-5a0e-4f0d-b1ce-3f29c3955039.cik
: Chiavi CIK per crypto XVC. La prima voce dovrebbe essere la chiave utilizzata dagli strumenti SDK/devkits. Formato:[16 byte encryption key GUID][32 byte CIK]
MD5: C9E58F4E1DC611E110A849648DADCC9B
SHA256: 855CCA97C85558AE8E5FF87D8EEDB44AE6B8510601EB71423178B80EF1A7FF7F
RedOdk.odk
: Chiave ODK utilizzata da strumenti SDK/devkits. Formato:[32 byte ODK]
MD5: A2BCFA87F6F83A560BD5739586A5D516
SHA256: CA37132DFB4B811506AE4DC45F45970FED8FE5E58C1BACB259F1B96145B0EBC6
RedXvdPrivateKey.rsa
: Chiave RSA privata utilizzata dagli strumenti SDK per verificare/firmare i pacchetti. Formato:RSAFULLPRIVATEBLOB struct
MD5: 2DC371F46B67E29FFCC514C5B134BF73
SHA256: 8E2B60377006D87EE850334C42FC200081386A838C65D96D1EA52032AA9628C5
Per altre chiavi note e relativi hash utilizzare l’opzione dal prompt dei comandi -listkeys
. Per scegliere una chiave specifica, utilizzare le seguenti opzioni di cmdline:
-sk (-signkey) <key-name>
– Nome della chiave del segno xvd da utilizzare.
-odk (-odkid) <id>
– Id della chiave di distribuzione offline da utilizzare (uint).
-cik (-cikguid) <GUID>
– Guida della chiave dell’istanza di contenuto da utilizzare.
Possibili posizioni per memorizzare le chiavi
XVDTool creerà le cartelle di configurazione/chiavi al primo avvio: globale e locale per l’app.
Cartella di configurazione globale:
- Windows:
C:\Users\<username>\AppData\Local\xvdtool
- Linux:
/home/<username>/.config/xvdtool
- Mac OS X:
/Users/<username>/.config/xvdtool
La cartella di configurazione locale è la directory corrente dell’eseguibile. All’interno di queste cartelle è possibile memorizzare le chiavi per il caricamento automatico.
- Chiavi di firma Xvd:
<config dir>/XvdSigningKey/
- Chiavi dell’istanza di contenuto:
<config dir>/Cik/
- Chiavi di distribuzione offline:
<config dir>/Odk/
Inoltre, puoi fornire chiavi da posizioni arbitrarie del filesystem tramite le rispettive opzioni nel prompt dei comandi: -signfile
, -odkfile
, -cikfile
Denominazione delle chiavi
Per CIK non è importante come vengono denominate le chiavi se hanno la struttura binaria di [16 byte encryption key GUID][32 byte CIK]
. Le chiavi di firma XVD dovrebbero avere un identificatore distinto in modo da poterle fare riferimento tramite l’opzione cmdline -sk (-signkey)
.
ODK deve essere denominato da OdkIndex (<index>.odk
) o dal suo identificatore: RedOdk.odk, StandardOdk.odk ecc..
Per informazioni aggiornate dettagliate fare riferimento a: LibXboxOne/Keys/
.
Cosa sono gli XVD?
I pacchetti XVD sono un formato di file protetto utilizzato dalla console Xbox One per archiviare i dati, un analogo ai pacchetti STFS della console Xbox 360. I file XVD vengono solitamente utilizzati per memorizzare immagini/dati di sistema mentre XVC (una variante leggermente modificata degli XVD) vengono utilizzati per memorizzare i dati di gioco.
Per una spiegazione più dettagliata dei file XVD, vedere il file xvd_info.md
Librerie di terze parti utilizzate
- BouncyCastle (https://www.bouncycastle.org/csharp/).
- NDesk.Options (http://www.ndesk.org/Options).
- DiscUtils (https://github.com/DiscUtils/DiscUtils)
Download: xvdtool v0.52 (Linux-x64)
Download: xvdtool v0.52 (MacOSX-x64)
Download: xvdtool v0.52 (Win-x64)
Download: xvdtool v0.52 (Win-x86)
Download: Source code xvdtool v0.52
Fonte: github.com