XVDToolは、Xbox One XVD/XVCパッケージを操作するためのC#コマンドラインユーティリティです。パッケージヘッダーに関する詳細情報、辞任、再ハッシュ、en/decrypt、およびパッケージのデータの整合性を検証することもできます。また、復号化されたXVDファイルをVHDに変換したり、ファイルシステム自体を抽出したりすることもできます。
これまでのところ、小売キーがまだ不明であるため、開発者を結成したパッケージ(異なる256ビットオフライン配信キー(ODK)を小売パッケージに使用する)でのみテストされています。これにより、現在、ツールは90%の人々に対して役に立たなくなっていますが、XVDファイルがどのように機能するかを調べる開発者は、XVD構造の詳細なマッピングとそれらを操作するためのほぼ完全な方法を見つけます。
ただし、このツールには暗号化キーが提供されていないため、自分で見つける必要があります。 DEVキーのハッシュを以下に示します。 Xbox One Development KitまたはGamingservices Framework(Windows10-Exclusive)がインストールされている場合は、Durangokeyextractorを使用してそこからキーを抽出できます。
また、TuxuserのオリジナルのNandone作業に基づいて、いくつかの小さな追加を使用して、Xbox One Nand内のXBFS(Xbox Boot File System)からファイルを抽出するためのツールも含まれています。 OpenXVDを提供してくれたKebobに感謝します。
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)
非XVCパッケージを復号化するには、正しいODKが必要です。 Devkit ODKは「広く知られている」ものであり、ハッシュは以下に記載されていますが、上記のように、小売キーは現在不明です。
XVCパッケージの復号化は別の問題です。XVCパッケージは、パッケージの外側に保存されているように見えるコンテンツインスタンスキー(CIK)を使用しますが、現在どのように保存されているかは現在不明です。特定のパッケージに正しいデブファス化されたCIKがある場合は、パッケージを復号化するためにそれを使用できるはずです。
devkit/テスト署名XVCパッケージは、「広く知られている」静的CIKを使用します(以下に示すハッシュ)。
このツールを最大限に活用するには、以下のファイルが含まれていません。ツールはそれらなしでは正常に機能しますが、一部の機能は機能しない場合があります。
含まれているツール「Durangokeyextractor」を使用して、Windows 10で利用可能なGamingservicesフレームワークからこれらのキーを抽出できます。いくつかのDLL / SYS / EXEファイルを確認してください - それらを見つけることができます。
[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
他の既知のキーとそのハッシュには、 -listkeys cmdlineスイッチを使用します。特定のキーを選択するには、次のcmdlineスイッチを使用します。
-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
XVD/XVCファイルの取り付けには、GamingServicesコンポーネントからのDLLが必要です。 Microsoft Storeからダウンロードしてインストールすると、行く必要があります。
XVDToolは、アプリのグローバルおよびローカル - 最初の開始時に構成/キーフォルダーを作成します。
グローバル構成フォルダー:
C:Users<username>AppDataLocalxvdtool/home/<username>/.config/xvdtool/Users/<username>/.config/xvdtoolローカル構成フォルダーは、実行可能ファイルの現在のディレクトリです。
これらのフォルダー内には、キーを保存して自動装備できます。
<config dir>/XvdSigningKey/<config dir>/Cik/<config dir>/Odk/さらに、それぞれのcmdlineスイッチを介して任意のファイルシステムの場所からキーを提供できます: -signfile, -odkfile, -cikfile
CIKの場合[16 byte encryption key GUID][32 byte CIK]のバイナリ構造がある場合、キーの名前の名前が重要ではありません。 XVD署名キーには-sk (-signkey) cmdlineスイッチを介してそれらを参照できるように、個別の識別子が必要です。 ODKは、odkindex( <index>.odk )またはその識別子のいずれかによって名前を付ける必要があります: RedOdk.odk, StandardOdk.odk etc. LibXboxOne/Keys/については、最新情報を参照してください。
XVDパッケージは、Xbox Oneがデータを保存するために使用されるセキュリティ済みのファイル形式であり、Xbox 360のSTFSパッケージのアナログです。 XVDファイルは通常、システム画像/データを保存するために使用され、XVC(XVDのわずかに変更されたバリアント)がゲームデータを保存するために使用されます。
XVDファイルのより詳細な説明については、xvd_info.mdを参照してください
git clone https://github.com/emoose/xvdtool
cd xvdtool
dotnet build -c Release
注:デバッグとしてビルドする場合は、代わりに-c Releaseまたは供給-c Debugを省略します。
XVDToolはWindowsとMacOでテストされていますが、.NET Coreでサポートされているすべてのシステムで動作するはずです。
このツールにはこのツールに助けが与えられていません。これは現在非常に実験的であり、顔に爆発する可能性が非常に高いです。バグが発生した場合は、問題トラッカーに何が起こったのかを説明してください。
開発を手伝いたい場合は、このレポのフォークを作成し、そのフォークの新しいブランチで変更を加えてから、そのブランチからこのレポのマスターブランチにプルリクエストを送信してください。