Xbox One:Dumping Games with Durango Dumplings v1: Difference between revisions

From ConsoleMods Wiki
Jump to navigation Jump to search
No edit summary
 
(32 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Note|This guide is very WIP. Please do not touch it, as I (Derf) am planning on packaging it up to be simpler for end users.}}
{{Warning|Ensure that your network is setup to prevent the Xbox from reaching the internet. It's recommended to block your Xbox's MAC addresses from accessing the WAN in your router settings, to turn off auto-updates, and to set the DNS setting on the Xbox to 127.0.0.1.}}
This page will walk you through dumping Xbox One/Series games on a compatible firmware device.


A great video tutorial can be found on [https://www.youtube.com/watch?v=o920RrQxLSM KsAmJ Gaming & Tech's YouTube channel].
Credit to InvoxiPlayGames/Emma and XboxOneResearch for most of these tools, BirdonWheels for the [https://www.xbox-scene.info/forums/topic/523-how-to-dump-games-on-xbox-one-one-x/ original guide] which was used as the basis for this page, and burninrubber0 from the Xbox Scene Discord for the dump.bat script. A video tutorial can be found on [https://www.youtube.com/watch?v=o920RrQxLSM KsAmJ Gaming & Tech's YouTube channel].


Credit to BirdonWheels for the [https://www.xbox-scene.info/forums/topic/523-how-to-dump-games-on-xbox-one-one-x/ original guide], adapted here with permission.
== Dumping Games ==


Credit to burninrubber0 from the Xbox Scene Discord for the dump.bat script.
=== Pre-requisites ===


== Pre-requisites ==
* Xbox One / Series firmware version 4478.
 
* Works on Xbox One / Series firmware version 4478.
** Not working on firmware 4908 or 4909, as the Temp Drive is 0 bytes
** Not working on firmware 4908 or 4909, as the Temp Drive is 0 bytes
** Edit this if it works for you on other firmware!
** Edit this if it works for you on other firmware!
Line 16: Line 15:
** Disc copy will allow you to dump a digital game
** Disc copy will allow you to dump a digital game
* The game you are dumping must be installed on your Internal Storage.
* The game you are dumping must be installed on your Internal Storage.
* Backup the game you want to dump. Copy the game to a USB flash drive via the Xbox dashboard.
* The game you are dumping must be able to be launched.
* Games that are less than 2GB, or larger than 39GB might not be able to be dumped via this method.
** "Check your connection" - This error will show if it successfully launched, but the game requires an internet connection. These games can be dumped.
* Certain games can't be dumped using this method. The known issue games are:
** "To start this game or app you need to be signed in to the Xbox network." - You do not have a valid license for the game. It either was purchased and never launched or an expired Game Pass game. You cannot dump these games.
** "Use this Xbox regularly? Make it your home Xbox so you can play games you own, even offline." - Displayed when you attempt to launch a game licensed to an account that does not have this Xbox set as the home Xbox. You cannot dump these games.
* Backup the game you want to dump, as the original copy will break. Copy the game to a USB flash drive via the Xbox dashboard.
* Games that are less than 2GB, or larger than 39GB will not be able to be dumped via this method unless you resize your temp partition, which is not covered here yet.
* Preferably connect your Xbox via ethernet, as Wi-Fi connections have been shown to drop files out of dumps.
* Certain games appear to not be dumpable using this method. The known issue games are:
** Minecraft
** Minecraft
** Undertale
** Undertale


Later backup your license files in S:\Clip to a USB flash drive!*
=== PC Preparation ===
 
== PC Preparation ==


# Download the [[File:Xbox_One_Game_Dumping_Pack_v1.0.zip|Xbox One Game Dumping Pack]] and extract it to your PC. This contains everything you need (except Microsoft .NET) to dump games.
# Download the [https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-6.0.424-windows-x64-binaries .NET 6.0 SDK x86_64 Binary for Windows].
# Download the [https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-6.0.424-windows-x64-binaries .NET 6.0 SDK x86_64 Binary for Windows].
# Format a USB flash drive as NTFS (????????????????????????????????).
# Format a USB flash drive as NTFS.
# Extract dotnet-sdk-6.0.424-win-x64.zip to a new folder named dotnet. Copy the dotnet folder to the root of your USB flash drive. For example, if your flash drive is `E:`, move it so it display as `E:\dotnet`.
# Extract dotnet-sdk-6.0.424-win-x64.zip into the `\Copy to Flash Drive\dotnet\` folder.  
# Download the following three XML files and copy them to the root of the USB flash drive:
# Copy the contents of the `Copy to Flash Drive` folder to the root of your USB flash drive and safely eject the flash drive.
#* [https://github.com/xboxoneresearch/Interop/blob/main/msbuild_tasks/get_tempxvd_owners.xml get_tempxvd_owners.xml]
# Open the OneDumpgame folder and open `dumpgame.lua` in Notepad. Replace the IP address near the top with the IP of your PC and save.
#* [https://github.com/xboxoneresearch/Interop/blob/main/msbuild_tasks/mount_connectedstorage.xml mount_connectedstorage.xml]
# Open the collateral_damage_v1_remote folder and edit gamescript_autosave_network.txt. Replace `YOUR IP HERE` with the IP address of the PC you are going to run the exploit from.
#* [https://github.com/xboxoneresearch/Interop/blob/main/msbuild_tasks/prepare_gamedump.xml prepare_gamedump.xml]
# In the LuaFFI-CE folder, edit `stage1.lua` and replace "YOUR IP HERE" in `local serverIp = "YOUR IP HERE"` with your PC's IP address.
# Open Notepad and paste the below code. Save the file as dump.bat, making sure to set "Save as Type" to "All Files" when saving. Copy dump.bat to the root of your USB flash drive:
# In the LuaFFI-CE folder, edit `stage2.lua` and replace "YOUR IP HERE" in `local serverIp = "YOUR IP HERE"` with your PC's IP address.  
<pre>
for /R /D %%d in (.\*) do (
    mkdir D:\xb1\saves%%~pnxd
)
for /R %%f in (.\*) do (
    copy %%f D:\xb1\saves%%~pnxf
)
</pre>
# Safely Eject the USB flash drive.


== First Exploitation ==
=== Game Script Reverse Shell (SystemOS) ===
[[File:Collateral Damage Shell.jpeg|thumb|A successful execution of Collateral Damage for Xbox One/Series, returning a reverse shell.]]
[[File:Collateral Damage Shell.jpeg|thumb|A successful execution of Collateral Damage for Xbox One/Series, returning a reverse shell.]]
Perform the Collateral Damage Game Script exploit as detailed below.
Perform the Collateral Damage Game Script exploit as detailed below to obtain a reverse shell.


# If you haven't already, launch Warhammer Vermintide 2, press A to start game, and choose "Use Offline". This will create a game save on your hard drive.
# If you haven't already, launch Warhammer Vermintide 2, press A to start game, and choose "Use Offline". This will create a game save on your hard drive.
# Download and extract [https://sourceforge.net/projects/miniweb/ miniweb] to your PC.
# Download the latest [https://github.com/exploits-forsale/collateral-damage/releases/latest/ Collateral Damage zip file] and extract it into `miniweb/htdocs`.
# Open the collateral_damage_v1_remote folder and edit gamescript_autosave.txt. Replace `YOUR IP HERE` with the IP of the PC you are going to run the exploit from.
# Run miniweb.exe. If it asks for permissions to run, check both boxes and select "Allow Access". A command prompt window should open.
# Run miniweb.exe. If it asks for permissions to run, check both boxes and select "Allow Access". A command prompt window should open.
#* Note the IP address and port listed, e.g. `192.168.1.77:8000`.
#* Note the IP address and port listed, e.g. `192.168.1.77:8000`.
# On your Xbox, open Microsoft Edge and enter the full IP address and port into the address bar (e.g. `192.168.1.77:8000`). It should list all of the files present in the `htdocs` folder on your PC.
# On your Xbox, open Microsoft Edge and enter the full IP address and port into the address bar (e.g. `192.168.1.77:8000`). It should list the file present in the `htdocs` folder on your PC.
# Select the `collateral_damage_v1_remote` folder and then `gamescript_autosave.txt`. It should display the contents of the script. Hover your cursor before the very first character, then hold A and drag the left stick down to highlight all of the text. Let go of A and then select "Copy" from the small menu that opens up.  
# Select `gamescript_autosave_network.txt`. It should display the contents of the script. Hover your cursor before the very first character, then hold A and drag the left stick down to highlight all of the text. Let go of A and then select "Copy" from the small menu that opens up.  
# Launch the Game Script app. Use the D-PAD to highlight "Paste code" and press A to paste the contents of the file you copied. Press B to close the keyboard.
# Launch the Game Script app. Use the D-PAD to highlight "Paste code" and press A to paste the contents of the file you copied. Press B to close the keyboard.
# On your PC, double-click `start_payload_server.bat`. If it asks for permissions to run, check both boxes and select "Allow Access". It will open a window with the last line being "Server listening...".
# Double-click `gamescript_reverse_shell.bat`. It will open a window for the server process with the last line being "Server listening..." and a second window running NetCat with the text "listening on [any] 7070 ...".
# Download [https://github.com/int0x33/nc.exe/blob/master/nc.exe NetCat (nc.exe)] and place it in the `collateral_damage_v1_remote` folder.
#* It may ask multiple times for permission to run on the network, check both boxes and select "Allow Access".
#* Note that most anti-viruses will flag NetCat as a virus.
# Double-click `start_netcat.bat` and a window should open with the text "listening on [any] 7070 ...".
# On your Xbox, open the Game Script app if not already there. Hold X and press RB to select "Windows", then let go of X.
# On your Xbox, open the Game Script app if not already there. Hold X and press RB to select "Windows", then let go of X.
# Using the D-PAD, select "Show Code Run window" and press A. On the new window that pops up, highlight the "Run code once" button and press A.
# Using the D-PAD, select "Show Code Run window" and press A. On the new window that pops up, highlight the "Run code once" button and press A.
#* After about 10-30 seconds, some traffic will appear on the payload and NetCat command windows, and if successful, you will have a reverse shell on the NetCat command window to be able to run commands against the Xbox.
#* After about 10-60 seconds, some traffic will appear on the payload and NetCat command windows, and if successful, you will have a reverse shell on the NetCat command window to be able to run commands against the Xbox.
# In the reverse shell, enter the following commands:
#* If the Game Script app or the NetCat window closes, re-launch them and try again. If after multiple attempts it is still crashing, go to Settings > General > Power Options > Shutdown now, then turn your console back on and try again.
 
=== Modifying the Vermintide Game Save ===
 
These steps will guide you through modifying your Vermintide game save to be able to run the game dumper.
 
<ol>
<li> In the reverse shell, enter the following commands:
<pre>
<pre>
set DOTNET_CLI_TELEMETRY_OPTOUT=1
set DOTNET_CLI_TELEMETRY_OPTOUT=1
D:\dotnet\dotnet.exe msbuild D:\mount_connectedstorage.xml
D:\dotnet\dotnet.exe msbuild D:\mount_connectedstorage.xml  
</pre>
</pre>
#* The previous command will output the Harddisk# where your saves are located (e.g. `XVD Mounted to \\?\GLOBALROOT\Device\Harddisk16\Partition1` indicates it is on Harddisk16). The rest of this guide will use Harddisk16 as an example.
</li>
# In the reverse shell, enter the following command, substituting your own Harddisk#, and your game saves will be dumped:
<ul><li> The previous command will output the Harddisk# where your saves are located (e.g. `XVD Mounted to \\?\GLOBALROOT\Device\Harddisk16\Partition1` indicates it is on Harddisk16). The rest of this guide will use Harddisk16 as an example.</li></ul>
<pre>
<li> In the reverse shell, enter the following command, substituting your own Harddisk#, and your game saves and licenses will be dumped: </li>
<ul><pre>
mklink /j T:\connectedStorage "\\?\GLOBALROOT\Device\Harddisk16\Partition1\"
mklink /j T:\connectedStorage "\\?\GLOBALROOT\Device\Harddisk16\Partition1\"
T:
T:
cd connectedStorage
cd connectedStorage
D:\dump.bat
D:\dump.bat
</pre>
mkdir D:\Licenses
# When it completes, unplug your USB flash drive and plug it into your PC.  
copy S:\Clip D:\Licenses
# Download [https://github.com/xboxoneresearch/LuaFFI-CE LuaFFI-CE]. Edit `stage1.lua` and replace the IP address in `local serverIp = "192.168.123.1"` with your PC's IP address.
</pre></ul>
# On the flash drive, navigate to `\xb1\saves\connectedStorage\u_################_C05F0100-EAC5-49EB-943F-1A0E3C108361\`. This is your save for Warhammer Vermintide 2. Open the sole folder and there should be two files, one of them has a unique ID and the other is named "container". Open the unique ID file with notepad, delete all of the contents, and then paste the entire contents of `stage1.lua` into it and save.  
<li> When it completes, unplug your USB flash drive and plug it into your PC. </li>
# Write down the path to this game save for future use, e.g. `\xb1\saves\connectedStorage\u_2535434839607031_C05F0100-EAC5-49EB-943F-1A0E3C108361\{F1997DC1-51FF-49CB-A9BA-59D042BB4AFB}`.
<li> On the flash drive, navigate to `\xb1\saves\connectedStorage\u_################_C05F0100-EAC5-49EB-943F-1A0E3C108361\`. This is your save for Warhammer Vermintide 2. Open the sole folder and there should be two files, one of them has a unique ID and the other is named "container". Open the unique ID file with notepad, delete all of the contents, and then paste the entire contents of `LuaFFI-CE\stage1.lua` into it and save. </li>
# Safely Eject your USB flash drive and plug it into your Xbox.  
<li> Write down the path to this game save for future use, e.g. `\xb1\saves\connectedStorage\u_1111111111111111_C05F0100-EAC5-49EB-943F-1A0E3C108361\{AABBCCDD-EEFF-GGHH-IIJJ-KKLLMMNNOOPP}`. </li>
# In the reverse shell, enter the following command, substituting your own path, and type "Yes" when prompted to overwrite:
<li> Safely Eject your USB flash drive and plug it into your Xbox. </li>
<li> In the reverse shell, enter the following command, substituting your own path, and type "All" when prompted to overwrite: </li>
<ul>
<pre>
<pre>
copy D:\xb1\saves\connectedStorage\{7621630A-3FAC-4645-8136-873124F4768C}  T:\connectedStorage\u_2535434839607031_C05F0100-EAC5-49EB-943F-1A0E3C108361\{F1997DC1-51FF-49CB-A9BA-59D042BB4AFB}
copy D:\xb1\saves\connectedStorage\{AABBCCDD-EEFF-GGHH-IIJJ-KKLLMMNNOOPP}  T:\connectedStorage\u_1111111111111111_C05F0100-EAC5-49EB-943F-1A0E3C108361\{AABBCCDD-EEFF-GGHH-IIJJ-KKLLMMNNOOPP}
</pre>
</pre>
</ul>
</ol>


////////// WIP [[User:Derf|Derf]] ([[User talk:Derf|talk]]) 23:11, 7 August 2024 (UTC)
=== Finding your License File ===


⭐10-1/2. Reboot your Xbox. You will need to reboot to unlink T:\connectedStorage.
==== Digital Game ====


B. Dumping with Warhammer:
<ol>
For these next steps, we will get the dumping server set up, along with a tool that'll show you what license belongs to which game. Credits to Invoxiplaygames/Emma for making these super useful tools!
<li> On your PC, copy the contents of the `Licenses` folder on the flash drive into the `\LicenseClipFinder\Clips\` folder.
https://github.com/InvoxiPlayGames/LicenseClipFinder
<li> Double click `run_license_clip_finder.bat` to start LicenseClipFinder. It will output a "Licenses.txt" file which will contain the '''content ID''' and '''license path''' associated with all of your games.
https://github.com/InvoxiPlayGames/OneDumpgame
<ul><li> If you do not have a recent enough .NET version, it may prompt you with a link to download it from Microsoft. Install it and try again. </ul>
(You can either compile these, or use these binaries that I compiled for my windows PC: https://qiwi.gg/file/82Zc3209-CompiledDumpTools)
<li> If not already done, copy the game you wish to dump to a USB flash drive, as the dumping process will break the game and it will be useful to have a backup.
</ol>
11. You will need your license files on your PC. If you have them, proceed to next step. If not, then in Collateral Damage's reverse shell on your PC, type these commands:


mkdir D:\Licenses
==== Disc Game ====
copy S:\Clip D:\Licenses


12. Back on the PC, go to the LicenseClipFinder.exe that you compiled or downloaded. Copy your license folder next to the exe, make sure the folder is named Clips
<ol>
Run the LicenseClipFinder.exe in command prompt and it should show you the content id and license file associated with all of your games.
<li> In your the reverse shell, enter the following command:
<ul>
12-1/2. *If you didn't back up your game (copy it to a usb flash drive via the dashboard, do so now!).*
<pre>
type O:\MSXC\Metadata\catalog.js
13. Downloaded these two msbuild xmls and put on the root of your usb flash drive:
</pre>
https://github.com/xboxoneresearch/Interop/blob/main/msbuild_tasks/get_tempxvd_owners.xml
<li> The '''content ID''' of the game will be listed, e.g. ` 7049126b-609b-4d08-b5cb-0d407e8dfec1`. It may be spaced out, so you will need to copy the value after "content ID" and remove the spaces. Note this information for later.
https://github.com/xboxoneresearch/Interop/blob/main/msbuild_tasks/prepare_gamedump.xml
</ul>
<li> In your the reverse shell, enter the following command:
14. On your Xbox, start up Warhammer Vermintide 2. Hit the Xbox (home) button, then on the Warhammer icon press 'start' then 'quit'.  
<ul>
<pre>
dir O:\Licenses\
</pre>
<li> Note the name of the file it reports back, e.g. `O:\Licenses\License0.xml`. Note this '''license path''' for later.
</ul>
</ol>


=== Dumping your Game ===


15. Open up Game Script, do the GS/Collateral Damage exploit. Plug your USB flash drive in your Xbox and run this command:
The next steps will walk you through setting up the server that will receive the game dump(s).


<ol>
<li> Reboot your Xbox. This is required to unlink `T:\connectedStorage`.
<li> Start Warhammer Vermintide 2. Press the Xbox (home) button, then on the Warhammer icon press Start and choose "Quit".
<li> Plug your flash drive into the Xbox.
<li> On your PC, run `gamescript_reverse_shell.bat` again.
<li> Open the Game Script app and run the exploit again by holding X and pressing RB to select window, selecting "Show Code Run window", and clicking "Run code once" to obtain a reverse shell again.
<li> In the reverse shell, enter:
<ul>
<pre>
D:\dotnet\dotnet.exe msbuild D:\get_tempxvd_owners.xml
D:\dotnet\dotnet.exe msbuild D:\get_tempxvd_owners.xml
16. It'll give you the temp XVD number for Warhammer. This should stay the same if you don't open up other games for now.  
</pre>
 
</ul>
 
<li> Temporary XVD(s) will be listed. Note the value listed for "Vermintide2", e.g. `00`. Avoid launching any games on your system from this point onward, as it may change this value.
17. Put the USB flash drive in your PC, and edit prepare_gamedump.xml. Towards the bottom of the xml there's a portion for you to edit.
<li> Plug your flash drive into your PC and edit prepare_gamedump.xml. Search for `/* EDIT ME */` and you will find a marked section toward the bottom with three lines that you will need to edit:
 
<ul>
Change the temp XVD to your temp XVD number for Warhammer, and the content and license file name to what LicenseClipFinder showed you in step 12.
<li>Replace the `00` in `temp00` with the value found in the last step (if it's not 00)
 
<li>Replace `PUT-CONTENT-ID-OF-GAME-HERE` with the '''content ID''' for the game you want to dump. This was listed in your Licenses.txt file (digital game) or identified earlier when looking at your O: drive (disc game).
17-1/2. *Last chance to make sure your game and licenses are backed up. If you haven't, copy game via the dash, copy the S:\Clip folder to your PC.*
<li>Replace `S:\Clip\PUT-LICENSE-FILE-NAME-HERE` with the '''license path''' of the game you want to dump. This was listed in your Licenses.txt file (digital game) or identified earlier when looking at your O: drive (disc game).
 
<li>If using a Series console, change `XTE` to `XUC` in this line as follows: `const string TEMP_XVD_PATH = @"[XUC:]\temp00"; // Replace with temp<NUM> of exploited game`
18. Plug your USB flash drive back into your Xbox. Then in the Game Script/Collateral Damage reverse shell on your pc, type in this command:
</ul>
 
<li> Plug your USB flash drive back into your Xbox.
<li> In the reverse shell, enter:
<ul>
<pre>
D:\dotnet\dotnet.exe msbuild D:\prepare_gamedump.xml
D:\dotnet\dotnet.exe msbuild D:\prepare_gamedump.xml
19. If it works, you will see the files streamed into the temp XVD for Warhammer Vermintide 2.
</pre>
</ul>
<li> If successful, it will stream the files into the temp XVD for Warhammer Vermintide 2 and constantly update the status. When complete, it will show "License file loaded".
<ul><li> If the game is >39GB, it may fail out and show the error "There is not enough space on the disk". </ul>
<li> Double-click `dump_game.bat`. It will open another NetCat instance and a second window showing "Waiting for connection...".
<ul><li> It may ask multiple times for permission to run on the network, check both boxes and select "Allow Access". </ul>
<li> Launch Warhammer Vermintide 2 and press "A" on the title screen. If everything was done correctly, the game should freeze and you should see traffic in one of the command prompt windows and the files being written to `.\OneDumpgame\tx\`.
<ul><li> If anything appears wrong, see the troubleshooting section below. You can always close Warhammer Vermintide 2 and re-open it, repeating this step. </ul>
<li> It's highly recommended to copy the contents of `.\OneDumpgame\tx\` to another folder and dump the game again. Afterwards, check the file size of both folders to make sure they exactly match, verifying that you had a good dump.
</ol>


20. Once it's finished and says `license loaded`, on your PC go to the OneDumpgame folder. Open dumpgame.lua and change the IP to your PC's IP address.
== Optional Steps ==
21. Open a terminal/command prompt in the same folder as dumpgame.lua. Once you're in the same directory, use this command:


cat dumpgame.lua | nc64.exe -w 1 -lvp 8123
=== Restoring Games after Dumping ===
 
*If prompted to allow for the firewall, hit allow*
22. Open a terminal/command prompt as Administrator in the same folder as DumpgameServer.exe. Once you're in the same directory, use this command
 
.\DumpgameServer.exe
 
*If prompted to allow for the firewall, hit allow*
 
22-1/2. If you compiled OneDumpgame, make a folder named `tx` the same folder as DumpgameServer.exe. This is where the games will dump to, and the program won't dump if the folder is missing.
 
23. Start Warhammer Vermintide 2, hit "A", if everything goes right you should see the files being transferred to your PC in the terminal window running DumpgameServer.exe. If the DumpgameServer.exe exits with no files transferred, then maybe your game wasn't compatible.
 
C. Restoring Games after Dumping


You may notice that your game might not start after successfully running prepare_gamedump.xml, and it will be stuck in an updating state.  
You may notice that your game might not start after successfully running prepare_gamedump.xml, and it will be stuck in an updating state.  


1. Uninstall the game from the internal storage. The Xbox may appear to be stuck when attempting to uninstall the game, but be patient and if reboot until the game is gone from Internal Storage.
# Uninstall the game from the internal storage. The Xbox may appear to be stuck when attempting to uninstall the game, but be patient and if reboot until the game is gone from Internal Storage.
# Copy the game over from USB External Storage to the Internal Storage via the Storage Devices option in Settings.
# Use Game Script to obtain a reverse shell. Copy the license for game from USB flash drive to S:\Clip.
# Reboot Xbox, then start the game. It will get the game ready and then launch.


2. Copy the game over from USB External Storage to the Internal Storage via the Storage Devices option in Settings.
=== Warhammer Reverse Shell (GameOS) ===


3. Do Collateral Damage/Game Script exploit. Copy license for game from USB flash drive to S:\Clip
In the event that you want to see what files were streamed to the Warhammer XVD, you can open up a reverse shell into Warhammer.


4. Reboot Xbox, then start the game. It will get the game ready and then launch.
# Double-click `warhammer_reverse_shell.bat`. It will open a NetCat instance and a second window showing "Waiting for connection...".
 
# Launch Warhammer Vermintide 2 and press "A" on the title screen. You should now have a reverse shell.
# Enter `T:` to change to the T: drive and enter `dir` to see the contents streamed over from your chosen game. All contents of this folder will be uploaded to your PC if you exit and run the `dump_game.bat` instead.


== Troubleshooting ==
== Troubleshooting ==


🛠️Cannot find the file specified error:
* Cannot find the file specified error: <pre>The "PrepareGameDump" task failed unexpectedly. System.IO.FileNotFoundException: The system cannot find the file specified (0x80070002)</pre>
 
** Make sure the game is installed on the Xbox's Internal Storage. </li></li>
The "PrepareGameDump" task failed unexpectedly
** In prepare_gamedump.xml, check if the content ID and license file paths in the "edit me" section match the desired game as specified in your Licenses.txt file.  
System.IO.FileNotFoundException: The system cannot find the file specified (0x80070002)
* There is not enough disk space error: <pre> D:\prepare_gamedump.xml(529,7): error MSB4018: The "PrepareGamedump" task failed unexpectedly. D:\prepare_gamedump.xml(529,7): error MSB4018: System.Runtime.InteropServices.COMException (0x80070070): There is not enough space on the disk. (0x80070070) </pre>
I. Make sure the game is installed on the Xbox's Internal Storage.
** This means that the Temp content partition on your Xbox is too small, it must be resized. Likely, this indicates that the game is >39GB in size. A guide has not yet been written for how to resize this partition.  
 
* Only one file is dumped:
II. In prepare_gamedump.xml, check if the content id of the game matches the XVC file.
** This occurs if you do not have a proper license for a game. It will dump a plaintext appxmanifest.xml successfully and then attempt to dump the next file but it will be 0 bytes and hang. If it's a disc based game, ensure that the disc is inserted and you configured prepare_gamedump.xml to point to the license on the disc (O: drive).
* No files are dumped:  
 
** Sometimes, it will hang on the first file. Re-run `dump_game.bat` and open Warhammer Vermintide 2 to try again.
To verify, copy game to USB drive via the dash.
** Some games, such as Tony Hawk's Pro Skater 1+2 seem to not be compatible. This generally happens if the file streaming portion of the process completes extremely quickly (e.g. 10 seconds), as it did not stream files to the temporary XVD. You can use the Warhammer reverse shell section above to check if any files were loaded into the temporary XVD.
 
* The Xbox never connects to the PC:
Then on a PC use Xbox One External Storage Device Converter (https://digiex.net/threads/xbox-one-external-usb-storage-device-converter-xbox-one-formatted-usb-drives-on-pc.13583/)
** If no connection is ever made from your Xbox, check your firewall rules. If you only select "Private network" when prompted to add exclusions for the programs, double check that your network is set to Private instead of Public. Also check that your PC's IP address has not changed from what you configured in the text files.
 
Convert drive to PC format. The games will be named after the content ID. If you have multiple games on the drive, you can use the file size to determine which is the XVC of the game you want (won't have a file extension but it's a XVC).  
III. Check that you're using the right license for the game.
 
 
🛠️There is not enough disk space error:
 
D:\prepare_gamedump.xml(529,7): error MSB4018: The "PrepareGamedump" task failed unexpectedly.
D:\prepare_gamedump.xml(529,7): error MSB4018: System.Runtime.InteropServices.COMException (0x80070070): There is not enough space on the disk. (0x80070070)
This means that the Temp Content Partition on your Xbox is too small, it must be resized.  
 
Edited Thursday at 01:20 AM by BirdonWheels

Latest revision as of 20:42, 16 August 2024

Exclamation-triangle-fill.svgEnsure that your network is setup to prevent the Xbox from reaching the internet. It's recommended to block your Xbox's MAC addresses from accessing the WAN in your router settings, to turn off auto-updates, and to set the DNS setting on the Xbox to 127.0.0.1.


This page will walk you through dumping Xbox One/Series games on a compatible firmware device.

Credit to InvoxiPlayGames/Emma and XboxOneResearch for most of these tools, BirdonWheels for the original guide which was used as the basis for this page, and burninrubber0 from the Xbox Scene Discord for the dump.bat script. A video tutorial can be found on KsAmJ Gaming & Tech's YouTube channel.

Dumping Games

Pre-requisites

  • Xbox One / Series firmware version 4478.
    • Not working on firmware 4908 or 4909, as the Temp Drive is 0 bytes
    • Edit this if it works for you on other firmware!
  • A copy of Warhammer Vermintide 2:
    • Digital copy will allow you to dump a disc OR digital game
    • Disc copy will allow you to dump a digital game
  • The game you are dumping must be installed on your Internal Storage.
  • The game you are dumping must be able to be launched.
    • "Check your connection" - This error will show if it successfully launched, but the game requires an internet connection. These games can be dumped.
    • "To start this game or app you need to be signed in to the Xbox network." - You do not have a valid license for the game. It either was purchased and never launched or an expired Game Pass game. You cannot dump these games.
    • "Use this Xbox regularly? Make it your home Xbox so you can play games you own, even offline." - Displayed when you attempt to launch a game licensed to an account that does not have this Xbox set as the home Xbox. You cannot dump these games.
  • Backup the game you want to dump, as the original copy will break. Copy the game to a USB flash drive via the Xbox dashboard.
  • Games that are less than 2GB, or larger than 39GB will not be able to be dumped via this method unless you resize your temp partition, which is not covered here yet.
  • Preferably connect your Xbox via ethernet, as Wi-Fi connections have been shown to drop files out of dumps.
  • Certain games appear to not be dumpable using this method. The known issue games are:
    • Minecraft
    • Undertale

PC Preparation

  1. Download the File:Xbox One Game Dumping Pack v1.0.zip and extract it to your PC. This contains everything you need (except Microsoft .NET) to dump games.
  2. Download the .NET 6.0 SDK x86_64 Binary for Windows.
  3. Format a USB flash drive as NTFS.
  4. Extract dotnet-sdk-6.0.424-win-x64.zip into the \Copy to Flash Drive\dotnet\ folder.
  5. Copy the contents of the Copy to Flash Drive folder to the root of your USB flash drive and safely eject the flash drive.
  6. Open the OneDumpgame folder and open dumpgame.lua in Notepad. Replace the IP address near the top with the IP of your PC and save.
  7. Open the collateral_damage_v1_remote folder and edit gamescript_autosave_network.txt. Replace YOUR IP HERE with the IP address of the PC you are going to run the exploit from.
  8. In the LuaFFI-CE folder, edit stage1.lua and replace "YOUR IP HERE" in local serverIp = "YOUR IP HERE" with your PC's IP address.
  9. In the LuaFFI-CE folder, edit stage2.lua and replace "YOUR IP HERE" in local serverIp = "YOUR IP HERE" with your PC's IP address.

Game Script Reverse Shell (SystemOS)

A successful execution of Collateral Damage for Xbox One/Series, returning a reverse shell.

Perform the Collateral Damage Game Script exploit as detailed below to obtain a reverse shell.

  1. If you haven't already, launch Warhammer Vermintide 2, press A to start game, and choose "Use Offline". This will create a game save on your hard drive.
  2. Run miniweb.exe. If it asks for permissions to run, check both boxes and select "Allow Access". A command prompt window should open.
    • Note the IP address and port listed, e.g. 192.168.1.77:8000.
  3. On your Xbox, open Microsoft Edge and enter the full IP address and port into the address bar (e.g. 192.168.1.77:8000). It should list the file present in the htdocs folder on your PC.
  4. Select gamescript_autosave_network.txt. It should display the contents of the script. Hover your cursor before the very first character, then hold A and drag the left stick down to highlight all of the text. Let go of A and then select "Copy" from the small menu that opens up.
  5. Launch the Game Script app. Use the D-PAD to highlight "Paste code" and press A to paste the contents of the file you copied. Press B to close the keyboard.
  6. Double-click gamescript_reverse_shell.bat. It will open a window for the server process with the last line being "Server listening..." and a second window running NetCat with the text "listening on [any] 7070 ...".
    • It may ask multiple times for permission to run on the network, check both boxes and select "Allow Access".
  7. On your Xbox, open the Game Script app if not already there. Hold X and press RB to select "Windows", then let go of X.
  8. Using the D-PAD, select "Show Code Run window" and press A. On the new window that pops up, highlight the "Run code once" button and press A.
    • After about 10-60 seconds, some traffic will appear on the payload and NetCat command windows, and if successful, you will have a reverse shell on the NetCat command window to be able to run commands against the Xbox.
    • If the Game Script app or the NetCat window closes, re-launch them and try again. If after multiple attempts it is still crashing, go to Settings > General > Power Options > Shutdown now, then turn your console back on and try again.

Modifying the Vermintide Game Save

These steps will guide you through modifying your Vermintide game save to be able to run the game dumper.

  1. In the reverse shell, enter the following commands:
     set DOTNET_CLI_TELEMETRY_OPTOUT=1
     D:\dotnet\dotnet.exe msbuild D:\mount_connectedstorage.xml 
    
    • The previous command will output the Harddisk# where your saves are located (e.g. XVD Mounted to \\?\GLOBALROOT\Device\Harddisk16\Partition1 indicates it is on Harddisk16). The rest of this guide will use Harddisk16 as an example.
  2. In the reverse shell, enter the following command, substituting your own Harddisk#, and your game saves and licenses will be dumped:
    • mklink /j T:\connectedStorage "\\?\GLOBALROOT\Device\Harddisk16\Partition1\"
      T:
      cd connectedStorage
      D:\dump.bat
      mkdir D:\Licenses
      copy S:\Clip D:\Licenses
      
  3. When it completes, unplug your USB flash drive and plug it into your PC.
  4. On the flash drive, navigate to \xb1\saves\connectedStorage\u_################_C05F0100-EAC5-49EB-943F-1A0E3C108361\. This is your save for Warhammer Vermintide 2. Open the sole folder and there should be two files, one of them has a unique ID and the other is named "container". Open the unique ID file with notepad, delete all of the contents, and then paste the entire contents of LuaFFI-CE\stage1.lua into it and save.
  5. Write down the path to this game save for future use, e.g. \xb1\saves\connectedStorage\u_1111111111111111_C05F0100-EAC5-49EB-943F-1A0E3C108361\{AABBCCDD-EEFF-GGHH-IIJJ-KKLLMMNNOOPP}.
  6. Safely Eject your USB flash drive and plug it into your Xbox.
  7. In the reverse shell, enter the following command, substituting your own path, and type "All" when prompted to overwrite:
    • copy D:\xb1\saves\connectedStorage\{AABBCCDD-EEFF-GGHH-IIJJ-KKLLMMNNOOPP}  T:\connectedStorage\u_1111111111111111_C05F0100-EAC5-49EB-943F-1A0E3C108361\{AABBCCDD-EEFF-GGHH-IIJJ-KKLLMMNNOOPP}
      

Finding your License File

Digital Game

  1. On your PC, copy the contents of the Licenses folder on the flash drive into the \LicenseClipFinder\Clips\ folder.
  2. Double click run_license_clip_finder.bat to start LicenseClipFinder. It will output a "Licenses.txt" file which will contain the content ID and license path associated with all of your games.
    • If you do not have a recent enough .NET version, it may prompt you with a link to download it from Microsoft. Install it and try again.
  3. If not already done, copy the game you wish to dump to a USB flash drive, as the dumping process will break the game and it will be useful to have a backup.

Disc Game

  1. In your the reverse shell, enter the following command:
      type O:\MSXC\Metadata\catalog.js
      
    • The content ID of the game will be listed, e.g. 7049126b-609b-4d08-b5cb-0d407e8dfec1. It may be spaced out, so you will need to copy the value after "content ID" and remove the spaces. Note this information for later.
  2. In your the reverse shell, enter the following command:
      dir O:\Licenses\
      
    • Note the name of the file it reports back, e.g. O:\Licenses\License0.xml. Note this license path for later.

Dumping your Game

The next steps will walk you through setting up the server that will receive the game dump(s).

  1. Reboot your Xbox. This is required to unlink T:\connectedStorage.
  2. Start Warhammer Vermintide 2. Press the Xbox (home) button, then on the Warhammer icon press Start and choose "Quit".
  3. Plug your flash drive into the Xbox.
  4. On your PC, run gamescript_reverse_shell.bat again.
  5. Open the Game Script app and run the exploit again by holding X and pressing RB to select window, selecting "Show Code Run window", and clicking "Run code once" to obtain a reverse shell again.
  6. In the reverse shell, enter:
      D:\dotnet\dotnet.exe msbuild D:\get_tempxvd_owners.xml
      
  7. Temporary XVD(s) will be listed. Note the value listed for "Vermintide2", e.g. 00. Avoid launching any games on your system from this point onward, as it may change this value.
  8. Plug your flash drive into your PC and edit prepare_gamedump.xml. Search for /* EDIT ME */ and you will find a marked section toward the bottom with three lines that you will need to edit:
    • Replace the 00 in temp00 with the value found in the last step (if it's not 00)
    • Replace PUT-CONTENT-ID-OF-GAME-HERE with the content ID for the game you want to dump. This was listed in your Licenses.txt file (digital game) or identified earlier when looking at your O: drive (disc game).
    • Replace S:\Clip\PUT-LICENSE-FILE-NAME-HERE with the license path of the game you want to dump. This was listed in your Licenses.txt file (digital game) or identified earlier when looking at your O: drive (disc game).
    • If using a Series console, change XTE to XUC in this line as follows: const string TEMP_XVD_PATH = @"[XUC:]\temp00"; // Replace with temp<NUM> of exploited game
  9. Plug your USB flash drive back into your Xbox.
  10. In the reverse shell, enter:
      D:\dotnet\dotnet.exe msbuild D:\prepare_gamedump.xml
      
  11. If successful, it will stream the files into the temp XVD for Warhammer Vermintide 2 and constantly update the status. When complete, it will show "License file loaded".
    • If the game is >39GB, it may fail out and show the error "There is not enough space on the disk".
  12. Double-click dump_game.bat. It will open another NetCat instance and a second window showing "Waiting for connection...".
    • It may ask multiple times for permission to run on the network, check both boxes and select "Allow Access".
  13. Launch Warhammer Vermintide 2 and press "A" on the title screen. If everything was done correctly, the game should freeze and you should see traffic in one of the command prompt windows and the files being written to .\OneDumpgame\tx\.
    • If anything appears wrong, see the troubleshooting section below. You can always close Warhammer Vermintide 2 and re-open it, repeating this step.
  14. It's highly recommended to copy the contents of .\OneDumpgame\tx\ to another folder and dump the game again. Afterwards, check the file size of both folders to make sure they exactly match, verifying that you had a good dump.

Optional Steps

Restoring Games after Dumping

You may notice that your game might not start after successfully running prepare_gamedump.xml, and it will be stuck in an updating state.

  1. Uninstall the game from the internal storage. The Xbox may appear to be stuck when attempting to uninstall the game, but be patient and if reboot until the game is gone from Internal Storage.
  2. Copy the game over from USB External Storage to the Internal Storage via the Storage Devices option in Settings.
  3. Use Game Script to obtain a reverse shell. Copy the license for game from USB flash drive to S:\Clip.
  4. Reboot Xbox, then start the game. It will get the game ready and then launch.

Warhammer Reverse Shell (GameOS)

In the event that you want to see what files were streamed to the Warhammer XVD, you can open up a reverse shell into Warhammer.

  1. Double-click warhammer_reverse_shell.bat. It will open a NetCat instance and a second window showing "Waiting for connection...".
  2. Launch Warhammer Vermintide 2 and press "A" on the title screen. You should now have a reverse shell.
  3. Enter T: to change to the T: drive and enter dir to see the contents streamed over from your chosen game. All contents of this folder will be uploaded to your PC if you exit and run the dump_game.bat instead.

Troubleshooting

  • Cannot find the file specified error:
    The "PrepareGameDump" task failed unexpectedly. System.IO.FileNotFoundException: The system cannot find the file specified (0x80070002)
    • Make sure the game is installed on the Xbox's Internal Storage.
    • In prepare_gamedump.xml, check if the content ID and license file paths in the "edit me" section match the desired game as specified in your Licenses.txt file.
  • There is not enough disk space error:
     D:\prepare_gamedump.xml(529,7): error MSB4018: The "PrepareGamedump" task failed unexpectedly. D:\prepare_gamedump.xml(529,7): error MSB4018: System.Runtime.InteropServices.COMException (0x80070070): There is not enough space on the disk. (0x80070070) 
    • This means that the Temp content partition on your Xbox is too small, it must be resized. Likely, this indicates that the game is >39GB in size. A guide has not yet been written for how to resize this partition.
  • Only one file is dumped:
    • This occurs if you do not have a proper license for a game. It will dump a plaintext appxmanifest.xml successfully and then attempt to dump the next file but it will be 0 bytes and hang. If it's a disc based game, ensure that the disc is inserted and you configured prepare_gamedump.xml to point to the license on the disc (O: drive).
  • No files are dumped:
    • Sometimes, it will hang on the first file. Re-run dump_game.bat and open Warhammer Vermintide 2 to try again.
    • Some games, such as Tony Hawk's Pro Skater 1+2 seem to not be compatible. This generally happens if the file streaming portion of the process completes extremely quickly (e.g. 10 seconds), as it did not stream files to the temporary XVD. You can use the Warhammer reverse shell section above to check if any files were loaded into the temporary XVD.
  • The Xbox never connects to the PC:
    • If no connection is ever made from your Xbox, check your firewall rules. If you only select "Private network" when prompted to add exclusions for the programs, double check that your network is set to Private instead of Public. Also check that your PC's IP address has not changed from what you configured in the text files.