hello can someone say to me if a total dump of the sd( after rednand dump) with dd is safe enough or does i have to dump it with sdnandextractor on windows?
i've used dd in=/dev/mmc of=nand.bin
this 64gb file can generate the 3 .bin files like sdnandextractor right?
-this 64gb is a complete dump of the device, just make sure you are not only dumping a partition you have to dump the device.
-as it is a complete dump its a save backup
-those 3x .bin files are data somewhere in this 64gb image yes
if you need those 3x .bin files you have to set the proper boundary instead of dumping it completely.
Linux/OSX dumping instructions
No warranty but this should work for 32gb (and if adjusted for 8gb) wiiu and dump slc, slccmt and mlc into the current directory.
You need to know:
- The device name of the SD card in your system
- What kind of WiiU you are using (8GB or 32GB)
What you should do/adjust:
- You need to change the source to your device (not partition 1 on the device)
- If you want to backup the dump from an 8GB wiiu change "MLCSIZE=$MLCSIZE32" to "MLCSIZE=$MLCSIZE8"
- Unmount the first partition of the sdcard (if mounted)
- Add relative or absolute path to destination directory if wanted
- Add shebang if wanted
- Make it executable
- Run the script
The Script:
SOURCE=/dev/disk2
DESTINATION=.
BLOCKSIZE=512
I've checked that the shasum from both methods are the same!
Btw. it probably makes sense to make the start-stopbits for each image a constant instead of calculating them.
I added blocksize as a variable as it could improve writespeed not using the default.
Might also be usefull to use variables for the output filenames.
echo "This tool extracts slc, slccmpt and mlc from a device (probably your sd-card)"
echo "It does just dump sectors, it does not even verify the source is a valid rednand"
echo "NO WARRANTY"
echo
function print_help {
echo "Usage: $0 [TYPE] [MODE] [SOURCE] [DESTINATION]"
echo " type 8gb, 32gb"
echo " mode all, slc, slccmpt, mlc"
echo " source absolute path to source"
echo " destination absolute path to destination"
echo
echo "All arguments except destination are mandatory"
echo "If you don't pass the destination parameter it will use the current directory"
echo
echo "E.g.: "$0 32gb all /dev/zero /tmp/
}
# verify input all arguments are available
ERROR=false
if [ ${#WIIU_TYPE} -lt 1 ]
then
echo "Error: No WiiU Type specified"
ERROR=true
else
if [ "$WIIU_TYPE" == "8gb" ]
then
MLCSIZE=$MLCSIZE8
elif [ "$WIIU_TYPE" == "32gb" ]
then
MLCSIZE=$MLCSIZE32
else
echo "Error: $WIIU_TYPE is not a valid WiiU Type"
ERROR=true
fi
fi
if [ ${#MODE} -lt 1 ]
then
echo "Error: No mode specified"
ERROR=true
else
if [ "$MODE" == "slc" ]
then
true
elif [ "$MODE" == "slccmpt" ]
then
true
elif [ "$MODE" == "mlc" ]
then
true
elif [ "$MODE" == "all" ]
then
true
else
echo "Error: $MODE is not a valid Mode"
ERROR=true
fi
fi
if [ ${#SOURCE} -lt 1 ]
then
echo "Error: No source specified"
ERROR=true
fi
if [ $ERROR == "true" ]
then
echo
echo
print_help
exit
else
if [ ${#DESTINATION} -lt 1 ]
then
echo "Error: No destination specified"
echo "Using current directory:"
pwd
echo
DESTINATION=.
fi
fi
function verify_slc {
# verify that nothing gets overwritten
if [ -e $DESTINATION/$SLCIMAGENAME ]
then
echo $DESTINATION/$SLCIMAGENAME already exists
echo no dumps have been created
echo exiting
exit
fi
}
function verify_slccmpt {
if [ -e $DESTINATION/$SLCCMPTIMAGENAME ]
then
echo $DESTINATION/$SLCCMPTIMAGENAME already exists
echo no dumps have been created
echo exiting
exit
fi
}
function verify_mlc {
if [ -e $DESTINATION/$MLCIMAGENAME ]
then
echo $DESTINATION/$MLCIMAGENAME already exists
echo no dumps have been created
echo exiting
exit
fi
}
function verify_all {
verify_slc
verify_slccmpt
verify_mlc
}
#checking if dd is installed
ddstatus=true
which dd > /dev/null 2>&1 || ddstatus=false
if [ $ddstatus == "false" ]
then
echo "dd is not installed"
echo "exiting now"
exit
fi
# check if we can use progress on dd
ddstatus=true
dd status=progress if=/dev/zero of=/dev/null count=1 > /dev/null 2>&1 || ddstatus=false
if [ $ddstatus == "true" ]
then
ddcommand="dd status=progress"
echo "using dd with status as GNU Coreutils is 8.24+ is installed"
else
ddcommand="dd"
echo "using dd without status as GNU Coreutils is 8.24+ is NOT installed"
fi
echo
# start the dump according to mode
function start_dump {
if [ "$MODE" == "all" ]
then
verify_all
echo "The following commands will be executed:"
echo $ddcommand bs=$BLOCKSIZE if=$SOURCE of=$DESTINATION/$SLCIMAGENAME count=$SLCCOUNT skip=$SLCSKIP
echo $ddcommand bs=$BLOCKSIZE if=$SOURCE of=$DESTINATION/$SLCCMPTIMAGENAME count=$SLCCMPTCOUNT skip=$SLCCMPTSKIP
echo $ddcommand bs=$BLOCKSIZE if=$SOURCE of=$DESTINATION/$MLCIMAGENAME count=$MLCCOUNT skip=$MLCSKIP
read -n1 -r -p "Press any key to start the dumping process..." key
echo
dump_all
elif [ "$MODE" == "slc" ]
then
verify_slc
echo "The following command will be executed:"
echo $ddcommand bs=$BLOCKSIZE if=$SOURCE of=$DESTINATION/$SLCIMAGENAME count=$SLCCOUNT skip=$SLCSKIP
read -n1 -r -p "Press any key to start the dumping process..." key
echo
dump_slc
elif [ "$MODE" == "slccmpt" ]
then
verify_slccmpt
echo "The following command will be executed:"
echo $ddcommand bs=$BLOCKSIZE if=$SOURCE of=$DESTINATION/$SLCCMPTIMAGENAME count=$SLCCMPTCOUNT skip=$SLCCMPTSKIP
read -n1 -r -p "Press any key to start the dumping process..." key
echo
dump_slccmpt
elif [ "$MODE" == "mlc" ]
then
verify_mlc
echo "The following command will be executed:"
echo $ddcommand bs=$BLOCKSIZE if=$SOURCE of=$DESTINATION/$MLCIMAGENAME count=$MLCCOUNT skip=$MLCSKIP
read -n1 -r -p "Press any key to start the dumping process..." key
echo
dump_mlc
fi
}
function dump_slc {
#dumping SLC
echo "Dumping SLC to "$DESTINATION/$SLCIMAGENAME
$ddcommand bs=$BLOCKSIZE if=$SOURCE of=$DESTINATION/$SLCIMAGENAME count=$SLCCOUNT skip=$SLCSKIP
echo
}
function dump_slccmpt {
#dumping SLCCMPT
echo "Dumping SLCCMPT to "$DESTINATION/$SLCCMPTIMAGENAME
$ddcommand bs=$BLOCKSIZE if=$SOURCE of=$DESTINATION/$SLCCMPTIMAGENAME count=$SLCCMPTCOUNT skip=$SLCCMPTSKIP
echo
}
function dump_mlc {
#dumping MLC
echo "Dumping MLC to "$DESTINATION/$MLCIMAGENAME
$ddcommand bs=$BLOCKSIZE if=$SOURCE of=$DESTINATION/$MLCIMAGENAME count=$MLCCOUNT skip=$MLCSKIP
echo
}
function dump_all {
dump_slc
dump_slccmpt
dump_mlc
}
echo "Like I said I can't guarantee that your dump will be functional.."
echo "For me the checksums of the resulting files have been the same like the one from dimoks tool, so i guess it works"
echo "You are doing this on your own risk!"
echo
read -n1 -r -p "Press enter/space to continue..." key
echo
if [ "$key" = '' ]; then
start_dump
else
echo "No enter/space detected"
echo "Exiting now"
exit
fi
echo "This tool extracts slc, slccmpt and mlc from a device (probably your sd-card)"
echo "It does just dump sectors, it does not even verify the source is a valid rednand"
echo "NO WARRANTY"
echo
function print_help {
echo "Usage: $0 [TYPE] [MODE] [SOURCE] [DESTINATION]"
echo " type 8gb, 32gb"
echo " mode all, slc, slccmpt, mlc"
echo " source absolute path to source"
echo " destination absolute path to destination"
echo
echo "All arguments except destination are mandatory"
echo "If you don't pass the destination parameter it will use the current directory"
echo
echo "E.g.: "$0 32gb all /dev/zero /tmp/
}
# verify input all arguments are available
ERROR=false
if [ ${#WIIU_TYPE} -lt 1 ]
then
echo "Error: No WiiU Type specified"
ERROR=true
else
if [ "$WIIU_TYPE" == "8gb" ]
then
MLCSIZE=$MLCSIZE8
elif [ "$WIIU_TYPE" == "32gb" ]
then
MLCSIZE=$MLCSIZE32
else
echo "Error: $WIIU_TYPE is not a valid WiiU Type"
ERROR=true
fi
fi
if [ ${#MODE} -lt 1 ]
then
echo "Error: No mode specified"
ERROR=true
else
if [ "$MODE" == "slc" ]
then
true
elif [ "$MODE" == "slccmpt" ]
then
true
elif [ "$MODE" == "mlc" ]
then
true
elif [ "$MODE" == "all" ]
then
true
else
echo "Error: $MODE is not a valid Mode"
ERROR=true
fi
fi
if [ ${#SOURCE} -lt 1 ]
then
echo "Error: No source specified"
ERROR=true
fi
if [ $ERROR == "true" ]
then
echo
echo
print_help
exit
else
if [ ${#DESTINATION} -lt 1 ]
then
echo "Error: No destination specified"
echo "Using current directory:"
pwd
echo
DESTINATION=.
fi
fi
function verify_slc {
# verify that nothing gets overwritten
if [ -e $DESTINATION/$SLCIMAGENAME ]
then
echo $DESTINATION/$SLCIMAGENAME already exists
echo no dumps have been created
echo exiting
exit
fi
}
function verify_slccmpt {
if [ -e $DESTINATION/$SLCCMPTIMAGENAME ]
then
echo $DESTINATION/$SLCCMPTIMAGENAME already exists
echo no dumps have been created
echo exiting
exit
fi
}
function verify_mlc {
if [ -e $DESTINATION/$MLCIMAGENAME ]
then
echo $DESTINATION/$MLCIMAGENAME already exists
echo no dumps have been created
echo exiting
exit
fi
}
function verify_all {
verify_slc
verify_slccmpt
verify_mlc
}
#checking if dd is installed
ddstatus=true
which dd > /dev/null 2>&1 || ddstatus=false
if [ $ddstatus == "false" ]
then
echo "dd is not installed"
echo "exiting now"
exit
fi
# check if we can use progress on dd
ddstatus=true
dd status=progress if=/dev/zero of=/dev/null count=1 > /dev/null 2>&1 || ddstatus=false
if [ $ddstatus == "true" ]
then
ddcommand="dd status=progress"
echo "using dd with status as GNU Coreutils is 8.24+ is installed"
else
ddcommand="dd"
echo "using dd without status as GNU Coreutils is 8.24+ is NOT installed"
fi
echo
# start the dump according to mode
function start_dump {
if [ "$MODE" == "all" ]
then
verify_all
echo "The following commands will be executed:"
echo $ddcommand bs=$BLOCKSIZE if=$SOURCE of=$DESTINATION/$SLCIMAGENAME count=$SLCCOUNT skip=$SLCSKIP
echo $ddcommand bs=$BLOCKSIZE if=$SOURCE of=$DESTINATION/$SLCCMPTIMAGENAME count=$SLCCMPTCOUNT skip=$SLCCMPTSKIP
echo $ddcommand bs=$BLOCKSIZE if=$SOURCE of=$DESTINATION/$MLCIMAGENAME count=$MLCCOUNT skip=$MLCSKIP
read -n1 -r -p "Press any key to start the dumping process..." key
echo
dump_all
elif [ "$MODE" == "slc" ]
then
verify_slc
echo "The following command will be executed:"
echo $ddcommand bs=$BLOCKSIZE if=$SOURCE of=$DESTINATION/$SLCIMAGENAME count=$SLCCOUNT skip=$SLCSKIP
read -n1 -r -p "Press any key to start the dumping process..." key
echo
dump_slc
elif [ "$MODE" == "slccmpt" ]
then
verify_slccmpt
echo "The following command will be executed:"
echo $ddcommand bs=$BLOCKSIZE if=$SOURCE of=$DESTINATION/$SLCCMPTIMAGENAME count=$SLCCMPTCOUNT skip=$SLCCMPTSKIP
read -n1 -r -p "Press any key to start the dumping process..." key
echo
dump_slccmpt
elif [ "$MODE" == "mlc" ]
then
verify_mlc
echo "The following command will be executed:"
echo $ddcommand bs=$BLOCKSIZE if=$SOURCE of=$DESTINATION/$MLCIMAGENAME count=$MLCCOUNT skip=$MLCSKIP
read -n1 -r -p "Press any key to start the dumping process..." key
echo
dump_mlc
fi
}
function dump_slc {
#dumping SLC
echo "Dumping SLC to "$DESTINATION/$SLCIMAGENAME
$ddcommand bs=$BLOCKSIZE if=$SOURCE of=$DESTINATION/$SLCIMAGENAME count=$SLCCOUNT skip=$SLCSKIP
echo
}
function dump_slccmpt {
#dumping SLCCMPT
echo "Dumping SLCCMPT to "$DESTINATION/$SLCCMPTIMAGENAME
$ddcommand bs=$BLOCKSIZE if=$SOURCE of=$DESTINATION/$SLCCMPTIMAGENAME count=$SLCCMPTCOUNT skip=$SLCCMPTSKIP
echo
}
function dump_mlc {
#dumping MLC
echo "Dumping MLC to "$DESTINATION/$MLCIMAGENAME
$ddcommand bs=$BLOCKSIZE if=$SOURCE of=$DESTINATION/$MLCIMAGENAME count=$MLCCOUNT skip=$MLCSKIP
echo
}
function dump_all {
dump_slc
dump_slccmpt
dump_mlc
}
echo "Like I said I can't guarantee that your dump will be functional.."
echo "For me the checksums of the resulting files have been the same like the one from dimoks tool, so i guess it works"
echo "You are doing this on your own risk!"
echo
read -n1 -r -p "Press enter/space to continue..." key
echo
if [ "$key" = '' ]; then
start_dump
else
echo "No enter/space detected"
echo "Exiting now"
exit
fi
It's a good time to be a first generation Pokemon fan. But when was it not a good time to be one? In recent weeks we've seen a native LOVE2D recreation of Pokemon Red...
Images for the rumoured Zelda-themed limited edition Switch 2 for The Legend of Zelda's 40th Anniversary have started to leak online.
The leak shows only the...
Hoenn to the ROM hacking scene is like Kanto to the official games. It's everywhere. At this point you've probably played through Pokemon Emerald with a party of...
After being announced last year, the fan-made remake Gamma Emerald has finally gotten its first early access release. A complete rebuild of fan-favourite Pokemon...
The golden age of emulation on the Switch continues as a native Dolphin port was released by @Nagaa earlier today. Included in this port, we're looking at cover art...
With the latest entry to the Fire Emblem series, Fortune's Weave, set to launch in September, Nintendo have today announced a new Nintendo Direct to put it soundly in...
Though we knew all the way back in May that this was coming, the exact numbers remained a mystery for prospective Nintendo gamers in the UK. If you happen to have...
Harbour Masters were cutting it close with this one, promising a release of their Banjo Kazooie PC port "Lighthouse" by the end of this month. And they did not...
So I got pretty lucky on this one. Having ordered the physical version of Oblivion Remastered on Switch 2, I had it delivered earlier today, beating out the official...
Over the past week, rumors have started swirling as Redditors (probably correctly) deduced the title of the upcoming Elder Scrolls game, which will apparently be...
Though we knew all the way back in May that this was coming, the exact numbers remained a mystery for prospective Nintendo gamers in the UK. If you happen to have...
Images for the rumoured Zelda-themed limited edition Switch 2 for The Legend of Zelda's 40th Anniversary have started to leak online.
The leak shows only the...
After being announced last year, the fan-made remake Gamma Emerald has finally gotten its first early access release. A complete rebuild of fan-favourite Pokemon...
GBAtemp is and always has been an independent community. Since 2002 our staff have voluntarily kept the site running, added new forums, features, provided constant...
With the latest entry to the Fire Emblem series, Fortune's Weave, set to launch in September, Nintendo have today announced a new Nintendo Direct to put it soundly in...
Over the past week, rumors have started swirling as Redditors (probably correctly) deduced the title of the upcoming Elder Scrolls game, which will apparently be...
In the wake of Sony's shift to a digital-only ecosystem within the next year, Xbox have today announced a surprising scheme. Aiming to offer physical buyers the same...
It's a good time to be a first generation Pokemon fan. But when was it not a good time to be one? In recent weeks we've seen a native LOVE2D recreation of Pokemon Red...
Thanks to the recent decomplication efforts; The Minish Cap 3DS brings the Game Boy Advance classic Zelda title to your 3DS.
The port takes full advantage of the 3DS...
So I got pretty lucky on this one. Having ordered the physical version of Oblivion Remastered on Switch 2, I had it delivered earlier today, beating out the official...