From b65668144f5393d7dc91bbd6bc2842fd96f2acd9 Mon Sep 17 00:00:00 2001 From: shchmue Date: Tue, 9 Jul 2019 13:05:07 -0400 Subject: [PATCH] v1.2.5: Support Hekate 5 fuse dump, adjust UI --- Makefile | 2 +- README.md | 2 +- changelog.md | 5 +++++ source/Common.cpp | 13 ++++++++----- source/KeyCollection.cpp | 2 +- source/nx/es.c | 4 ++-- source/nx/es.h | 4 ++-- 7 files changed, 20 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 4fd0cc9..1e0122f 100644 --- a/Makefile +++ b/Makefile @@ -32,7 +32,7 @@ include $(DEVKITPRO)/libnx/switch_rules #--------------------------------------------------------------------------------- APP_TITLE := Lockpick APP_AUTHOR := shchmue -APP_VERSION := 1.2.4 +APP_VERSION := 1.2.5 TARGET := $(subst $e ,_,$(notdir $(APP_TITLE))) BUILD := build diff --git a/README.md b/README.md index 4ea1fda..27ea0ec 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Notes Building = -Release built with [libnx commit d2e2c15](https://github.com/switchbrew/libnx/tree/d2e2c159374f18c22350846019f2a615cb35b523). +Release built with [libnx release v2.2.0](https://github.com/switchbrew/libnx). Uses `freetype` which comes with `switch-portlibs` via `devkitPro pacman`: ``` diff --git a/changelog.md b/changelog.md index 2f9040b..0481b7c 100644 --- a/changelog.md +++ b/changelog.md @@ -1,4 +1,9 @@ # Changelog +## Version 1.2.5 +* Support Hekate v5 fuse dump format +* Make names consistent with libnx v2.2.0 +* Adjust text alignment and coloring in Lockpick_RCM note + ## Version 1.2.4 * Support new emunand FS memory layout * No longer save header_key if empty diff --git a/source/Common.cpp b/source/Common.cpp index e8fa6ba..8fec2ff 100644 --- a/source/Common.cpp +++ b/source/Common.cpp @@ -125,8 +125,10 @@ namespace Common { framebufferEnd(&fb); draw_text(0x010, 0x020, YELLOW, "Lockpick! by shchmue"); - draw_text(0x190, 0x020, YELLOW, "Note: This can only dump keys 00-05 (or 00-06 on 6.2.0)"); - draw_text(0x190, 0x040, YELLOW, "Use Lockpick_RCM for newer keys on firmware 7.0.0+!"); + draw_text(0x190, 0x020, YELLOW, "Note:"); + draw_text(0x1e0, 0x020, YELLOW, "Lockpick can only dump keys 00-05 (or 00-06 on 6.2.0)"); + draw_text(0x1e0, 0x040, CYAN, "Lockpick_RCM"); + draw_text(0x2a0, 0x040, YELLOW, "can get newer keys on firmware 7.0.0+!"); draw_set_rect(814, 452 + 42 * 0, 450, 42, FLAG_RED); draw_set_rect(814, 452 + 42 * 1, 450, 42, FLAG_ORANGE); @@ -159,8 +161,9 @@ namespace Common { if (std::filesystem::exists("/backup")) { for (auto &p : std::filesystem::recursive_directory_iterator("/backup")) { if (p.is_regular_file()) { - if (!sbk.found() && (p.file_size() == 0x2fc) && - (std::string("fuse").compare(std::string(p.path().filename()).substr(0, 4)) == 0)) + if (!sbk.found() && (p.file_size() == 0x2fc || p.file_size() == 0x300) && + ((p.path().filename().string().substr(0, 5).compare("fuses") == 0) || + (p.path().filename().string().substr(0, 11).compare("fuse_cached") == 0))) { FILE *fuse_file = fopen(p.path().c_str(), "rb"); if (!fuse_file) continue; @@ -171,7 +174,7 @@ namespace Common { fclose(fuse_file); } else if (!tsec.found() && (p.file_size() == 0x20 || p.file_size() == 0x30) && - (std::string("tsec").compare(std::string(p.path().filename()).substr(0, 4)) == 0)) + (p.path().filename().string().substr(0, 4).compare("tsec") == 0)) { FILE *tsec_file = fopen(p.path().c_str(), "rb"); if (!tsec_file) continue; diff --git a/source/KeyCollection.cpp b/source/KeyCollection.cpp index b86856a..7fb23db 100644 --- a/source/KeyCollection.cpp +++ b/source/KeyCollection.cpp @@ -580,7 +580,7 @@ void KeyCollection::get_titlekeys() { esInitialize(); esCountCommonTicket(&common_count); esCountPersonalizedTicket(&personalized_count); - NcmRightsId common_rights_ids[common_count], personalized_rights_ids[personalized_count]; + NcmNcaId common_rights_ids[common_count], personalized_rights_ids[personalized_count]; esListCommonTicket(&ids_written, common_rights_ids, sizeof(common_rights_ids)); esListPersonalizedTicket(&ids_written, personalized_rights_ids, sizeof(personalized_rights_ids)); esExit(); diff --git a/source/nx/es.c b/source/nx/es.c index 0eb1a9a..0ebdbc8 100644 --- a/source/nx/es.c +++ b/source/nx/es.c @@ -97,7 +97,7 @@ Result esCountPersonalizedTicket(u32 *num_tickets) return rc; } -Result esListCommonTicket(u32 *numRightsIdsWritten, NcmRightsId *outBuf, size_t bufSize) { +Result esListCommonTicket(u32 *numRightsIdsWritten, NcmNcaId *outBuf, size_t bufSize) { IpcCommand c; ipcInitialize(&c); ipcAddRecvBuffer(&c, outBuf, bufSize, BufferType_Normal); @@ -133,7 +133,7 @@ Result esListCommonTicket(u32 *numRightsIdsWritten, NcmRightsId *outBuf, size_t return rc; } -Result esListPersonalizedTicket(u32 *numRightsIdsWritten, NcmRightsId *outBuf, size_t bufSize) { +Result esListPersonalizedTicket(u32 *numRightsIdsWritten, NcmNcaId *outBuf, size_t bufSize) { IpcCommand c; ipcInitialize(&c); ipcAddRecvBuffer(&c, outBuf, bufSize, BufferType_Normal); diff --git a/source/nx/es.h b/source/nx/es.h index f1ad03a..212e199 100644 --- a/source/nx/es.h +++ b/source/nx/es.h @@ -8,5 +8,5 @@ void esExit(); Result esCountCommonTicket(u32 *num_tickets); //9 Result esCountPersonalizedTicket(u32 *num_tickets); // 10 -Result esListCommonTicket(u32 *numRightsIdsWritten, NcmRightsId *outBuf, size_t bufSize); -Result esListPersonalizedTicket(u32 *numRightsIdsWritten, NcmRightsId *outBuf, size_t bufSize); \ No newline at end of file +Result esListCommonTicket(u32 *numRightsIdsWritten, NcmNcaId *outBuf, size_t bufSize); +Result esListPersonalizedTicket(u32 *numRightsIdsWritten, NcmNcaId *outBuf, size_t bufSize); \ No newline at end of file