xvdtool ist ein C# -Kennbuch-Dienstprogramm zum Manipulieren von Xbox One XVD/XVC-Paketen. Es kann detaillierte Informationen zu Paketkopfzeilen, dem Rücktritt, der Wiederherstellung, dem EN/entschlüsseln und die Datenintegrität eines Pakets verifizieren. Es kann auch entschlüsselte XVD -Dateien in VHD umwandeln oder das Dateisystem selbst extrahieren.
Bisher wurde es nur mit dev-kriegenden Paketen (die einen anderen 256-Bit -Offline-Vertriebstaste (ODK) als Einzelhandelspakete verwenden) getestet, da der Einzelhandelschlüssel noch nicht bekannt ist. Dies macht das Tool derzeit für 90% der Personen unbrauchbar , aber Entwickler, die untersuchen, wie XVD-Dateien arbeiten, finden eine detaillierte Zuordnung der XVD-Strukturen und nahezu vollständigen Methoden zur Manipulation.
Mit diesem Tool werden jedoch keine Verschlüsselungsschlüssel bereitgestellt . Sie müssen sie selbst finden. Hashes für die Entwicklerschlüssel sind unten bereitgestellt. Wenn Sie ein Xbox One-Entwicklungskit oder ein GamingServices-Framework (Windows10-exklusive) installiert haben, können Sie DurangokeyExtractor verwenden, um die Schlüssel von dort aus zu extrahieren.
Ebenfalls enthalten ist ein Tool zum Extrahieren von Dateien aus dem XBFS (Xbox -Boot -Dateisystem) im Xbox One -NAND, basierend auf dem ursprünglichen Nandon -Arbeit von Tuxuser mit einigen kleinen Ergänzungen. Vielen Dank an Kebob für die Bereitstellung von OpenXVD.
Usage : xvdtool.exe [parameters] [filename]
Parameters:
-h (-help) - print xvdtool usage
-i (-info) - print info about package
-wi (-writeinfo) - write info about package to [filename].txt
-o (-output) <output-path> - specify output filename
-m (-mount) - mount package
-um (-unmount) - unmount package
-mp (-mountpoint) - Mount point for package (e.g. "X:")
-lk (-listkeys) - List known keys including their hashes / availability
-signfile <path-to-file> - Path to xvd sign key (RSA)
-odkfile <path-to-file> - Path to Offline Distribution key
-cikfile <path-to-file> - Path to Content Instance key
-sk (-signkey) <key-name> - Name of xvd sign key to use
-odk (-odkid) <id> - Id of Offline Distribution key to use (uint)
-cik (-cikguid) <GUID> - Guid of Content Instance key to use
-nd (-nodatahash) - disable data hash checking, speeds up -l and -f
-ne (-noextract) - disable data (embedded XVD/user data) extraction, speeds up -l and -f
-eu (-decrypt) - decrypt output xvd
-ee (-encrypt) - encrypt output xvd
XVDs will have a new CIK generated (if CIK in XVD header is empty), which will be encrypted with the ODK and stored in the XVD header
-hd (-removehash) - remove hash tree/data integrity from package
-he (-addhash) - add hash tree/data integrity to package
-md (-removemdu) - remove mutable data (MDU) from package
-r (-rehash) - fix data integrity hashes inside package
-rs (-resign) - sign package using the private key from rsa3_key.bin
-xe (-extractembedded) <output-file> - extract embedded XVD from package
-xu (-extractuserdata) <output-file> - extract user data from package
-xv (-extractvhd) <output-vhd> - extracts filesystem from XVD into a VHD file
-xi (-extractimage) <output-file> - extract raw filesystem image
-xf (-extractfiles) <output-folder> - extract files from XVD filesystem
The next two commands will write info about each package found to [filename].txt
also extracts embedded XVD and user data to [filename].exvd.bin / [filename].userdata.bin
-l (-filelist) <path-to-file-list> - use each XVD specified in the list
-f (-folder) <path-to-folder> - scan folder for XVD files
To mount a package in Windows you'll have to decrypt it and remove the hash tables & mutable data first (-eu -hd -md)
Um Nicht-XVC-Pakete zu entschlüsseln, benötigen Sie die richtige ODK. Der Devkit ODK ist "weithin bekannt" und ein Hashes ist unten bereitgestellt, aber wie oben erwähnt, ist der Einzelhandelschlüssel derzeit unbekannt.
Das Entschlüsseln von XVC -Paketen ist eine andere Angelegenheit. XVC -Pakete verwenden einen Inhaltsinstanzschlüssel (CIK) , der anscheinend irgendwo außerhalb des Pakets gespeichert zu sein scheint. Wie und wie es gespeichert wird, ist derzeit unbekannt. Wenn Sie den richtigen Deobfuscated Cik für ein bestimmtes Paket haben, sollten Sie es verwenden, um das Paket zu entschlüsseln.
DevKit/Test-Signed XVC-Pakete verwenden einen statischen Cik, der ebenfalls "weithin bekannt" ist (Hash, das unten bereitgestellt wird).
Um dieses Tool vollständig zu nutzen, benötigen Sie die folgenden Dateien, die nicht enthalten sind . Das Tool funktioniert ohne sie gut, aber einige Funktionen funktionieren möglicherweise nicht.
Sie können das mitgelieferte Tool "DurangokeyExtractor" verwenden, um diese Schlüssel aus dem Rahmen von Microsoft.GamingServices zu extrahieren, das unter Windows 10 verfügbar ist. Überprüfen Sie einfach einige DLL / SYS / EXE -Dateien - Sie finden möglicherweise.
[16 byte encryption key GUID][32 byte CIK] MD5: C9E58F4E1DC611E110A849648DADCC9B
SHA256: 855CCA97C85558AE8E5FF87D8EEDB44AE6B8510601EB71423178B80EF1A7FF7F
[32 byte ODK] MD5: A2BCFA87F6F83A560BD5739586A5D516
SHA256: CA37132DFB4B811506AE4DC45F45970FED8FE5E58C1BACB259F1B96145B0EBC6
RSAFULLPRIVATEBLOB STRUCT MD5: 2DC371F46B67E29FFCC514C5B134BF73
SHA256: 8E2B60377006D87EE850334C42FC200081386A838C65D96D1EA52032AA9628C5
Für andere bekannte Schlüssel und ihre Hashes verwenden Sie den Cmdline -Switch -listkeys . Um einen bestimmten Schlüssel zu wählen, verwenden Sie die folgenden CMDLINE -Switches:
-sk (-signkey) <key-name> - Name of xvd sign key to use
-odk (-odkid) <id> - Id of Offline Distribution key to use (uint)
-cik (-cikguid) <GUID> - Guid of Content Instance key to use
Für die Montage von XVD/XVC -Dateien benötigen Sie DLLs von GamingServices -Komponenten. Laden Sie es über den Microsoft Store herunter und installieren Sie es und Sie sollten gut gehen.
Xvdtool erstellt Konfigurations-/Tastenordner beim ersten Start - global und lokal zur App.
Globaler Konfigurationsordner:
C:Users<username>AppDataLocalxvdtool/home/<username>/.config/xvdtool/Users/<username>/.config/xvdtoolLokaler Konfigurationsordner ist das aktuelle Verzeichnis der ausführbaren Datei.
In diesen Ordnern können Sie Ihre Schlüssel speichern, um automatisch aufgestattet zu werden.
<config dir>/XvdSigningKey/<config dir>/Cik/<config dir>/Odk/ Darüber hinaus können Sie Schlüssel aus beliebigen Standorten des Dateisystems über die jeweiligen CMDline -Switches angeben: -signfile, -odkfile, -cikfile
Für Cik ist es nicht wichtig, wie die Schlüssel benannt werden, wenn sie die binäre Struktur von [16 byte encryption key GUID][32 byte CIK] haben. XVD -Signierschlüssel sollten eine eigenständige Kennung haben, sodass Sie sie über den CMDLINE -Schalter -sk (-signkey) verweisen können. ODK muss entweder von Odkindex ( <index>.odk ) oder nach seiner Kennung LibXboxOne/Keys/ werden: RedOdk.odk, StandardOdk.odk etc. Für detaillierte aktuelle Informationen finden Sie
XVD -Pakete sind ein gesichertes Dateiformat, das von der Xbox One zum Speichern von Daten verwendet wird, ein Analogon zu den STFS -Paketen des Xbox 360. XVD -Dateien werden normalerweise zum Speichern von Systembildern/Daten verwendet, während XVCs (eine leicht modifizierte Variante von XVDs) zum Speichern von Spieldaten verwendet werden.
Eine detailliertere Erläuterung von XVD -Dateien finden Sie in xvd_info.md
git clone https://github.com/emoose/xvdtool
cd xvdtool
dotnet build -c Release
HINWEIS: Wenn Sie als Debuggen erstellen möchten, lassen Sie stattdessen entweder -c Release oder Supply -c Debug aus.
XVDTool wurde unter Windows und MacOS getestet, sollte jedoch auf allen Systemen funktionieren, die von .NET Core unterstützt werden.
Es gibt keine Hilfe für dieses Tool neben diesem Readme. Es ist derzeit auch sehr experimentell und ist sehr wahrscheinlich in Ihrem Gesicht in die Luft. Wenn Sie Fehler begegnen, senden Sie bitte eine Beschreibung dessen, was mit dem Problem Tracker passiert ist.
Wenn Sie mit der Entwicklung helfen möchten, sich frei zu fühlen, machen Sie einfach eine Gabel von diesem Repo, nehmen Sie Ihre Änderungen in einem neuen Zweig dieser Gabel vor und senden Sie dann eine Pull -Anfrage von dieser Zweigstelle an den Master -Zweig dieses Repo.