mirror of
https://github.com/rvtr/USG-FIRM-WRITER.git
synced 2025-06-18 20:45:32 -04:00
488 lines
21 KiB
Plaintext
488 lines
21 KiB
Plaintext
###################################################################################################################################
|
|
# GodMode9 script to work with my custom USG-FIRM-WRITER cart, a tool that manages DS Lite firmwares.
|
|
# Created: 2023/06/05
|
|
# Last updated: 2024/06/29
|
|
# Written by rmc
|
|
#
|
|
# _______
|
|
# | ===== |
|
|
# | <|
|
|
# |> |
|
|
# |_______|
|
|
# | ** **** |
|
|
# | \ / |
|
|
# | X |
|
|
# | / \ |
|
|
# | _____ |
|
|
# |_|| ||||_|
|
|
# \ \|||
|
|
# \|||/
|
|
# \||
|
|
# |||
|
|
# Why do people |||
|
|
# put ASCII art |||
|
|
# in source code? |||
|
|
# |||
|
|
# /|\
|
|
# |||||
|
|
# /|/ \\
|
|
# /// \\
|
|
# ____ _________|||___||__________ ____
|
|
# |____|___________________________|__*_|
|
|
# | |
|
|
# | _____________________ |
|
|
# | | USG-FIRM-WRITER v2 | |
|
|
# | |_____________________| |
|
|
# | |
|
|
# | |
|
|
# | O O . |
|
|
# |_____________________________________|
|
|
#
|
|
###################################################################################################################################
|
|
|
|
# Create work directory
|
|
mkdir $[GM9OUT]/USG-FIRM-WRITER
|
|
|
|
# Dump files individually, can be set as 'FW', 'ALL', or 'NONE'. The 'ALL' flag will dump the WiFi configuration as a seperate file.
|
|
set DUMP_ALL ALL
|
|
|
|
###################################################################################################################################
|
|
# Main menu for all your menuing needs.
|
|
###################################################################################################################################
|
|
|
|
@Menu
|
|
set PREVIEW_MODE "USG-FIRM-WRITER Script v1.0\nhttps://github.com/rvtr/USG-FIRM-WRITER\nWritten by rmc"
|
|
labelsel -o -s "Select an option." sub_*
|
|
goto Menu
|
|
|
|
###################################################################################################################################
|
|
# Dump firmware and compare to known dumps.
|
|
###################################################################################################################################
|
|
|
|
@sub_Dump_Firmware
|
|
set PREVIEW_MODE "Dumping firmware..."
|
|
if ask "Proceed with checker?\nThis will overwrite any old dumps, unless 'DUMP_ALL'\nwas set as 'NONE'."
|
|
else
|
|
goto Menu
|
|
end
|
|
find C:/*.sav SAVEPATH
|
|
|
|
# Get MAC
|
|
fget $[SAVEPATH]@36:06 MAC
|
|
|
|
if chk $[DUMP_ALL] FW
|
|
cp -w $[SAVEPATH] 0:/USG-FIRM-WRITER/$[MAC]_FIRMWARE.bin
|
|
elif chk $[DUMP_ALL] ALL
|
|
cp -w $[SAVEPATH] 0:/USG-FIRM-WRITER/$[MAC]_FIRMWARE.bin
|
|
# Backup WiFi configuration and save to dummy file
|
|
fdummy 0:/USG-FIRM-WRITER/temp_WIFI_CONFIG.bin 1D6
|
|
cp -w 0:/USG-FIRM-WRITER/temp_WIFI_CONFIG.bin 0:/USG-FIRM-WRITER/$[MAC]_WIFI_CONFIG.bin
|
|
rm 0:/USG-FIRM-WRITER/temp_WIFI_CONFIG.bin # Sadly need to create temp -> copy temp to permanent -> delete temp
|
|
#
|
|
# Why? Creating the permanent file directly if it already exits will cause a
|
|
# crash, and we can't tell if it already exists.
|
|
|
|
# Have to write the data in 100 byte blocks to due fget size error
|
|
fget $[SAVEPATH]@2A:64 WIFI_CONFIG # Backup data (100b)
|
|
fset 0:/USG-FIRM-WRITER/$[MAC]_WIFI_CONFIG.bin@00 $[WIFI_CONFIG] # Store data (100b)
|
|
fget $[SAVEPATH]@8E:64 WIFI_CONFIG # Backup data (100b)
|
|
fset 0:/USG-FIRM-WRITER/$[MAC]_WIFI_CONFIG.bin@64 $[WIFI_CONFIG] # Store data (100b)
|
|
fget $[SAVEPATH]@F2:64 WIFI_CONFIG # Backup data (100b)
|
|
fset 0:/USG-FIRM-WRITER/$[MAC]_WIFI_CONFIG.bin@C8 $[WIFI_CONFIG] # Store data (100b)
|
|
fget $[SAVEPATH]@156:64 WIFI_CONFIG # Backup data (100b)
|
|
fset 0:/USG-FIRM-WRITER/$[MAC]_WIFI_CONFIG.bin@12C $[WIFI_CONFIG] # Store data (100b)
|
|
fget $[SAVEPATH]@1BA:46 WIFI_CONFIG # Backup data (70b)
|
|
fset 0:/USG-FIRM-WRITER/$[MAC]_WIFI_CONFIG.bin@190 $[WIFI_CONFIG] # Store data (70b)
|
|
end # Total size is 470b (0x1D6 hex).
|
|
|
|
set PREVIEW_MODE "Getting build info..."
|
|
fget $[SAVEPATH]@18:01 FW_HH_STRING
|
|
fget $[SAVEPATH]@19:01 FW_MM_STRING
|
|
fget $[SAVEPATH]@1A:01 FW_DD_STRING
|
|
fget $[SAVEPATH]@1B:01 FW_MO_STRING
|
|
fget $[SAVEPATH]@1C:01 FW_YY_STRING
|
|
fget $[SAVEPATH]@1D:01 FW_REGION_STRING
|
|
fget $[SAVEPATH]@18:06 FW_FULL_STRING
|
|
|
|
set PREVIEW_MODE "Englishifying build info..."
|
|
if chk $[FW_REGION_STRING] FF
|
|
set FW_BUILD_REGION "NTR/Worldwide"
|
|
elif chk $[FW_REGION_STRING] 20
|
|
set FW_BUILD_REGION "USG/Worldwide"
|
|
elif chk $[FW_REGION_STRING] 35
|
|
set FW_BUILD_REGION "USG/Korea"
|
|
elif chk $[FW_REGION_STRING] 43
|
|
set FW_BUILD_REGION "NTR/China"
|
|
elif chk $[FW_REGION_STRING] 63
|
|
set FW_BUILD_REGION "USG/China"
|
|
elif chk $[FW_REGION_STRING] 01
|
|
set FW_BUILD_REGION "NIS/Worldwide (Nintendo Zone Box)"
|
|
elif chk $[FW_REGION_STRING] 00
|
|
set FW_BUILD_REGION "NTR/Prototype"
|
|
elif chk $[FW_REGION_STRING] A0
|
|
set FW_BUILD_REGION "NTR/IS-NITRO"
|
|
end
|
|
|
|
if chk $[FW_MO_STRING] 01
|
|
set FW_BUILD_MONTH "January"
|
|
elif chk $[FW_MO_STRING] 02
|
|
set FW_BUILD_MONTH "February"
|
|
elif chk $[FW_MO_STRING] 03
|
|
set FW_BUILD_MONTH "March"
|
|
elif chk $[FW_MO_STRING] 040x1D6
|
|
set FW_BUILD_MONTH "April"
|
|
elif chk $[FW_MO_STRING] 05
|
|
set FW_BUILD_MONTH "May"
|
|
elif chk $[FW_MO_STRING] 06
|
|
set FW_BUILD_MONTH "June"
|
|
elif chk $[FW_MO_STRING] 07
|
|
set FW_BUILD_MONTH "July"
|
|
elif chk $[FW_MO_STRING] 08
|
|
set FW_BUILD_MONTH "August"
|
|
elif chk $[FW_MO_STRING] 09
|
|
set FW_BUILD_MONTH "September"
|
|
elif chk $[FW_MO_STRING] 10
|
|
set FW_BUILD_MONTH "October"
|
|
elif chk $[FW_MO_STRING] 11
|
|
set FW_BUILD_MONTH "November"
|
|
elif chk $[FW_MO_STRING] 12
|
|
set FW_BUILD_MONTH "December"
|
|
elif set FW_BUILD_MONTH "UNKNOWN"
|
|
end
|
|
|
|
|
|
# Display build info
|
|
set PREVIEW_MODE "Build info:\n\nTime: $[FW_MM_STRING]:$[FW_HH_STRING]\nDate: 20$[FW_YY_STRING], $[FW_BUILD_MONTH] $[FW_DD_STRING]\nRegion: $[FW_REGION_STRING] - $[FW_BUILD_REGION]\nFlashMe: No\nHex: $[FW_HH_STRING] $[FW_MM_STRING] $[FW_DD_STRING] $[FW_MO_STRING] $[FW_YY_STRING] $[FW_REGION_STRING] (0x18-0x1D)"
|
|
|
|
# Display build info if flashme
|
|
|
|
# http://docs.randommeaninglesscharacters.com/dsfirmwares.html
|
|
if chk $[FW_FULL_STRING] 0711051004FF
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk $[FW_FULL_STRING] 5109261104FF
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk $[FW_FULL_STRING] 4814060605FF
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk $[FW_FULL_STRING] 152109060543
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk $[FW_FULL_STRING] 161630110520
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk $[FW_FULL_STRING] 4514071205FF
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk $[FW_FULL_STRING] 192026010601
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk $[FW_FULL_STRING] 592020020600 # ISNE Phat
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk $[FW_FULL_STRING] 5920200206A0 # ISNE Lite
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk $[FW_FULL_STRING] 191108030620
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk $[FW_FULL_STRING] 351506260463
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk $[FW_FULL_STRING] 302109110635
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk $[FW_FULL_STRING] 000000000000
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk $[FW_FULL_STRING] 5108280205FF # FlashMe (Phat - v8, v8a)
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk $[FW_FULL_STRING] 332105020620 # FlashMe (Lite - 050512, 050715, v3, v5, v6, v7, v8, v8a)
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk $[FW_FULL_STRING] 0CF07F023490 # CreeboMeBeta2 (v0.02)
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk $[FW_FULL_STRING] 0CF07F02D0B4 # fwnitro (v1.6b no scroller + no mkds, mkds only, scroller only)
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk $[FW_FULL_STRING] 0CF07F02D0BC # fwnitro (v1.6b scroller + mkds)
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk $[FW_FULL_STRING] 0CF07F0254AB # fwnitro (v1.6c no sroller, no mkds)
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk $[FW_FULL_STRING] 0CF07F0254B3 # fwnitro (v1.6c mkds only)
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk $[FW_FULL_STRING] 0CF07F0254B5 # fwnitro (v1.6c scroller only)
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk $[FW_FULL_STRING] 0CF07F0254BB # fwnitro (v1.6c scroller + mkds)
|
|
|
|
echo "Dump complete!\n\nThis is a known firmware revision."
|
|
elif chk 1 1
|
|
echo "UNKNOWN FIRMWARE: Please send the firmware dump to:\n'lillian@randommeaninglesscharacters.com'.\n(0:/USG-FIRM-WRITER/$[MAC]_FIRMWARE.bin)"
|
|
goto Menu
|
|
end
|
|
|
|
if ask "Dump another WiFi board?"
|
|
goto sub_Dump_Firmware
|
|
else
|
|
goto Menu
|
|
end
|
|
|
|
###################################################################################################################################
|
|
# For flashing firmware dumps
|
|
###################################################################################################################################
|
|
|
|
@sub_Flash_Firmware
|
|
set PREVIEW_MODE "Flash firmware backup."
|
|
|
|
# Backup FW/config here
|
|
|
|
if ask "Proceed with flasher?\nThis will overwrite the current firmware."
|
|
find C:/*.sav SAVEPATH # Find WiFi board firmware
|
|
|
|
# Display current firmware info
|
|
|
|
set PREVIEW_MODE "Getting build info..."
|
|
fget $[SAVEPATH]@18:01 FW_HH_STRING
|
|
fget $[SAVEPATH]@19:01 FW_MM_STRING
|
|
fget $[SAVEPATH]@1A:01 FW_DD_STRING
|
|
fget $[SAVEPATH]@1B:01 FW_MO_STRING
|
|
fget $[SAVEPATH]@1C:01 FW_YY_STRING
|
|
fget $[SAVEPATH]@1D:01 FW_REGION_STRING
|
|
fget $[SAVEPATH]@18:06 FW_FULL_STRING
|
|
|
|
set PREVIEW_MODE "Englishifying build info..."
|
|
if chk $[FW_REGION_STRING] FF
|
|
set FW_BUILD_REGION "NTR/Worldwide"
|
|
elif chk $[FW_REGION_STRING] 20
|
|
set FW_BUILD_REGION "USG/Worldwide"
|
|
elif chk $[FW_REGION_STRING] 35
|
|
set FW_BUILD_REGION "USG/Korea"
|
|
elif chk $[FW_REGION_STRING] 43
|
|
set FW_BUILD_REGION "NTR/China"
|
|
elif chk $[FW_REGION_STRING] 63
|
|
set FW_BUILD_REGION "USG/China"
|
|
elif chk $[FW_REGION_STRING] 01
|
|
set FW_BUILD_REGION "NIS/Worldwide (Nintendo Zone Box)"
|
|
elif chk $[FW_REGION_STRING] 90
|
|
set FW_BUILD_REGION "CFW"
|
|
elif chk $[FW_REGION_STRING] B4
|
|
set FW_BUILD_REGION "CFW"
|
|
elif chk $[FW_REGION_STRING] BC
|
|
set FW_BUILD_REGION "CFW"
|
|
elif chk $[FW_REGION_STRING] 00
|
|
set FW_BUILD_REGION "NTR/Prototype"
|
|
elif chk $[FW_REGION_STRING] A0
|
|
set FW_BUILD_REGION "NTR/IS-NITRO"
|
|
end
|
|
|
|
if chk $[FW_MO_STRING] 01
|
|
set FW_BUILD_MONTH "January"
|
|
elif chk $[FW_MO_STRING] 02
|
|
set FW_BUILD_MONTH "February"
|
|
elif chk $[FW_MO_STRING] 03
|
|
set FW_BUILD_MONTH "March"
|
|
elif chk $[FW_MO_STRING] 04
|
|
set FW_BUILD_MONTH "April"
|
|
elif chk $[FW_MO_STRING] 05
|
|
set FW_BUILD_MONTH "May"
|
|
elif chk $[FW_MO_STRING] 06
|
|
set FW_BUILD_MONTH "June"
|
|
elif chk $[FW_MO_STRING] 07
|
|
set FW_BUILD_MONTH "July"
|
|
elif chk $[FW_MO_STRING] 08
|
|
set FW_BUILD_MONTH "August"
|
|
elif chk $[FW_MO_STRING] 09
|
|
set FW_BUILD_MONTH "September"
|
|
elif chk $[FW_MO_STRING] 10
|
|
set FW_BUILD_MONTH "October"
|
|
elif chk $[FW_MO_STRING] 11
|
|
set FW_BUILD_MONTH "November"
|
|
elif chk $[FW_MO_STRING] 12
|
|
set FW_BUILD_MONTH "December"
|
|
elif set FW_BUILD_MONTH "UNKNOWN"
|
|
end
|
|
|
|
# Display build info
|
|
set PREVIEW_MODE "Current firmware build info:\n\nTime: $[FW_MM_STRING]:$[FW_HH_STRING]\nDate: 20$[FW_YY_STRING], $[FW_BUILD_MONTH] $[FW_DD_STRING]\nRegion: $[FW_REGION_STRING] - $[FW_BUILD_REGION]\nHex: $[FW_HH_STRING] $[FW_MM_STRING] $[FW_DD_STRING] $[FW_MO_STRING] $[FW_YY_STRING] $[FW_REGION_STRING] (0x18-0x1D)"
|
|
|
|
if ask "Use external dumps? If no then your own dumps from\nthis script will be used.\nNote: for external dumps, place firmware backups in:\n0:/USG-FIRM-WRITER/External/"
|
|
if filesel "Select firmware backup" 0:/USG-FIRM-WRITER/External/* FIRMWARE_FLASH
|
|
else
|
|
echo "No file selected, cancelling."
|
|
goto sub_Flash_Firmware
|
|
end
|
|
else
|
|
if filesel "Select firmware backup" 0:/USG-FIRM-WRITER/*FIRMWARE.bin FIRMWARE_FLASH
|
|
else
|
|
echo "No file selected, cancelling."
|
|
goto sub_Flash_Firmware
|
|
end
|
|
end
|
|
|
|
# Display current firmware info
|
|
|
|
set PREVIEW_MODE "Getting build info..."
|
|
fget $[FIRMWARE_FLASH]@18:01 FW_HH_STRING
|
|
fget $[FIRMWARE_FLASH]@19:01 FW_MM_STRING
|
|
fget $[FIRMWARE_FLASH]@1A:01 FW_DD_STRING
|
|
fget $[FIRMWARE_FLASH]@1B:01 FW_MO_STRING
|
|
fget $[FIRMWARE_FLASH]@1C:01 FW_YY_STRING
|
|
fget $[FIRMWARE_FLASH]@1D:01 FW_REGION_STRING
|
|
fget $[FIRMWARE_FLASH]@18:06 FW_FULL_STRING
|
|
|
|
set PREVIEW_MODE "Englishifying build info..."
|
|
if chk $[FW_REGION_STRING] FF
|
|
set FW_BUILD_REGION "NTR/Worldwide"
|
|
elif chk $[FW_REGION_STRING] 20
|
|
set FW_BUILD_REGION "USG/Worldwide"
|
|
elif chk $[FW_REGION_STRING] 35
|
|
set FW_BUILD_REGION "USG/Korea"
|
|
elif chk $[FW_REGION_STRING] 43
|
|
set FW_BUILD_REGION "NTR/China"
|
|
elif chk $[FW_REGION_STRING] 63
|
|
set FW_BUILD_REGION "USG/China"
|
|
elif chk $[FW_REGION_STRING] 01
|
|
set FW_BUILD_REGION "NIS/Worldwide (Nintendo Zone Box)"
|
|
elif chk $[FW_REGION_STRING] 90
|
|
set FW_BUILD_REGION "CFW"
|
|
elif chk $[FW_REGION_STRING] B4
|
|
set FW_BUILD_REGION "CFW"
|
|
elif chk $[FW_REGION_STRING] BC
|
|
set FW_BUILD_REGION "CFW"
|
|
elif chk $[FW_REGION_STRING] 00
|
|
set FW_BUILD_REGION "NTR/Prototype"
|
|
end
|
|
|
|
if chk $[FW_MO_STRING] 01
|
|
set FW_BUILD_MONTH "January"
|
|
elif chk $[FW_MO_STRING] 02
|
|
set FW_BUILD_MONTH "February"
|
|
elif chk $[FW_MO_STRING] 03
|
|
set FW_BUILD_MONTH "March"
|
|
elif chk $[FW_MO_STRING] 04
|
|
set FW_BUILD_MONTH "April"
|
|
elif chk $[FW_MO_STRING] 05
|
|
set FW_BUILD_MONTH "May"
|
|
elif chk $[FW_MO_STRING] 06
|
|
set FW_BUILD_MONTH "June"
|
|
elif chk $[FW_MO_STRING] 07
|
|
set FW_BUILD_MONTH "July"
|
|
elif chk $[FW_MO_STRING] 08
|
|
set FW_BUILD_MONTH "August"
|
|
elif chk $[FW_MO_STRING] 09
|
|
set FW_BUILD_MONTH "September"
|
|
elif chk $[FW_MO_STRING] 10
|
|
set FW_BUILD_MONTH "October"
|
|
elif chk $[FW_MO_STRING] 11
|
|
set FW_BUILD_MONTH "November"
|
|
elif chk $[FW_MO_STRING] 12
|
|
set FW_BUILD_MONTH "December"
|
|
elif set FW_BUILD_MONTH "UNKNOWN"
|
|
end
|
|
|
|
# Display build info
|
|
set PREVIEW_MODE "New firmware build info:\n\nTime: $[FW_MM_STRING]:$[FW_HH_STRING]\nDate: 20$[FW_YY_STRING], $[FW_BUILD_MONTH] $[FW_DD_STRING]\nRegion: $[FW_REGION_STRING] - $[FW_BUILD_REGION]\nHex: $[FW_HH_STRING] $[FW_MM_STRING] $[FW_DD_STRING] $[FW_MO_STRING] $[FW_YY_STRING] $[FW_REGION_STRING] (0x18-0x1D)"
|
|
|
|
if not ask "Are you sure you want to flash the new firmware?"
|
|
echo "Operation cancelled."
|
|
goto Menu
|
|
end
|
|
# Build info for user to check and confirm
|
|
# Create temporary copy of firmware and import config to that before flashing.
|
|
cp -w $[FIRMWARE_FLASH] 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin
|
|
# Have to write the data in 100 byte blocks to due fget size error
|
|
fget $[SAVEPATH]@2A:64 WIFI_CONFIG0 # Backup data
|
|
fset 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin@2A $[WIFI_CONFIG0] # Store data
|
|
fget $[SAVEPATH]@8E:64 WIFI_CONFIG1 # Backup data
|
|
fset 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin@8E $[WIFI_CONFIG1] # Store data
|
|
fget $[SAVEPATH]@F2:64 WIFI_CONFIG2 # Backup data
|
|
fset 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin@F2 $[WIFI_CONFIG2] # Store data
|
|
fget $[SAVEPATH]@156:64 WIFI_CONFIG3 # Backup data
|
|
fset 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin@156 $[WIFI_CONFIG3] # Store data
|
|
fget $[SAVEPATH]@1BA:46 WIFI_CONFIG4 # Backup data
|
|
fset 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin@1BA $[WIFI_CONFIG4] # Store data
|
|
# Add user config here later on
|
|
|
|
find C:/*.sav SAVEPATH
|
|
cp -w 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin $[SAVEPATH] # Flash wireless fixed firmware
|
|
|
|
rm 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin # Delete temp edited file
|
|
echo "Firmware flashed okay!"
|
|
else
|
|
echo "Operation cancelled."
|
|
goto Menu
|
|
end
|
|
|
|
goto Menu
|
|
|
|
###################################################################################################################################
|
|
# Inject WiFi configuration from one backup to another
|
|
###################################################################################################################################
|
|
|
|
@sub_Inject_WiFi_Config
|
|
echo "Warning: make sure you have a backup first!\nIf you ever lose this data, it is impossible to recreate."
|
|
if not ask "Are you sure you want to continue?"
|
|
echo "Operation cancelled."
|
|
goto Menu
|
|
end
|
|
|
|
if filesel "Select WiFi config backup" 0:/USG-FIRM-WRITER/*WIFI_CONFIG.bin WIFI_CONFIG_FLASH
|
|
else
|
|
echo "No file selected, cancelling."
|
|
goto Menu
|
|
end
|
|
|
|
if not ask "Inject into WiFi board? If no then you can select\na firmware backup from the SD card."
|
|
set INJECT_MODE SD
|
|
if ask "Inject to external firmware dumps?\nIf no then your own dumps from this script will be used.\nNote: for external dumps, place firmware backups in:\n0:/USG-FIRM-WRITER/External/"
|
|
if filesel "Select firmware to inject into" 0:/USG-FIRM-WRITER/External/* FIRMWARE_FLASH
|
|
else
|
|
echo "No file selected, cancelling."
|
|
goto Menu
|
|
end
|
|
else
|
|
if filesel "Select firmware to inject into" 0:/USG-FIRM-WRITER/*FIRMWARE.bin FIRMWARE_FLASH
|
|
else
|
|
echo "No file selected, cancelling."
|
|
goto Menu
|
|
end
|
|
end
|
|
else
|
|
set INJECT_MODE BOARD
|
|
end
|
|
|
|
if chk $[INJECT_MODE] BOARD
|
|
find C:/*.sav SAVEPATH
|
|
cp -w $[SAVEPATH] 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin
|
|
else
|
|
cp -w $[FIRMWARE_FLASH] 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin
|
|
end
|
|
|
|
fget $[WIFI_CONFIG_FLASH]@00:64 WIFI_CONFIG0 # Backup data
|
|
fset 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin@2A $[WIFI_CONFIG0] # Store data
|
|
fget $[WIFI_CONFIG_FLASH]@64:64 WIFI_CONFIG1 # Backup data
|
|
fset 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin@8E $[WIFI_CONFIG1] # Store data
|
|
fget $[WIFI_CONFIG_FLASH]@C8:64 WIFI_CONFIG2 # Backup data
|
|
fset 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin@F2 $[WIFI_CONFIG2] # Store data
|
|
fget $[WIFI_CONFIG_FLASH]@12C:64 WIFI_CONFIG3 # Backup data
|
|
fset 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin@156 $[WIFI_CONFIG3] # Store data
|
|
fget $[WIFI_CONFIG_FLASH]@190:46 WIFI_CONFIG4 # Backup data
|
|
fset 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin@1BA $[WIFI_CONFIG4] # Store data
|
|
|
|
if chk $[INJECT_MODE] BOARD
|
|
cp -w 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin $[SAVEPATH]
|
|
else
|
|
cp -w 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin $[FIRMWARE_FLASH]
|
|
end
|
|
rm 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin
|
|
echo "Injected okay!"
|
|
|
|
goto Menu
|
|
|
|
###################################################################################################################################
|
|
# End script... but why would you want to do that?
|
|
###################################################################################################################################
|
|
|
|
@sub_Exit_Script
|
|
echo "Exiting script, have a nice day!"
|
|
|
|
# Firmware index
|
|
# 0x018-0x01C = build date in: hour, minute, day, month, year
|
|
# 0x01D = region
|
|
# 0x02A-0x1FF = WiFi config
|
|
# 0x036-0x03B = MAC address
|
|
#
|
|
#
|
|
#
|
|
#
|
|
#
|
|
#
|
|
#
|
|
#
|