XVDTool เป็นยูทิลิตี้บรรทัดคำสั่ง C# สำหรับการจัดการแพ็คเกจ Xbox One XVD/XVC มันสามารถพิมพ์ข้อมูลรายละเอียดเกี่ยวกับส่วนหัวแพ็คเกจลาออกการทำใหม่ en/decrypt และตรวจสอบความสมบูรณ์ของข้อมูลของแพ็คเกจนอกจากนี้ยังสามารถแปลงไฟล์ XVD ที่ถอดรหัสเป็น VHD หรือแยกระบบไฟล์เอง
จนถึงตอนนี้มันได้รับการทดสอบด้วยแพ็คเกจ dev-crypted เท่านั้น (ซึ่งใช้ คีย์การกระจายออฟไลน์ 256 บิตที่แตกต่างกัน (ODK) ไปยังแพ็คเกจค้าปลีก) เนื่องจากคีย์การค้าปลีกยังไม่เป็นที่รู้จัก สิ่งนี้ทำให้เครื่องมือไร้ประโยชน์สำหรับ 90% ของผู้คน แต่นักพัฒนามองว่าไฟล์ XVD ทำงานอย่างไรจะพบการแมปโดยละเอียดของโครงสร้าง XVD และวิธีการใกล้ชิดเพื่อจัดการกับพวกเขา
อย่างไรก็ตาม ไม่มีปุ่มเข้ารหัสที่มีเครื่องมือนี้ คุณจะต้องค้นหาด้วยตัวคุณเอง แฮชสำหรับคีย์ dev มีให้ด้านล่าง หากคุณมีชุดการพัฒนา Xbox One หรือ Gamingservices Framework (Windows10-exclusive) ติดตั้งคุณสามารถใช้ Durangokeyextractor เพื่อแยกคีย์ออกจากที่นั่น
รวมอยู่ด้วยเป็นเครื่องมือสำหรับการแยกไฟล์จาก XBFS (ระบบไฟล์ Boot Xbox) ภายใน Xbox One NAND โดยใช้ Nandone ดั้งเดิมของ Tuxuser ทำงานด้วยการเพิ่มเติมเล็ก ๆ น้อย ๆ ขอบคุณ 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) ซึ่งดูเหมือนจะถูกเก็บไว้ที่ไหนสักแห่งนอกแพ็คเกจอย่างไรก็ตามไม่ทราบว่าจัดเก็บไว้ที่ไหนและอย่างไร หากคุณมี CIK deobfuscated ที่ถูกต้องสำหรับแพ็คเกจที่กำหนดคุณควรใช้มันเพื่อถอดรหัสแพ็คเกจ
แพ็คเกจ XVC DevKit/Test-signed ใช้ 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
สำหรับคีย์อื่น ๆ ที่รู้จักและแฮชใช้สวิตช์ -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 คุณต้องใช้ DLLs จากส่วนประกอบ Gamingservices ดาวน์โหลดและติดตั้งผ่าน 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 ควรมีตัวระบุที่แตกต่างกันเพื่อให้คุณสามารถอ้างอิงได้ผ่านสวิตช์ CMDLine -sk (-signkey) ODK จะต้องมีการตั้งชื่อโดย ODKINDEX ( <index>.odk ) หรือโดยตัวระบุ: RedOdk.odk, StandardOdk.odk etc. สำหรับข้อมูลรายละเอียดที่ทันสมัยอ้างอิงถึง: LibXboxOne/Keys/
แพ็คเกจ XVD เป็นรูปแบบไฟล์ที่ปลอดภัยที่ใช้โดย Xbox One เพื่อจัดเก็บข้อมูลแบบอะนาล็อกไปยังแพ็คเกจ STFS ของ Xbox 360 ไฟล์ XVD มักจะใช้ในการจัดเก็บภาพระบบ/ข้อมูลในขณะที่ XVCS (XVDs ที่ปรับเปลี่ยนเล็กน้อย) ใช้เพื่อจัดเก็บข้อมูลเกม
สำหรับคำอธิบายโดยละเอียดเพิ่มเติมของไฟล์ 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
ไม่มีความช่วยเหลือสำหรับเครื่องมือนี้นอกเหนือจาก readme นี้ตอนนี้ยังมีการทดลอง มาก และ มี แนวโน้มที่จะระเบิดบนใบหน้าของคุณ หากคุณพบข้อบกพร่องใด ๆ โปรดส่งคำอธิบายว่าเกิดอะไรขึ้นกับตัวติดตามปัญหา
หากคุณต้องการความช่วยเหลือเกี่ยวกับการพัฒนารู้สึกอิสระเพียงทำส้อมของ repo นี้ทำการเปลี่ยนแปลงของคุณในสาขาใหม่ของส้อมนั้นแล้วส่งคำขอดึงจากสาขานั้นไปยังสาขาหลักของ repo นี้