diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index 6375465..29b5cf7 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -11,9 +11,9 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("XCI Explorer")] -[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyCopyright("Copyright © 2020")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("206c6c47-87b1-477f-b6e6-f7e7c1a92f8f")] -[assembly: AssemblyFileVersion("1.4.9")] -[assembly: AssemblyVersion("1.4.9")] +[assembly: AssemblyFileVersion("1.5.0")] +[assembly: AssemblyVersion("1.5.0")] diff --git a/XCI Explorer.csproj b/XCI Explorer.csproj index 70c8fbe..82a2c48 100644 --- a/XCI Explorer.csproj +++ b/XCI Explorer.csproj @@ -7,7 +7,7 @@ WinExe XCI-Explorer .NETFramework - v4.7.2 + v4.8 4 True diff --git a/XCI_Explorer/MainForm.cs b/XCI_Explorer/MainForm.cs index b686abb..32baec1 100644 --- a/XCI_Explorer/MainForm.cs +++ b/XCI_Explorer/MainForm.cs @@ -67,7 +67,7 @@ namespace XCI_Explorer { using (var client = new WebClient()) { - client.DownloadFile(Util.Base64Decode("aHR0cHM6Ly9wYXN0ZWJpbi5jb20vcmF3L3dZbUxUTkxx"), "keys.txt"); + client.DownloadFile(Util.Base64Decode("aHR0cHM6Ly9wYXN0ZWJpbi5jb20vcmF3L2NWR3JQSHp6"), "keys.txt"); } } @@ -124,6 +124,7 @@ namespace XCI_Explorer where x.Length > 1 select x).ToDictionary((string[] x) => x[0].Trim(), (string[] x) => x[1]); Mkey = "master_key_"; + string MkeyL = "master_key_"; if (NCA.NCA_Headers[0].MasterKeyRev == 0 || NCA.NCA_Headers[0].MasterKeyRev == 1) { Mkey += "00"; @@ -131,12 +132,18 @@ namespace XCI_Explorer else if (NCA.NCA_Headers[0].MasterKeyRev < 17) { int num = NCA.NCA_Headers[0].MasterKeyRev - 1; - Mkey = Mkey + "0" + num.ToString(); + string capchar = num.ToString("X"); + string lowchar = capchar.ToLower(); + Mkey = Mkey + "0" + capchar; + MkeyL = MkeyL + "0" + lowchar; } else if (NCA.NCA_Headers[0].MasterKeyRev >= 17) { int num2 = NCA.NCA_Headers[0].MasterKeyRev - 1; + string capchar = num2.ToString("X"); + string lowchar = capchar.ToLower(); Mkey += num2.ToString(); + MkeyL += num2.ToString(); } try { @@ -145,7 +152,15 @@ namespace XCI_Explorer } catch { - return false; + try + { + MkeyL = dictionary[MkeyL].Replace(" ", ""); + return true; + } + catch + { + return false; + } } } @@ -188,11 +203,11 @@ namespace XCI_Explorer MessageBox.Show("File is corrupt or unsupported."); } } - catch(Exception e) + catch (Exception e) { MessageBox.Show("Error: " + e.ToString() + "\nFile is corrupt or unsupported."); } - + } private void B_LoadROM_Click(object sender, EventArgs e) @@ -634,15 +649,24 @@ namespace XCI_Explorer else if (strArray[0] == "Master Key Revision") { string MasterKey = strArray[1].Trim(); + int keyblob; + if (MasterKey.Contains("Unknown")) { - int keyblob; if (int.TryParse(new string(MasterKey.TakeWhile(Char.IsDigit).ToArray()), out keyblob)) { MasterKey = Util.GetMkey((byte)(keyblob + 1)).Replace("MasterKey", ""); } + TB_MKeyRev.Text = "MasterKey" + MasterKey; } - TB_MKeyRev.Text = "MasterKey" + MasterKey; + else + { + MasterKey = MasterKey.Split(new char[2] { 'x', ' ' })[1]; + keyblob = Convert.ToInt32(MasterKey, 16); + MasterKey = Util.GetMkey((byte)(keyblob + 1)); + TB_MKeyRev.Text = MasterKey; + } + break; } } @@ -650,10 +674,19 @@ namespace XCI_Explorer process.Close(); } catch { } - if (Directory.Exists("tmp")) + + try + { + File.Delete("meta"); + Directory.Delete("data", true); + } + catch { } + + try { Directory.Delete("tmp", true); } + catch { } TB_Capacity.Text = "eShop"; @@ -684,15 +717,12 @@ namespace XCI_Explorer if (SecureName[si].EndsWith(".cnmt.nca")) { - if (File.Exists("meta")) + try { File.Delete("meta"); - } - - if (Directory.Exists("data")) - { Directory.Delete("data", true); } + catch { } using (FileStream fileStream2 = File.OpenWrite("meta")) { @@ -755,15 +785,12 @@ namespace XCI_Explorer if (ncaTarget.Contains(SecureName[si])) { - if (File.Exists("meta")) + try { File.Delete("meta"); - } - - if (Directory.Exists("data")) - { Directory.Delete("data", true); } + catch { } using (FileStream fileStream2 = File.OpenWrite("meta")) { diff --git a/XCI_Explorer/Util.cs b/XCI_Explorer/Util.cs index b3f39bc..3583c85 100644 --- a/XCI_Explorer/Util.cs +++ b/XCI_Explorer/Util.cs @@ -10,6 +10,8 @@ namespace XCI_Explorer { switch (id) { + case 250: + return "1GB"; case 248: return "2GB"; case 240: @@ -51,7 +53,7 @@ namespace XCI_Explorer case 10: return "MasterKey9 (9.0.0-9.0.1)"; case 11: - return "MasterKey10 (?)"; + return "MasterKey10 (9.1.0-9.2.0)"; case 12: return "MasterKey11 (?)"; case 13: diff --git a/app.config b/app.config index 312bb3f..3e0e37c 100644 --- a/app.config +++ b/app.config @@ -1,3 +1,3 @@ - +