2020-12-23 23:31:17 +00:00
|
|
|
#include "mainmenu.h"
|
2020-12-23 16:39:22 +00:00
|
|
|
#include "../gfx/gfx.h"
|
|
|
|
#include "../gfx/gfxutils.h"
|
|
|
|
#include "../gfx/menu.h"
|
|
|
|
#include "tools.h"
|
2020-05-01 21:42:49 +01:00
|
|
|
#include "../hid/hid.h"
|
2020-12-23 16:39:22 +00:00
|
|
|
#include "../fs/menus/explorer.h"
|
|
|
|
#include <utils/btn.h>
|
|
|
|
#include <storage/nx_sd.h>
|
2020-12-25 20:16:24 +00:00
|
|
|
#include "tconf.h"
|
2020-12-26 21:24:41 +00:00
|
|
|
#include "../keys/keys.h"
|
2020-12-26 22:41:25 +00:00
|
|
|
#include "../storage/mountmanager.h"
|
2020-12-27 22:33:23 +00:00
|
|
|
#include "../storage/gptmenu.h"
|
|
|
|
#include "../storage/emummc.h"
|
2020-12-28 19:08:15 +00:00
|
|
|
#include <utils/util.h>
|
2020-12-23 16:39:22 +00:00
|
|
|
|
|
|
|
MenuEntry_t mainMenuEntries[] = {
|
|
|
|
{.R = 255, .G = 255, .B = 255, .skip = 1, .name = "-- Main Menu --"},
|
|
|
|
{.G = 255, .name = "SD:/"},
|
2020-12-27 22:33:23 +00:00
|
|
|
{.optionUnion = COLORTORGB(COLOR_YELLOW), .name = "Emmc"},
|
|
|
|
{.optionUnion = COLORTORGB(COLOR_YELLOW), .name = "Emummc"},
|
2020-12-23 16:39:22 +00:00
|
|
|
{.B = 255, .G = 255, .name = "Test Controllers"},
|
2020-12-25 20:16:24 +00:00
|
|
|
{.R = 255, .name = "Cause an exception"},
|
2020-12-28 19:08:15 +00:00
|
|
|
{.R = 255, .name = "Partition the sd"},
|
2020-12-28 01:29:58 +00:00
|
|
|
{.optionUnion = COLORTORGB(COLOR_BLUE), .name = "Dump Firmware"},
|
2020-12-26 21:24:41 +00:00
|
|
|
{.optionUnion = COLORTORGB(COLOR_ORANGE), .name = "View dumped keys"},
|
2020-12-28 19:08:15 +00:00
|
|
|
{.optionUnion = COLORTORGB(COLOR_ORANGE)},
|
|
|
|
{.R = 255, .name = "Reboot to payload"},
|
|
|
|
{.R = 255, .name = "Reboot to RCM"}
|
2020-12-23 16:39:22 +00:00
|
|
|
};
|
2020-02-11 16:18:29 +00:00
|
|
|
|
2020-12-23 16:39:22 +00:00
|
|
|
void HandleSD(){
|
|
|
|
gfx_clearscreen();
|
2020-12-25 20:16:24 +00:00
|
|
|
TConf.curExplorerLoc = LOC_SD;
|
2020-12-28 19:08:15 +00:00
|
|
|
if (!sd_mount() || sd_get_card_removed()){
|
2020-12-23 16:39:22 +00:00
|
|
|
gfx_printf("Sd is not mounted!");
|
|
|
|
hidWait();
|
2020-02-11 16:18:29 +00:00
|
|
|
}
|
2020-12-23 16:39:22 +00:00
|
|
|
else
|
|
|
|
FileExplorer("sd:/");
|
2020-02-11 16:18:29 +00:00
|
|
|
}
|
|
|
|
|
2020-12-26 22:41:25 +00:00
|
|
|
void HandleEMMC(){
|
2020-12-27 22:33:23 +00:00
|
|
|
GptMenu(MMC_CONN_EMMC);
|
|
|
|
}
|
|
|
|
|
|
|
|
void HandleEMUMMC(){
|
|
|
|
GptMenu(MMC_CONN_EMUMMC);
|
2020-12-26 22:41:25 +00:00
|
|
|
}
|
|
|
|
|
2020-12-25 20:16:24 +00:00
|
|
|
void CrashTE(){
|
|
|
|
gfx_printf("%d", *((int*)0));
|
|
|
|
}
|
|
|
|
|
2020-12-26 21:24:41 +00:00
|
|
|
void ViewKeys(){
|
|
|
|
gfx_clearscreen();
|
|
|
|
for (int i = 0; i < 3; i++){
|
|
|
|
gfx_printf("\nBis key 0%d: ", i);
|
|
|
|
PrintKey(dumpedKeys.bis_key[i], AES_128_KEY_SIZE * 2);
|
|
|
|
}
|
|
|
|
|
|
|
|
gfx_printf("\nMaster key 0: ");
|
|
|
|
PrintKey(dumpedKeys.master_key, AES_128_KEY_SIZE);
|
|
|
|
gfx_printf("\nHeader key: ");
|
|
|
|
PrintKey(dumpedKeys.header_key, AES_128_KEY_SIZE * 2);
|
|
|
|
gfx_printf("\nSave mac key: ");
|
|
|
|
PrintKey(dumpedKeys.save_mac_key, AES_128_KEY_SIZE);
|
|
|
|
|
2020-12-26 22:41:25 +00:00
|
|
|
gfx_printf("\n\nPkg1 ID: '%s', kb %d", TConf.pkg1ID, TConf.pkg1ver);
|
|
|
|
|
2020-12-26 21:24:41 +00:00
|
|
|
hidWait();
|
|
|
|
}
|
|
|
|
|
2020-12-28 19:08:15 +00:00
|
|
|
extern bool sd_mounted;
|
|
|
|
|
|
|
|
void MountOrUnmountSD(){
|
|
|
|
(sd_mounted) ? sd_unmount() : sd_mount();
|
|
|
|
}
|
|
|
|
|
2020-12-23 16:39:22 +00:00
|
|
|
menuPaths mainMenuPaths[] = {
|
|
|
|
NULL,
|
|
|
|
HandleSD,
|
2020-12-26 22:41:25 +00:00
|
|
|
HandleEMMC,
|
2020-12-27 22:33:23 +00:00
|
|
|
HandleEMUMMC,
|
2020-12-23 16:39:22 +00:00
|
|
|
TestControllers,
|
2020-12-25 20:16:24 +00:00
|
|
|
CrashTE,
|
2020-12-28 19:08:15 +00:00
|
|
|
FormatSD,
|
2020-12-28 01:29:58 +00:00
|
|
|
DumpSysFw,
|
2020-12-26 21:24:41 +00:00
|
|
|
ViewKeys,
|
2020-12-28 19:08:15 +00:00
|
|
|
MountOrUnmountSD,
|
|
|
|
RebootToPayload,
|
|
|
|
reboot_rcm
|
2020-02-11 16:18:29 +00:00
|
|
|
};
|
|
|
|
|
2020-12-23 16:39:22 +00:00
|
|
|
void EnterMainMenu(){
|
2019-11-21 15:02:45 +00:00
|
|
|
while (1){
|
2020-12-28 19:08:15 +00:00
|
|
|
if (sd_get_card_removed())
|
|
|
|
sd_unmount();
|
|
|
|
|
|
|
|
mainMenuEntries[1].hide = !sd_mounted;
|
2020-12-26 22:41:25 +00:00
|
|
|
mainMenuEntries[2].hide = !TConf.keysDumped;
|
2020-12-28 19:08:15 +00:00
|
|
|
mainMenuEntries[3].hide = (!TConf.keysDumped || !emu_cfg.enabled || !sd_mounted);
|
|
|
|
mainMenuEntries[7].hide = !TConf.keysDumped;
|
|
|
|
mainMenuEntries[9].name = (sd_mounted) ? "Unmount SD" : "Mount SD";
|
2020-12-26 21:24:41 +00:00
|
|
|
FunctionMenuHandler(mainMenuEntries, ARR_LEN(mainMenuEntries), mainMenuPaths, ALWAYSREDRAW);
|
2019-11-21 15:02:45 +00:00
|
|
|
}
|
2020-12-23 16:39:22 +00:00
|
|
|
}
|
|
|
|
|