XVDTool adalah utilitas Command-Line C# untuk memanipulasi paket XVD One XVD/XVC. Ini dapat mencetak info terperinci tentang header paket, mengundurkan diri, mengulang, EN/mendekripsi dan memverifikasi integritas data paket, itu juga dapat mengonversi file XVD yang didekripsi ke VHD atau mengekstrak sistem file itu sendiri.
Sejauh ini hanya diuji dengan paket-paket yang dikenakan DEV (yang menggunakan Kunci Distribusi Offline 256-bit yang berbeda (ODK) untuk paket ritel), karena kunci ritel masih belum diketahui. Ini saat ini membuat alat ini tidak berguna bagi 90% orang , tetapi pengembang yang melihat cara kerja file XVD akan menemukan pemetaan terperinci dari struktur XVD dan metode yang hampir lengkap untuk memanipulasi mereka.
Namun tidak ada kunci enkripsi yang dilengkapi dengan alat ini , Anda harus menemukannya sendiri. Hash untuk tombol dev disediakan di bawah ini. Jika Anda memiliki kit pengembangan Xbox One atau Gamingservices Framework (Windows10-Exclusive) yang diinstal, Anda dapat menggunakan durangokeyExtractor untuk mengekstrak kunci dari sana.
Juga disertakan adalah alat untuk mengekstraksi file dari XBFS (Xbox Boot File System) di dalam Xbox One NAND, berdasarkan karya Nandone asli Tuxuser dengan beberapa tambahan kecil. Terima kasih Kebob untuk menyediakan 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)
Untuk mendekripsi paket non-XVC Anda membutuhkan ODK yang benar. Devkit ODK "diketahui secara luas" dan hash disediakan di bawah ini, tetapi seperti yang disebutkan di atas kunci ritel saat ini tidak diketahui.
Dekripsi paket XVC adalah masalah yang berbeda, paket XVC menggunakan Key Instance Content (CIK) yang tampaknya disimpan di suatu tempat di luar paket, namun di mana dan bagaimana disimpan saat ini tidak diketahui. Jika Anda memiliki CIK Deobfuscated yang benar untuk paket yang diberikan, Anda harus dapat menggunakannya untuk mendekripsi paket.
Paket XVC DevKit/Test-Tandated menggunakan CIK statis yang juga "dikenal luas" (hash disediakan di bawah).
Untuk memanfaatkan sepenuhnya alat ini, Anda akan memerlukan file -file berikut, yang tidak termasuk . Alat ini akan bekerja dengan baik tanpa mereka, tetapi beberapa fungsi mungkin tidak berfungsi.
Anda dapat menggunakan alat yang disertakan "DurangokeyExtractor" untuk mengekstrak kunci -kunci ini dari kerangka kerja Microsoft.Gamingservices yang tersedia di Windows 10. Cukup periksa beberapa file DLL / SYS / EXE - Anda mungkin menemukannya.
[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
Untuk kunci lain yang diketahui dan hash mereka menggunakan sakelar -listkeys cmdline. Untuk memilih kunci tertentu, gunakan sakelar CMDLine berikut:
-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
Untuk pemasangan file XVD/XVC, Anda memerlukan DLL dari komponen GamingServices. Unduh & instal melalui Microsoft Store dan Anda harus baik untuk pergi.
XVDTool akan membuat folder konfigurasi/tombol pada awal pertama - global dan lokal ke aplikasi.
Folder Konfigurasi Global:
C:Users<username>AppDataLocalxvdtool/home/<username>/.config/xvdtool/Users/<username>/.config/xvdtoolFolder Konfigurasi Lokal adalah direktori saat ini dari yang dapat dieksekusi.
Di dalam folder ini, Anda dapat menyimpan kunci Anda untuk dimuat secara otomatis.
<config dir>/XvdSigningKey/<config dir>/Cik/<config dir>/Odk/ Selain itu, Anda dapat memberikan kunci dari lokasi sistem file yang sewenang -wenang melalui masing -masing sakelar CMDLine: -signfile, -odkfile, -cikfile
Untuk CIK tidak penting bagaimana kunci dinamai jika mereka memiliki struktur biner [16 byte encryption key GUID][32 byte CIK] . Kunci penandatanganan XVD harus memiliki pengidentifikasi yang berbeda sehingga Anda dapat merujuknya melalui sakelar CMDLine -sk (-signkey) . ODK perlu dinamai baik oleh Odkindex ( <index>.odk ) atau oleh pengidentifikasinya: RedOdk.odk, StandardOdk.odk etc. Untuk info terkini yang terperinci lihat: LibXboxOne/Keys/
Paket XVD adalah format file yang diamankan yang digunakan oleh Xbox One untuk menyimpan data, analog dengan paket STFS Xbox 360. File XVD biasanya digunakan untuk menyimpan gambar/data sistem sementara XVCS (varian XVD yang sedikit dimodifikasi) digunakan untuk menyimpan data game.
Untuk penjelasan yang lebih rinci tentang file XVD lihat xvd_info.md
git clone https://github.com/emoose/xvdtool
cd xvdtool
dotnet build -c Release
Catatan: Jika Anda ingin membangun sebagai debug, baik -c Release atau pasokan -c Debug sebagai gantinya.
XVDTool telah diuji pada Windows dan MacOS tetapi harus bekerja pada semua sistem yang didukung oleh .NET Core.
Tidak ada bantuan yang diberikan untuk alat ini selain readme ini, saat ini juga sangat eksperimental dan sangat mungkin meledak di wajah Anda. Jika Anda menemukan bug apa pun, silakan kirimkan deskripsi tentang apa yang terjadi pada pelacak masalah.
Jika Anda ingin membantu pengembangan, jangan ragu, buat saja garpu repo ini, buat perubahan Anda di cabang baru garpu itu dan kemudian kirimkan permintaan tarik dari cabang itu ke cabang utama repo ini.