XVDTool은 Xbox One XVD/XVC 패키지를 조작하기위한 C# 명령 줄 유틸리티입니다. 패키지 헤더에 대한 자세한 정보, 사임, 재사용, EN/해독 및 패키지의 데이터 무결성 확인에 대한 자세한 정보를 인쇄 할 수 있으며 해독 된 XVD 파일을 VHD로 변환하거나 파일 시스템 자체를 추출 할 수도 있습니다.
지금까지 소매 키는 여전히 알려지지 않았기 때문에 Dev-Crypted 패키지 (ODK (Ordline Distribution Key)에 다른 256 비트 오프라인 분배 키 (ODK)를 사용하는 것만으로 만 테스트되었습니다. 이로 인해 현재이 도구는 90%의 사람들에게 쓸모가 없지만 XVD 파일의 작동 방식을 조사하는 개발자는 XVD 구조의 자세한 매핑과이를 조작하기위한 거의 완전한 방법을 찾을 수 있습니다.
그러나이 도구와 함께 암호화 키가 제공되지 않으므로 직접 찾아야합니다. 개발 키 해시는 아래에 제공됩니다. Xbox One 개발 키트 또는 GamingServices 프레임 워크 (Windows10-Excluction)가 설치된 경우 DurangokeyExtractor를 사용하여 키를 추출 할 수 있습니다.
또한 몇 가지 작은 추가 기능을 갖춘 턱시저의 원래 Nandone 작업을 기반으로 Xbox One NAND 내부의 XBFS (Xbox Boot 파일 시스템)에서 파일을 추출하는 도구도 포함되어 있습니다. 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 (Content Instance Key)를 사용하지만 현재 어디서 저장되는지는 알려져 있지 않습니다. 주어진 패키지에 대한 올바른 deobfuscated cik이있는 경우 패키지를 해독하는 데 사용할 수 있어야합니다.
DevKit/Test-Signed XVC 패키지는 "널리 알려진"정적 CIK를 사용합니다 (아래에 제공됨).
이 도구를 최대한 활용하려면 포함되지 않은 다음 파일이 필요합니다. 도구는 그들 없이는 잘 작동하지만 일부 기능은 작동하지 않을 수 있습니다.
포함 된 도구 "DurangokeyExtractor"를 사용하여 Windows 10에서 사용 가능한 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 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 및 MacOS에서 테스트되었지만 .NET Core에서 지원하는 모든 시스템에서 작동해야합니다.
이 도구 외에이 도구에 대한 도움은 없으며, 현재는 실험적 이며 얼굴에 폭발 할 가능성이 높습니다 . 버그가 발생하면 문제 추적기에 발생한 일에 대한 설명을 제출하십시오.
개발을 자유롭게 도와주고 싶다면이 저장소의 포크를 만들고 해당 포크의 새 지점을 변경 한 다음 해당 지점에서 풀 요청을 제출 하여이 repo의 마스터 브랜치로 제출하십시오.