XVDTool是用於操縱Xbox One XVD/XVC軟件包的C#命令行實用程序。它可以打印有關軟件包標頭,辭職,重新升級,解密和驗證軟件包的數據完整性的詳細信息,它還可以將解密的XVD文件轉換為VHD或提取文件系統本身。
到目前為止,它僅通過開發式包裝(使用不同的256位離線發行鍵(ODK)到零售軟件包)進行了測試,因為零售密鑰仍然未知。目前,該工具對90%的人無用,但是開發人員仔細研究了XVD文件的工作方式將找到XVD結構的詳細映射和幾乎完整的方法來操縱它們。
但是,此工具沒有提供加密鍵,您必須自己找到它們。下面提供了開發鍵的哈希。如果您安裝了Xbox One開發套件或GamingServices Framework(Windows10-劃界),則可以使用Durangokeyextractor從那裡提取鍵。
還包括一個工具,用於根據Tuxuser的原始NandOne工作,從Xbox One NAND內的XBF(Xbox引導文件系統)中提取文件,並提供了一些小添加。感謝kebob提供的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)
要解密非XVC軟件包,您需要正確的ODK。 Devkit ODK是“眾所周知的”,下面提供了哈希,但是如上所述,零售密鑰目前尚不清楚。
解密XVC軟件包是另一回事,XVC軟件包使用內容實例密鑰(CIK)似乎存儲在軟件包外面的某個地方,但是目前未知的位置和如何存儲。如果您對給定的軟件包有正確的Deobfuscustated Cik,則應該能夠使用它來解密軟件包。
DevKit/Test-Sign-sign XVC軟件包使用靜態CIK,它也是“廣為人知的”(下面提供的哈希)。
為了充分利用此工具,您需要以下未包括的文件。沒有它們,該工具將正常工作,但是某些功能可能無法使用。
您可以使用隨附的工具“ durangokeyextractor”從Microsoft.gamingservices框架上提取這些鍵。只需檢查一些DLL / sys / exe文件 - 您可能會找到它們。
[16 byte encryption key GUID][32 byte CIK] MD5: C9E58F4E1DC611E110A849648DADCC9B
SHA256: 855CCA97C85558AE8E5FF87D8EEDB44AE6B8510601EB71423178B80EF1A7FF7F
[32 byte ODK] MD5: A2BCFA87F6F83A560BD5739586A5D516
SHA256: CA37132DFB4B811506AE4DC45F45970FED8FE5E58C1BACB259F1B96145B0EBC6
RSAFULLPRIVATEBLOB結構 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商店下載並安裝它,您應該很好。
XVDTool將在第一次啟動 - 全局和應用程序本地創建配置/鍵文件夾。
全局配置文件夾:
C:Users<username>AppDataLocalxvdtool/home/<username>/.config/xvdtool >/.config/xvdtool/Users/<username>/.config/xvdtool < 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和MacOS上進行了測試,但它應該在.NET Core支持的所有系統上都可以使用。
除了此工具外,沒有幫助此工具,目前也非常實驗性,很可能會在您的臉上爆炸。如果您確實遇到任何錯誤,請提交問題跟踪器發生的情況。
如果您想幫助開發,請自由使用,只需在該叉子的新分支中進行更改,然後將拉力請求從該分支提交該存儲庫的主分支。