From fcdfce55a1ed399766cf80270c38366747a0f166 Mon Sep 17 00:00:00 2001 From: xprism1 Date: Mon, 27 Mar 2023 10:59:18 +0800 Subject: [PATCH] ncch: use programID for seed crypto --- lib/__init__.py | 0 lib/ctr_ncch.py | 8 ++++---- 2 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 lib/__init__.py diff --git a/lib/__init__.py b/lib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/lib/ctr_ncch.py b/lib/ctr_ncch.py index af359b3..ac2272a 100644 --- a/lib/ctr_ncch.py +++ b/lib/ctr_ncch.py @@ -110,10 +110,10 @@ class NCCHReader: self.keyX = [CTR.KeyX0x2C[dev], self.keyX_2[dev]] if self.uses_seed: # This will result in keyY_2 being different - seed = get_seed(bytes(self.hdr.titleID)) + seed = get_seed(bytes(self.hdr.programID)) # Verify seed in SEEDDB - if hashlib.sha256(seed + self.hdr.titleID).digest()[:4] != bytes(self.hdr.seed_hash): + if hashlib.sha256(seed + self.hdr.programID).digest()[:4] != bytes(self.hdr.seed_hash): raise Exception('Seed in SEEDDB failed verification') self.keyY[1] = hashlib.sha256(self.keyY[0] + seed).digest()[:16] @@ -516,8 +516,8 @@ class NCCHBuilder: 'Secure4': 0x0B }[crypto] if seed == 1: hdr.flags[7] |= 0x20 - seed = get_seed(titleID_bytes) - seed_hash = hashlib.sha256(seed + hdr.titleID).digest()[:4] + seed = get_seed(bytes(hdr.programID)) + seed_hash = hashlib.sha256(seed + hdr.programID).digest()[:4] hdr.seed_hash = (c_uint8 * sizeof(hdr.seed_hash))(*seed_hash) # Modify exheader (if necessary)