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支持的所有系统上都可以使用。
除了此工具外,没有帮助此工具,目前也非常实验性,很可能会在您的脸上爆炸。如果您确实遇到任何错误,请提交问题跟踪器发生的情况。
如果您想帮助开发,请自由使用,只需在该叉子的新分支中进行更改,然后将拉力请求从该分支提交该存储库的主分支。