From 0e57e73ded9c13e26e8ebc620a7be18c24a2e7de Mon Sep 17 00:00:00 2001 From: morkt Date: Thu, 11 Feb 2016 09:37:05 +0400 Subject: [PATCH] (McgDecoder): added faulty brute-force key guessing. disabled in relesase build. --- ArcFormats/FC01/ImageMCG.cs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/ArcFormats/FC01/ImageMCG.cs b/ArcFormats/FC01/ImageMCG.cs index 1493a6bb..8edb2bb0 100644 --- a/ArcFormats/FC01/ImageMCG.cs +++ b/ArcFormats/FC01/ImageMCG.cs @@ -192,6 +192,27 @@ namespace GameRes.Formats.FC01 { MrgOpener.Decrypt (m_input, 0, m_input.Length-1, m_key); } +#if DEBUG + else // bruteforce key *in debug build only* + { + for (int key = 1; key < 256; ++key) + { + var copy = m_input.Clone() as byte[]; + MrgOpener.Decrypt (copy, 0, copy.Length-1, (byte)key); + using (var input = new MemoryStream (copy)) + using (var lzss = new MrgLzssReader (input, m_input.Length, Stride * m_height)) + { + lzss.Unpack(); + if (input.Length - input.Position <= 1) + { + m_output = lzss.Data; + m_key = (byte)key; + return; + } + } + } + } +#endif using (var input = new MemoryStream (m_input)) using (var lzss = new MrgLzssReader (input, m_input.Length, Stride * m_height)) {