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 @@
-
+