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
After being announced last week, the first of two broadcasts is set to go live later today with a stark focus on The Legend of Zelda and its 40th anniversary...
It's that time again folks, an update for the Switch and Switch 2, and a surprisingly big one at that! At lease for folks on the Switch 2. The most notable feature...
The PlayStation 5 scene has received a massive breakthrough with the public release of Relapse, a new exploit chain developed by Nathan Fargo in collaboration with...
It is with a heavy heart that I announce the departure of our beloved Chary from the position of Chief Editor. Chary took over early 2021 and has done a wonderful job...
The second of a two-part special, a more traditional Nintendo Direct is set to air today. Unlike the Zelda Direct the contents of this one is still relatively up in...
After an accidental leaking of their review video from Linus Tech Tips last week, we somewhat knew that news on Steam's latest VR venture was imminent. Today the...
Over the weekend a number of Switch and Switch 2 related subreddits came alive with people reporting bans on their Switch 2 consoles out of nowhere. The error code...
Announced a few days ago, Nintendo of America have today launched their Customer Appreciation Sale. Featuring 30% discounts across a wide range of popular first-party...
The 2007 Nintendo Wii classic Super Mario Galaxy has reportedly been 100% decompiled by the SMGCommunity under the project codename Petari, and now a standalone PC...
It's been something of a quiet week in the gaming space, with the deluge of big hitters trying to find their place before GTA 6 launches really kicking off next week...
After being announced last week, the first of two broadcasts is set to go live later today with a stark focus on The Legend of Zelda and its 40th anniversary...
It's been something of a quiet week in the gaming space, with the deluge of big hitters trying to find their place before GTA 6 launches really kicking off next week...
The in-progress Switch port of the 2013 Rockstar Games Grand Theft Auto V has been forced to end progress after Take-Two Interactive has threatened legal action...
It is with a heavy heart that I announce the departure of our beloved Chary from the position of Chief Editor. Chary took over early 2021 and has done a wonderful job...
The second of a two-part special, a more traditional Nintendo Direct is set to air today. Unlike the Zelda Direct the contents of this one is still relatively up in...
After an accidental leaking of their review video from Linus Tech Tips last week, we somewhat knew that news on Steam's latest VR venture was imminent. Today the...
Announced a few days ago, Nintendo of America have today launched their Customer Appreciation Sale. Featuring 30% discounts across a wide range of popular first-party...
From my post earlier this week you probably already know which game I'm talking about. Fire Emblem released yesterday to some pretty rave reviews. Looking at...
A few days ago Chary stepped down as Chief Editor after 5 wonderful years, and everyone guessed the seat wouldn't stay empty for very long. Back in 2021 I proudly...
The PlayStation 5 scene has received a massive breakthrough with the public release of Relapse, a new exploit chain developed by Nathan Fargo in collaboration with...