@NAND_Manager @nm_menu labelsel -k -o -s "Select an option." nmopt_* goto nm_menu #goto options_main @nmopt_A_Backup_EmuNAND # EmuNAND backup GM9 script # This will create a backup named [SERIAL]_nandmin_???.bin # author: d0k3 set ERRORMSG "EmuNAND backup failed" set SUCCESSMSG "EmuNAND backup success" if ask "Create a EmuNAND backup in $[GM9OUT]?" findnot $[GM9OUT]/$[DATESTAMP]_$[SERIAL]_emunand_???.bin OUTPATH cp -h E:/nand_minsize.bin $[OUTPATH] echo "Backup created succesfully:\n$[OUTPATH]" end goto nm_menu @nmopt_X_Backup_SysNAND # SysNAND backup GM9 script # This will create a backup named [SERIAL]_nandmin_???.bin # author: d0k3 set ERRORMSG "SysNAND backup failed" set SUCCESSMSG "SysNAND backup success" if ask "Create a SysNAND backup in $[GM9OUT]?" findnot $[GM9OUT]/$[DATESTAMP]_$[SERIAL]_sysnand_???.bin OUTPATH cp -h S:/nand_minsize.bin $[OUTPATH] echo "Backup created succesfully:\n$[OUTPATH]" end goto nm_menu @nmopt_Y_Restore_EmuNAND # EmuNAND restore GM9 script # This will restore a backup from 0:/gm9/out, expecting the name scheme from the backup scripts # author: Kazuma77 set SUCCESSMSG "Successfully Restored EmuNAND." set ERRORMSG "EmuNAND not changed." if filesel "Select NAND Backup." $[GM9OUT]/*nand_???.bin NANDBAK if ask "Restore\n$[NANDBAK]\nto EmuNAND?" allow E:/nand.bin imgmount $[NANDBAK] if find I:/nand_minsize.bin NULL # Uncomment the "verify" command below to enable verification. # I left it out since EmuNAND isn't vital. # Besides, EmuNANDs don't even use their firm partitions. #verify I:/nand_minsize.bin set ERRORMSG "An error occurred during the transfer\nPlease try again." inject -n I:/nand_minsize.bin E:/nand.bin@0 rm -o -s 4:/data/$[EMUID0]/sysdata/00010011/00000000 imgumount else echo "Not a valid NAND backup." end end end goto nm_menu @nmopt_L_Restore_SysNAND_(Full) # SysNAND full restore GM9 script # This will restore a backup from 0:/gm9/out, expecting the name scheme from the backup scripts # author: Kazuma77 set SUCCESSMSG "Successfully Restored SysNAND." # Gateway used to protect EmuNAND firm partitions. # Old EmuNAND images updated while running Gateway could brick a device. # If you understand the risk, feel free to comment the next two lines. set ERRORMSG "This script requires ntrboot to run." chk $[HAX] "ntrboot" set ERRORMSG "SysNAND not changed." if filesel "Select NAND Backup." $[GM9OUT]/*nand_???.bin NANDBAK if ask "WARNING:\nSystem exploit will not be protected.\nNEVER use an EmuNAND image with this\nscript - it may brick your device.\n \nFully restore\n$[NANDBAK]\nto SysNAND?" allow S:/nand.bin imgmount $[NANDBAK] if verify I:/nand_minsize.bin set ERRORMSG "An error occurred during the transfer\nPlease try again." inject -n I:/nand_minsize.bin S:/nand.bin@0 rm -o -s 1:/data/$[SYSID0]/sysdata/00010011/00000000 imgumount else echo "Not a valid NAND backup." end end end goto nm_menu @nmopt_R_Restore_SysNAND_(Safe) # SysNAND safe restore GM9 script # This will restore a backup from 0:/gm9/out, expecting the name scheme from the backup scripts # author: Kazuma77 set SUCCESSMSG "Successfully Restored SysNAND." set ERRORMSG "No qualifying exploit was found.\nAborting to avoid bricking the unit." chk -u $[HAX] "" # A "safe" restore has a high risk of bricking a Retail NAND. # There is no way to know if a system is exploited if it is running NTRBootHax. # If you understand the risk, feel free to comment the next two lines. set ERRORMSG "Safe restore is not available on\nntrboot. Aborting to avoid a brick." chk -u $[HAX] "ntrboot" set ERRORMSG "SysNAND not changed." if filesel "Select NAND Backup." $[GM9OUT]/*nand_???.bin NANDBAK if ask "Safe restore\n$[NANDBAK]\nto SysNAND?" allow S:/ctrnand_full.bin allow S:/twln.bin allow S:/twlp.bin set ERRORMSG "Not a valid NAND backup." imgmount $[NANDBAK] if find I:/ctrnand_full.bin NULL if find I:/twln.bin NULL if find I:/twlp.bin NULL # Uncomment the "verify" command below to enable verification. # I left it out since the firm partitions are not being touched. # If you do not want the script to even try to recover content from a bricked image, enable it. #verify I:/nand_minsize.bin set ERRORMSG "An error occurred during the transfer.\nPlease try again." cp -w -n I:/ctrnand_full.bin S:/ctrnand_full.bin cp -w -n I:/twln.bin S:/twln.bin cp -w -n I:/twlp.bin S:/twlp.bin rm -o -s 1:/data/$[SYSID0]/sysdata/00010011/00000000 imgumount else echo "Not a valid NAND backup." end else echo "Not a valid NAND backup." end else echo "Not a valid NAND backup." end end end goto nm_menu @nmopt_LEFT_Transfer_Emu_to_Sys if find E:/nand.bin NULL set ERRORMSG "No qualifying exploit found.\nAborting to avoid bricking the device." if chk -u $[HAX] "" set SUCCESSMSG "EmuNAND successfully transferred to SysNAND." set ERRORMSG "Failed to transfer EmuNAND to SysNAND." if ask "Please make sure you have a backup of your SysNAND.\nAre you certain you want to continue?" allow S:/nand.bin cp -w -n E:/ctrnand_full.bin S:/ctrnand_full.bin cp -w -n E:/twln.bin S:/twln.bin cp -w -n E:/twlp.bin S:/twlp.bin rm -o -s 1:/data/$[SYSID0]/sysdata/00010011/00000000 end else echo "No qualifying exploit found.\nAborting to avoid bricking the device." end else echo "EmuNAND not found." end goto nm_menu @nmopt_RIGHT_Transfer_Sys_to_Emu if find E:/nand.bin NULL set SUCCESSMSG "SysNAND successfully transferred to EmuNAND." set ERRORMSG "Failed to transfer SysNAND to EmuNAND." if ask "Please make sure you have a backup of your EmuNAND.\nAre you certain you want to continue?" allow E:/nand_minsize.bin inject -n S:/nand_minsize.bin E:/nand.bin@0 rm -o -s 4:/data/$[EMUID0]/sysdata/00010011/00000000 end else echo "EmuNAND not found." end goto nm_menu @nmopt_START_Reboot reboot @nmopt_SELECT_Power_Off poweroff @nmopt_UP_Exit_Script