XVDTOOL-это утилита командной строки C# для манипулирования пакетами Xbox One XVD/XVC. Он может распечатать подробную информацию о заголовках пакетов, уход в отставку, перефразируется, EN/расшифровку и проверить целостность данных пакета, он также может преобразовать расшифрованные файлы XVD в VHD или извлечь саму файловую систему.
До сих пор он был протестирован только с помощью Dev-Crypted Packages (в которых используются другой 256-битный офлайн-ключ дистрибуции (ODK) в розничные пакеты), так как розничный ключ до сих пор неизвестен. В настоящее время это делает инструмент бесполезным для 90% людей , но разработчики изучают, как работают файлы XVD, найдут подробное отображение структур XVD и почти полные методы для их манипуляции.
Однако с этим инструментом не предоставлены ключи шифрования , вам придется найти их самостоятельно. Хэши для клавиш разработчиков приведены ниже. Если у вас установлен комплект разработки Xbox One или GamingServices Framework (Windows10), вы можете использовать Durangokeyextractor для извлечения оттуда.
Также включен инструмент для извлечения файлов из файловой системы загрузочной файла XBFS (Xbox) внутри NAND Xbox One, на основе оригинальной работы TuxUser Nandone с несколькими небольшими дополнениями. Спасибо 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) , который, по -видимому, хранится где -то за пределами пакета, однако, где и как его хранятся, в настоящее время неизвестно. Если у вас есть правильный Deobfuscated CIK для данного пакета, вы сможете использовать его для расшифровки пакета.
Devkit/Test-подписные пакеты XVC используют статический CIK, который также «широко известен» (хэш, приведенный ниже).
Чтобы полностью использовать этот инструмент, вам понадобятся следующие файлы, которые не включены . Инструмент будет работать нормально без них, но некоторые функции могут не работать.
Вы можете использовать прилагаемый инструмент «Durangokeyextractor» для извлечения этих клавиш из структуры Microsoft.gamingServices, доступной в Windows 10. Просто проверьте некоторые файлы 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
Для других известных ключей и их хэшей используют коммутатор CMDLine -listkeys . Чтобы выбрать конкретный ключ, используйте следующие коммутаторы 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 вам требуются DLL от компонента GamingServices. Загрузите и установите его через Microsoft Store, и вам будет хорошо.
Xvdtool создаст папки Configuration/Keys на первом старте - Global и Local для приложения.
Глобальная папка конфигурации:
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 для хранения данных, аналогов для пакетов STFS Xbox 360. Файлы XVD обычно используются для хранения системных изображений/данных, в то время как XVCS (слегка модифицированный вариант 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.
Помимо этого инструмента не оказывается никакой помощи, в настоящее время он также очень экспериментально и, скорее всего, взорвется на вашем лице. Если вы сталкиваетесь с какими -либо ошибками, пожалуйста, отправьте описание того, что произошло с трекером выпуска.
Если вы хотите помочь с разработкой, не стесняйтесь, просто сделайте вилку этого репо, внесите свои изменения в новой ветви этой вилки, а затем отправьте запрос на притяжение из этого филиала в главную ветвь этого репо.