From dc4bd15e04c599e67c2832e935ef715c760170f9 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 14 Nov 2024 21:17:35 -0500 Subject: [PATCH] Fix incorrect size being used --- NDecrypt.Core/ThreeDSTool.cs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/NDecrypt.Core/ThreeDSTool.cs b/NDecrypt.Core/ThreeDSTool.cs index c42fd53..5ede602 100644 --- a/NDecrypt.Core/ThreeDSTool.cs +++ b/NDecrypt.Core/ThreeDSTool.cs @@ -389,8 +389,7 @@ private void DecryptExeFSFileEntries(N3DS cart, int index, Stream input, Stream output.Seek(exeFsFilesOffset + fileHeader.FileOffset, SeekOrigin.Begin); // Setup and perform the encryption - uint exeFsSize = cart.GetExeFSSize(index); - PerformAESOperation(exeFsSize, + PerformAESOperation(fileHeader.FileSize, firstCipher, secondCipher, input, @@ -650,10 +649,6 @@ private bool EncryptExeFS(N3DS cart, int index, Stream input, Stream output) return false; } - // Get the ExeFS offset - uint exeFsHeaderOffset = cart.GetExeFSOffset(index); - uint exeFsFilesOffset = exeFsHeaderOffset + cart.MediaUnitSize; - // For all but the original crypto method, process each of the files in the table var backupHeader = cart.BackupHeader; if (backupHeader!.Flags!.CryptoMethod != CryptoMethod.Original) @@ -662,6 +657,10 @@ private bool EncryptExeFS(N3DS cart, int index, Stream input, Stream output) // Encrypt the filename table EncryptExeFSFilenameTable(cart, index, input, output); + // Get the ExeFS offset + uint exeFsHeaderOffset = cart.GetExeFSOffset(index); + uint exeFsFilesOffset = exeFsHeaderOffset + cart.MediaUnitSize; + // Seek to the ExeFS input.Seek(exeFsHeaderOffset, SeekOrigin.Begin); output.Seek(exeFsHeaderOffset, SeekOrigin.Begin); @@ -769,8 +768,7 @@ private void EncryptExeFSFileEntries(N3DS cart, int index, Stream input, Stream output.Seek(exeFsFilesOffset + fileHeader.FileOffset, SeekOrigin.Begin); // Setup and perform the encryption - uint exeFsSize = cart.GetExeFSSize(index); - PerformAESOperation(exeFsSize, + PerformAESOperation(fileHeader.FileSize, firstCipher, secondCipher, input,