mirror of
https://github.com/StudentBlake/XCI-Explorer
synced 2024-11-22 04:03:04 +00:00
Merge pull request #64 from StudentBlake/zzpong-fixes
Merge zzpong and fixes
This commit is contained in:
commit
5a511366a1
28 changed files with 2944 additions and 2655 deletions
22
.gitignore
vendored
22
.gitignore
vendored
|
@ -1,7 +1,7 @@
|
||||||
## Ignore Visual Studio temporary files, build results, and
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
## files generated by popular Visual Studio add-ons.
|
## files generated by popular Visual Studio add-ons.
|
||||||
##
|
##
|
||||||
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
|
||||||
|
|
||||||
# User-specific files
|
# User-specific files
|
||||||
*.rsuser
|
*.rsuser
|
||||||
|
@ -184,7 +184,7 @@ publish/
|
||||||
*.azurePubxml
|
*.azurePubxml
|
||||||
# Note: Comment the next line if you want to checkin your web deploy settings,
|
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||||
# but database connection strings (with potential passwords) will be unencrypted
|
# but database connection strings (with potential passwords) will be unencrypted
|
||||||
*.pubxml
|
#*.pubxml
|
||||||
*.publishproj
|
*.publishproj
|
||||||
|
|
||||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||||
|
@ -206,9 +206,6 @@ PublishScripts/
|
||||||
*.nuget.props
|
*.nuget.props
|
||||||
*.nuget.targets
|
*.nuget.targets
|
||||||
|
|
||||||
# Nuget personal access tokens and Credentials
|
|
||||||
# nuget.config
|
|
||||||
|
|
||||||
# Microsoft Azure Build Output
|
# Microsoft Azure Build Output
|
||||||
csx/
|
csx/
|
||||||
*.build.csdef
|
*.build.csdef
|
||||||
|
@ -297,6 +294,17 @@ node_modules/
|
||||||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||||
*.vbw
|
*.vbw
|
||||||
|
|
||||||
|
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
|
||||||
|
*.vbp
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
|
||||||
|
*.dsw
|
||||||
|
*.dsp
|
||||||
|
|
||||||
|
# Visual Studio 6 technical files
|
||||||
|
*.ncb
|
||||||
|
*.aps
|
||||||
|
|
||||||
# Visual Studio LightSwitch build output
|
# Visual Studio LightSwitch build output
|
||||||
**/*.HTMLClient/GeneratedArtifacts
|
**/*.HTMLClient/GeneratedArtifacts
|
||||||
**/*.DesktopClient/GeneratedArtifacts
|
**/*.DesktopClient/GeneratedArtifacts
|
||||||
|
@ -353,6 +361,9 @@ ASALocalRun/
|
||||||
# Local History for Visual Studio
|
# Local History for Visual Studio
|
||||||
.localhistory/
|
.localhistory/
|
||||||
|
|
||||||
|
# Visual Studio History (VSHistory) files
|
||||||
|
.vshistory/
|
||||||
|
|
||||||
# BeatPulse healthcheck temp database
|
# BeatPulse healthcheck temp database
|
||||||
healthchecksdb
|
healthchecksdb
|
||||||
|
|
||||||
|
@ -384,5 +395,4 @@ FodyWeavers.xsd
|
||||||
*.msp
|
*.msp
|
||||||
|
|
||||||
# JetBrains Rider
|
# JetBrains Rider
|
||||||
.idea/
|
|
||||||
*.sln.iml
|
*.sln.iml
|
|
@ -15,5 +15,5 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
[assembly: Guid("206c6c47-87b1-477f-b6e6-f7e7c1a92f8f")]
|
[assembly: Guid("206c6c47-87b1-477f-b6e6-f7e7c1a92f8f")]
|
||||||
[assembly: AssemblyFileVersion("1.6.0")]
|
[assembly: AssemblyFileVersion("2.0.0")]
|
||||||
[assembly: AssemblyVersion("1.6.0")]
|
[assembly: AssemblyVersion("2.0.0")]
|
||||||
|
|
18
Properties/PublishProfiles/Dependent.pubxml
Normal file
18
Properties/PublishProfiles/Dependent.pubxml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
https://go.microsoft.com/fwlink/?LinkID=208121.
|
||||||
|
-->
|
||||||
|
<Project>
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Any CPU</Platform>
|
||||||
|
<PublishDir>bin\Release\Dependent</PublishDir>
|
||||||
|
<PublishProtocol>FileSystem</PublishProtocol>
|
||||||
|
<_TargetId>Folder</_TargetId>
|
||||||
|
<TargetFramework>net6.0-windows</TargetFramework>
|
||||||
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
|
<SelfContained>false</SelfContained>
|
||||||
|
<PublishSingleFile>true</PublishSingleFile>
|
||||||
|
<PublishReadyToRun>false</PublishReadyToRun>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
20
Properties/PublishProfiles/Portable.pubxml
Normal file
20
Properties/PublishProfiles/Portable.pubxml
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
https://go.microsoft.com/fwlink/?LinkID=208121.
|
||||||
|
-->
|
||||||
|
<Project>
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Any CPU</Platform>
|
||||||
|
<PublishDir>bin\Release\Portable</PublishDir>
|
||||||
|
<PublishProtocol>FileSystem</PublishProtocol>
|
||||||
|
<_TargetId>Folder</_TargetId>
|
||||||
|
<TargetFramework>net6.0-windows</TargetFramework>
|
||||||
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
|
<SelfContained>true</SelfContained>
|
||||||
|
<PublishSingleFile>true</PublishSingleFile>
|
||||||
|
<PublishReadyToRun>false</PublishReadyToRun>
|
||||||
|
<EnableCompressionInSingleFile>true</EnableCompressionInSingleFile>
|
||||||
|
<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
|
@ -15,4 +15,10 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Be.Windows.Forms.HexBox.Net5" Version="1.8.0" />
|
<PackageReference Include="Be.Windows.Forms.HexBox.Net5" Version="1.8.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Update="tools\hactool.exe">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -1,154 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
|
|
||||||
namespace XCI_Explorer.Helpers
|
|
||||||
{
|
|
||||||
public class BetterBinaryReader : IDisposable
|
|
||||||
{
|
|
||||||
public string FileName;
|
|
||||||
public bool Initiated;
|
|
||||||
public Stream Stream;
|
|
||||||
private BinaryReader br;
|
|
||||||
|
|
||||||
public BetterBinaryReader()
|
|
||||||
{
|
|
||||||
Initiated = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BetterBinaryReader(string file)
|
|
||||||
{
|
|
||||||
Initiated = false;
|
|
||||||
Load(file);
|
|
||||||
}
|
|
||||||
|
|
||||||
public BetterBinaryReader(Stream s)
|
|
||||||
{
|
|
||||||
Initiated = false;
|
|
||||||
FileName = "";
|
|
||||||
Stream = s;
|
|
||||||
br = new BinaryReader(Stream);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
Initiated = false;
|
|
||||||
br.Close();
|
|
||||||
br = null;
|
|
||||||
Stream.Close();
|
|
||||||
Stream = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Load(string file)
|
|
||||||
{
|
|
||||||
FileName = file;
|
|
||||||
Stream = new FileStream(file, FileMode.Open);
|
|
||||||
br = new BinaryReader(Stream);
|
|
||||||
Initiated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Seek(long o)
|
|
||||||
{
|
|
||||||
if (o > -1)
|
|
||||||
{
|
|
||||||
Stream.Seek(o, SeekOrigin.Begin);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Skip(long o)
|
|
||||||
{
|
|
||||||
Stream.Seek(o, SeekOrigin.Current);
|
|
||||||
}
|
|
||||||
|
|
||||||
public long Position()
|
|
||||||
{
|
|
||||||
return Stream.Position;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Read()
|
|
||||||
{
|
|
||||||
return br.ReadBytes(1)[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Read(byte[] buffer, int index, int count)
|
|
||||||
{
|
|
||||||
return br.Read(buffer, index, count);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Read(char[] buffer, int index, int count)
|
|
||||||
{
|
|
||||||
return br.Read(buffer, index, count);
|
|
||||||
}
|
|
||||||
|
|
||||||
public byte[] ReadBytes(int l)
|
|
||||||
{
|
|
||||||
if (l >= 0 && l <= 2147483647)
|
|
||||||
{
|
|
||||||
return br.ReadBytes(l);
|
|
||||||
}
|
|
||||||
return new byte[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
public Stream ReadBytesButLonger(long l)
|
|
||||||
{
|
|
||||||
MemoryStream memoryStream = new MemoryStream();
|
|
||||||
for (long num = 0L; num < l; num++)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
Console.WriteLine(memoryStream.Length);
|
|
||||||
return memoryStream;
|
|
||||||
}
|
|
||||||
|
|
||||||
public string ReadCharsAsString(int l)
|
|
||||||
{
|
|
||||||
return new string(br.ReadChars(l));
|
|
||||||
}
|
|
||||||
|
|
||||||
public short ReadShort()
|
|
||||||
{
|
|
||||||
return br.ReadInt16();
|
|
||||||
}
|
|
||||||
|
|
||||||
public short ReadInt16()
|
|
||||||
{
|
|
||||||
return br.ReadInt16();
|
|
||||||
}
|
|
||||||
|
|
||||||
public int ReadInt()
|
|
||||||
{
|
|
||||||
return br.ReadInt32();
|
|
||||||
}
|
|
||||||
|
|
||||||
public int ReadInt32()
|
|
||||||
{
|
|
||||||
return br.ReadInt32();
|
|
||||||
}
|
|
||||||
|
|
||||||
public long ReadLong()
|
|
||||||
{
|
|
||||||
return br.ReadInt64();
|
|
||||||
}
|
|
||||||
|
|
||||||
public long ReadInt64()
|
|
||||||
{
|
|
||||||
return br.ReadInt64();
|
|
||||||
}
|
|
||||||
|
|
||||||
public string ReadString()
|
|
||||||
{
|
|
||||||
return br.ReadString();
|
|
||||||
}
|
|
||||||
|
|
||||||
private long GreatestDivisor(long n)
|
|
||||||
{
|
|
||||||
long result = 0L;
|
|
||||||
for (long num = 1L; num < n / 64; num++)
|
|
||||||
{
|
|
||||||
if (n % num == 0L && num != n)
|
|
||||||
{
|
|
||||||
result = num;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,9 +1,9 @@
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace XCI_Explorer.Helpers
|
namespace XCI_Explorer.Helpers;
|
||||||
|
|
||||||
|
public class BetterTreeNode : TreeNode
|
||||||
{
|
{
|
||||||
public class BetterTreeNode : TreeNode
|
|
||||||
{
|
|
||||||
public long Offset;
|
public long Offset;
|
||||||
public long Size;
|
public long Size;
|
||||||
public string ExpectedHash;
|
public string ExpectedHash;
|
||||||
|
@ -12,7 +12,6 @@ namespace XCI_Explorer.Helpers
|
||||||
|
|
||||||
public BetterTreeNode(string t)
|
public BetterTreeNode(string t)
|
||||||
{
|
{
|
||||||
base.Text = t;
|
Text = t;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace XCI_Explorer
|
namespace XCI_Explorer;
|
||||||
|
|
||||||
|
internal static class CNMT
|
||||||
{
|
{
|
||||||
internal static class CNMT
|
|
||||||
{
|
|
||||||
public class CNMT_Header
|
public class CNMT_Header
|
||||||
{
|
{
|
||||||
public byte[] Data;
|
public byte[] Data;
|
||||||
|
@ -76,5 +76,4 @@ namespace XCI_Explorer
|
||||||
}
|
}
|
||||||
|
|
||||||
public static CNMT_Header[] CNMT_Headers = new CNMT_Header[1];
|
public static CNMT_Header[] CNMT_Headers = new CNMT_Header[1];
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Windows.Forms;
|
|
||||||
using System.Text;
|
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Text;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace XCI_Explorer
|
namespace XCI_Explorer;
|
||||||
|
|
||||||
|
public class CenterWinDialog : IDisposable
|
||||||
{
|
{
|
||||||
public class CenterWinDialog : IDisposable
|
|
||||||
{
|
|
||||||
private int mTries = 0;
|
private int mTries = 0;
|
||||||
private Form mOwner;
|
private Form mOwner;
|
||||||
|
|
||||||
|
@ -23,19 +23,28 @@ namespace XCI_Explorer
|
||||||
private void findDialog()
|
private void findDialog()
|
||||||
{
|
{
|
||||||
// Enumerate windows to find the message box
|
// Enumerate windows to find the message box
|
||||||
if (mTries < 0) return;
|
if (mTries < 0)
|
||||||
EnumThreadWndProc callback = new EnumThreadWndProc(checkWindow);
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
EnumThreadWndProc callback = new(checkWindow);
|
||||||
if (EnumThreadWindows(GetCurrentThreadId(), callback, IntPtr.Zero))
|
if (EnumThreadWindows(GetCurrentThreadId(), callback, IntPtr.Zero))
|
||||||
{
|
{
|
||||||
if (++mTries < 10) mOwner.BeginInvoke(new MethodInvoker(findDialog));
|
if (++mTries < 10)
|
||||||
|
{
|
||||||
|
mOwner.BeginInvoke(new MethodInvoker(findDialog));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private bool checkWindow(IntPtr hWnd, IntPtr lp)
|
private bool checkWindow(IntPtr hWnd, IntPtr lp)
|
||||||
{
|
{
|
||||||
// Checks if <hWnd> is a dialog
|
// Checks if <hWnd> is a dialog
|
||||||
StringBuilder sb = new StringBuilder(260);
|
StringBuilder sb = new(260);
|
||||||
GetClassName(hWnd, sb, sb.Capacity);
|
GetClassName(hWnd, sb, sb.Capacity);
|
||||||
if (sb.ToString() != "#32770") return true;
|
if (sb.ToString() != "#32770")
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
// Got it
|
// Got it
|
||||||
Rectangle frmRect = new Rectangle(mOwner.Location, mOwner.Size);
|
Rectangle frmRect = new Rectangle(mOwner.Location, mOwner.Size);
|
||||||
RECT dlgRect;
|
RECT dlgRect;
|
||||||
|
@ -65,5 +74,4 @@ namespace XCI_Explorer
|
||||||
[DllImport("user32.dll")]
|
[DllImport("user32.dll")]
|
||||||
private static extern bool MoveWindow(IntPtr hWnd, int x, int y, int w, int h, bool repaint);
|
private static extern bool MoveWindow(IntPtr hWnd, int x, int y, int w, int h, bool repaint);
|
||||||
private struct RECT { public int Left; public int Top; public int Right; public int Bottom; }
|
private struct RECT { public int Left; public int Top; public int Right; public int Bottom; }
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -2,19 +2,18 @@
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace XCI_Explorer
|
namespace XCI_Explorer;
|
||||||
|
|
||||||
|
public partial class CertForm : Form
|
||||||
{
|
{
|
||||||
public partial class CertForm : Form
|
|
||||||
{
|
|
||||||
public CertForm(MainForm mainForm)
|
public CertForm(MainForm mainForm)
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
FileStream fileStream = new FileStream(mainForm.TB_File.Text, FileMode.Open, FileAccess.Read);
|
FileStream fileStream = new(mainForm.TB_File.Text, FileMode.Open, FileAccess.Read);
|
||||||
byte[] array = new byte[512];
|
byte[] array = new byte[512];
|
||||||
fileStream.Position = 28672L;
|
fileStream.Position = 28672L;
|
||||||
fileStream.Read(array, 0, 512);
|
fileStream.Read(array, 0, 512);
|
||||||
hbxHexView.ByteProvider = new DynamicByteProvider(array);
|
hbxHexView.ByteProvider = new DynamicByteProvider(array);
|
||||||
fileStream.Close();
|
fileStream.Close();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,10 @@ using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace XCI_Explorer
|
namespace XCI_Explorer;
|
||||||
|
|
||||||
|
internal static class HFS0
|
||||||
{
|
{
|
||||||
internal static class HFS0
|
|
||||||
{
|
|
||||||
public class HFS0_Header
|
public class HFS0_Header
|
||||||
{
|
{
|
||||||
public byte[] Data;
|
public byte[] Data;
|
||||||
|
@ -48,5 +48,4 @@ namespace XCI_Explorer
|
||||||
}
|
}
|
||||||
|
|
||||||
public static HFS0_Header[] HFS0_Headers = new HFS0_Header[1];
|
public static HFS0_Header[] HFS0_Headers = new HFS0_Header[1];
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
227
XCI_Explorer/MainForm.Designer.cs
generated
227
XCI_Explorer/MainForm.Designer.cs
generated
|
@ -36,17 +36,19 @@ namespace XCI_Explorer
|
||||||
this.TB_File = new System.Windows.Forms.TextBox();
|
this.TB_File = new System.Windows.Forms.TextBox();
|
||||||
this.TABC_Main = new System.Windows.Forms.TabControl();
|
this.TABC_Main = new System.Windows.Forms.TabControl();
|
||||||
this.TABP_XCI = new System.Windows.Forms.TabPage();
|
this.TABP_XCI = new System.Windows.Forms.TabPage();
|
||||||
|
this.TB_GameRev = new System.Windows.Forms.RichTextBox();
|
||||||
|
this.label12 = new System.Windows.Forms.Label();
|
||||||
this.B_TrimXCI = new System.Windows.Forms.Button();
|
this.B_TrimXCI = new System.Windows.Forms.Button();
|
||||||
this.TB_ProdCode = new System.Windows.Forms.TextBox();
|
this.TB_ProdCode = new System.Windows.Forms.TextBox();
|
||||||
this.label8 = new System.Windows.Forms.Label();
|
this.label8 = new System.Windows.Forms.Label();
|
||||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||||
|
this.label11 = new System.Windows.Forms.Label();
|
||||||
this.TB_Dev = new System.Windows.Forms.TextBox();
|
this.TB_Dev = new System.Windows.Forms.TextBox();
|
||||||
this.label10 = new System.Windows.Forms.Label();
|
this.label10 = new System.Windows.Forms.Label();
|
||||||
this.TB_Name = new System.Windows.Forms.TextBox();
|
this.TB_Name = new System.Windows.Forms.TextBox();
|
||||||
this.label9 = new System.Windows.Forms.Label();
|
this.label9 = new System.Windows.Forms.Label();
|
||||||
this.PB_GameIcon = new System.Windows.Forms.PictureBox();
|
this.PB_GameIcon = new System.Windows.Forms.PictureBox();
|
||||||
this.CB_RegionName = new System.Windows.Forms.ComboBox();
|
this.CB_RegionName = new System.Windows.Forms.ComboBox();
|
||||||
this.TB_GameRev = new System.Windows.Forms.TextBox();
|
|
||||||
this.label7 = new System.Windows.Forms.Label();
|
this.label7 = new System.Windows.Forms.Label();
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||||
this.B_ViewCert = new System.Windows.Forms.Button();
|
this.B_ViewCert = new System.Windows.Forms.Button();
|
||||||
|
@ -87,9 +89,9 @@ namespace XCI_Explorer
|
||||||
//
|
//
|
||||||
// B_LoadROM
|
// B_LoadROM
|
||||||
//
|
//
|
||||||
this.B_LoadROM.Location = new System.Drawing.Point(4, 12);
|
this.B_LoadROM.Location = new System.Drawing.Point(4, 11);
|
||||||
this.B_LoadROM.Name = "B_LoadROM";
|
this.B_LoadROM.Name = "B_LoadROM";
|
||||||
this.B_LoadROM.Size = new System.Drawing.Size(75, 23);
|
this.B_LoadROM.Size = new System.Drawing.Size(75, 21);
|
||||||
this.B_LoadROM.TabIndex = 0;
|
this.B_LoadROM.TabIndex = 0;
|
||||||
this.B_LoadROM.Text = "Load Game";
|
this.B_LoadROM.Text = "Load Game";
|
||||||
this.B_LoadROM.UseVisualStyleBackColor = true;
|
this.B_LoadROM.UseVisualStyleBackColor = true;
|
||||||
|
@ -98,31 +100,31 @@ namespace XCI_Explorer
|
||||||
// TB_File
|
// TB_File
|
||||||
//
|
//
|
||||||
this.TB_File.AllowDrop = true;
|
this.TB_File.AllowDrop = true;
|
||||||
this.TB_File.Location = new System.Drawing.Point(85, 13);
|
this.TB_File.Location = new System.Drawing.Point(85, 12);
|
||||||
this.TB_File.Name = "TB_File";
|
this.TB_File.Name = "TB_File";
|
||||||
this.TB_File.ReadOnly = true;
|
this.TB_File.ReadOnly = true;
|
||||||
this.TB_File.Size = new System.Drawing.Size(258, 20);
|
this.TB_File.Size = new System.Drawing.Size(268, 21);
|
||||||
this.TB_File.TabIndex = 1;
|
this.TB_File.TabIndex = 1;
|
||||||
this.TB_File.DragDrop += new System.Windows.Forms.DragEventHandler(this.TB_File_DragDrop);
|
|
||||||
this.TB_File.DragEnter += new System.Windows.Forms.DragEventHandler(this.TB_File_DragEnter);
|
|
||||||
//
|
//
|
||||||
// TABC_Main
|
// TABC_Main
|
||||||
//
|
//
|
||||||
this.TABC_Main.Controls.Add(this.TABP_XCI);
|
this.TABC_Main.Controls.Add(this.TABP_XCI);
|
||||||
this.TABC_Main.Controls.Add(this.tabPage2);
|
this.TABC_Main.Controls.Add(this.tabPage2);
|
||||||
this.TABC_Main.Location = new System.Drawing.Point(4, 41);
|
this.TABC_Main.Location = new System.Drawing.Point(4, 38);
|
||||||
this.TABC_Main.Name = "TABC_Main";
|
this.TABC_Main.Name = "TABC_Main";
|
||||||
this.TABC_Main.SelectedIndex = 0;
|
this.TABC_Main.SelectedIndex = 0;
|
||||||
this.TABC_Main.Size = new System.Drawing.Size(355, 485);
|
this.TABC_Main.Size = new System.Drawing.Size(364, 511);
|
||||||
this.TABC_Main.TabIndex = 2;
|
this.TABC_Main.TabIndex = 2;
|
||||||
//
|
//
|
||||||
// TABP_XCI
|
// TABP_XCI
|
||||||
//
|
//
|
||||||
|
this.TABP_XCI.AllowDrop = true;
|
||||||
|
this.TABP_XCI.Controls.Add(this.TB_GameRev);
|
||||||
|
this.TABP_XCI.Controls.Add(this.label12);
|
||||||
this.TABP_XCI.Controls.Add(this.B_TrimXCI);
|
this.TABP_XCI.Controls.Add(this.B_TrimXCI);
|
||||||
this.TABP_XCI.Controls.Add(this.TB_ProdCode);
|
this.TABP_XCI.Controls.Add(this.TB_ProdCode);
|
||||||
this.TABP_XCI.Controls.Add(this.label8);
|
this.TABP_XCI.Controls.Add(this.label8);
|
||||||
this.TABP_XCI.Controls.Add(this.groupBox2);
|
this.TABP_XCI.Controls.Add(this.groupBox2);
|
||||||
this.TABP_XCI.Controls.Add(this.TB_GameRev);
|
|
||||||
this.TABP_XCI.Controls.Add(this.label7);
|
this.TABP_XCI.Controls.Add(this.label7);
|
||||||
this.TABP_XCI.Controls.Add(this.groupBox1);
|
this.TABP_XCI.Controls.Add(this.groupBox1);
|
||||||
this.TABP_XCI.Controls.Add(this.TB_ExactUsedSpace);
|
this.TABP_XCI.Controls.Add(this.TB_ExactUsedSpace);
|
||||||
|
@ -142,16 +144,37 @@ namespace XCI_Explorer
|
||||||
this.TABP_XCI.Location = new System.Drawing.Point(4, 22);
|
this.TABP_XCI.Location = new System.Drawing.Point(4, 22);
|
||||||
this.TABP_XCI.Name = "TABP_XCI";
|
this.TABP_XCI.Name = "TABP_XCI";
|
||||||
this.TABP_XCI.Padding = new System.Windows.Forms.Padding(3);
|
this.TABP_XCI.Padding = new System.Windows.Forms.Padding(3);
|
||||||
this.TABP_XCI.Size = new System.Drawing.Size(347, 459);
|
this.TABP_XCI.Size = new System.Drawing.Size(356, 485);
|
||||||
this.TABP_XCI.TabIndex = 0;
|
this.TABP_XCI.TabIndex = 0;
|
||||||
this.TABP_XCI.Text = "Main";
|
this.TABP_XCI.Text = "Main";
|
||||||
this.TABP_XCI.UseVisualStyleBackColor = true;
|
this.TABP_XCI.UseVisualStyleBackColor = true;
|
||||||
|
this.TABP_XCI.Click += new System.EventHandler(this.TABP_XCI_Click);
|
||||||
|
this.TABP_XCI.DragDrop += new System.Windows.Forms.DragEventHandler(this.TB_File_DragDrop);
|
||||||
|
this.TABP_XCI.DragEnter += new System.Windows.Forms.DragEventHandler(this.TB_File_DragEnter);
|
||||||
|
//
|
||||||
|
// TB_GameRev
|
||||||
|
//
|
||||||
|
this.TB_GameRev.Location = new System.Drawing.Point(15, 63);
|
||||||
|
this.TB_GameRev.Name = "TB_GameRev";
|
||||||
|
this.TB_GameRev.ReadOnly = true;
|
||||||
|
this.TB_GameRev.Size = new System.Drawing.Size(237, 99);
|
||||||
|
this.TB_GameRev.TabIndex = 23;
|
||||||
|
this.TB_GameRev.Text = "";
|
||||||
|
//
|
||||||
|
// label12
|
||||||
|
//
|
||||||
|
this.label12.AutoSize = true;
|
||||||
|
this.label12.Location = new System.Drawing.Point(75, 48);
|
||||||
|
this.label12.Name = "label12";
|
||||||
|
this.label12.Size = new System.Drawing.Size(125, 12);
|
||||||
|
this.label12.TabIndex = 22;
|
||||||
|
this.label12.Text = "0 BASE, 0 UPD, 0 DLC";
|
||||||
//
|
//
|
||||||
// B_TrimXCI
|
// B_TrimXCI
|
||||||
//
|
//
|
||||||
this.B_TrimXCI.Location = new System.Drawing.Point(90, 207);
|
this.B_TrimXCI.Location = new System.Drawing.Point(307, 178);
|
||||||
this.B_TrimXCI.Name = "B_TrimXCI";
|
this.B_TrimXCI.Name = "B_TrimXCI";
|
||||||
this.B_TrimXCI.Size = new System.Drawing.Size(70, 23);
|
this.B_TrimXCI.Size = new System.Drawing.Size(38, 46);
|
||||||
this.B_TrimXCI.TabIndex = 21;
|
this.B_TrimXCI.TabIndex = 21;
|
||||||
this.B_TrimXCI.Text = "Trim XCI";
|
this.B_TrimXCI.Text = "Trim XCI";
|
||||||
this.B_TrimXCI.UseVisualStyleBackColor = true;
|
this.B_TrimXCI.UseVisualStyleBackColor = true;
|
||||||
|
@ -159,76 +182,87 @@ namespace XCI_Explorer
|
||||||
//
|
//
|
||||||
// TB_ProdCode
|
// TB_ProdCode
|
||||||
//
|
//
|
||||||
this.TB_ProdCode.Location = new System.Drawing.Point(238, 115);
|
this.TB_ProdCode.Location = new System.Drawing.Point(258, 141);
|
||||||
this.TB_ProdCode.Name = "TB_ProdCode";
|
this.TB_ProdCode.Name = "TB_ProdCode";
|
||||||
this.TB_ProdCode.ReadOnly = true;
|
this.TB_ProdCode.ReadOnly = true;
|
||||||
this.TB_ProdCode.Size = new System.Drawing.Size(69, 20);
|
this.TB_ProdCode.Size = new System.Drawing.Size(87, 21);
|
||||||
this.TB_ProdCode.TabIndex = 20;
|
this.TB_ProdCode.TabIndex = 20;
|
||||||
//
|
//
|
||||||
// label8
|
// label8
|
||||||
//
|
//
|
||||||
this.label8.AutoSize = true;
|
this.label8.AutoSize = true;
|
||||||
this.label8.Location = new System.Drawing.Point(235, 99);
|
this.label8.Location = new System.Drawing.Point(258, 126);
|
||||||
this.label8.Name = "label8";
|
this.label8.Name = "label8";
|
||||||
this.label8.Size = new System.Drawing.Size(75, 13);
|
this.label8.Size = new System.Drawing.Size(83, 12);
|
||||||
this.label8.TabIndex = 19;
|
this.label8.TabIndex = 19;
|
||||||
this.label8.Text = "Product Code:";
|
this.label8.Text = "Product Code:";
|
||||||
//
|
//
|
||||||
// groupBox2
|
// groupBox2
|
||||||
//
|
//
|
||||||
|
this.groupBox2.Controls.Add(this.label11);
|
||||||
this.groupBox2.Controls.Add(this.TB_Dev);
|
this.groupBox2.Controls.Add(this.TB_Dev);
|
||||||
this.groupBox2.Controls.Add(this.label10);
|
this.groupBox2.Controls.Add(this.label10);
|
||||||
this.groupBox2.Controls.Add(this.TB_Name);
|
this.groupBox2.Controls.Add(this.TB_Name);
|
||||||
this.groupBox2.Controls.Add(this.label9);
|
this.groupBox2.Controls.Add(this.label9);
|
||||||
this.groupBox2.Controls.Add(this.PB_GameIcon);
|
this.groupBox2.Controls.Add(this.PB_GameIcon);
|
||||||
this.groupBox2.Controls.Add(this.CB_RegionName);
|
this.groupBox2.Controls.Add(this.CB_RegionName);
|
||||||
this.groupBox2.Location = new System.Drawing.Point(22, 296);
|
this.groupBox2.Location = new System.Drawing.Point(15, 285);
|
||||||
this.groupBox2.Name = "groupBox2";
|
this.groupBox2.Name = "groupBox2";
|
||||||
this.groupBox2.Size = new System.Drawing.Size(301, 154);
|
this.groupBox2.Size = new System.Drawing.Size(330, 178);
|
||||||
this.groupBox2.TabIndex = 18;
|
this.groupBox2.TabIndex = 18;
|
||||||
this.groupBox2.TabStop = false;
|
this.groupBox2.TabStop = false;
|
||||||
this.groupBox2.Text = "Game Infos";
|
this.groupBox2.Text = "Game Infos";
|
||||||
//
|
//
|
||||||
|
// label11
|
||||||
|
//
|
||||||
|
this.label11.AutoSize = true;
|
||||||
|
this.label11.Location = new System.Drawing.Point(6, 69);
|
||||||
|
this.label11.Name = "label11";
|
||||||
|
this.label11.Size = new System.Drawing.Size(59, 12);
|
||||||
|
this.label11.TabIndex = 25;
|
||||||
|
this.label11.Text = "Language:";
|
||||||
|
this.label11.Click += new System.EventHandler(this.label11_Click);
|
||||||
|
//
|
||||||
// TB_Dev
|
// TB_Dev
|
||||||
//
|
//
|
||||||
this.TB_Dev.Location = new System.Drawing.Point(6, 117);
|
this.TB_Dev.Location = new System.Drawing.Point(6, 138);
|
||||||
this.TB_Dev.Name = "TB_Dev";
|
this.TB_Dev.Name = "TB_Dev";
|
||||||
this.TB_Dev.ReadOnly = true;
|
this.TB_Dev.ReadOnly = true;
|
||||||
this.TB_Dev.Size = new System.Drawing.Size(145, 20);
|
this.TB_Dev.Size = new System.Drawing.Size(154, 21);
|
||||||
this.TB_Dev.TabIndex = 24;
|
this.TB_Dev.TabIndex = 24;
|
||||||
//
|
//
|
||||||
// label10
|
// label10
|
||||||
//
|
//
|
||||||
this.label10.AutoSize = true;
|
this.label10.AutoSize = true;
|
||||||
this.label10.Location = new System.Drawing.Point(3, 101);
|
this.label10.Location = new System.Drawing.Point(6, 123);
|
||||||
this.label10.Name = "label10";
|
this.label10.Name = "label10";
|
||||||
this.label10.Size = new System.Drawing.Size(59, 13);
|
this.label10.Size = new System.Drawing.Size(65, 12);
|
||||||
this.label10.TabIndex = 23;
|
this.label10.TabIndex = 23;
|
||||||
this.label10.Text = "Developer:";
|
this.label10.Text = "Developer:";
|
||||||
//
|
//
|
||||||
// TB_Name
|
// TB_Name
|
||||||
//
|
//
|
||||||
this.TB_Name.Location = new System.Drawing.Point(6, 66);
|
this.TB_Name.Location = new System.Drawing.Point(6, 35);
|
||||||
this.TB_Name.Name = "TB_Name";
|
this.TB_Name.Name = "TB_Name";
|
||||||
this.TB_Name.ReadOnly = true;
|
this.TB_Name.ReadOnly = true;
|
||||||
this.TB_Name.Size = new System.Drawing.Size(145, 20);
|
this.TB_Name.Size = new System.Drawing.Size(154, 21);
|
||||||
this.TB_Name.TabIndex = 22;
|
this.TB_Name.TabIndex = 22;
|
||||||
//
|
//
|
||||||
// label9
|
// label9
|
||||||
//
|
//
|
||||||
this.label9.AutoSize = true;
|
this.label9.AutoSize = true;
|
||||||
this.label9.Location = new System.Drawing.Point(3, 50);
|
this.label9.Location = new System.Drawing.Point(6, 20);
|
||||||
this.label9.Name = "label9";
|
this.label9.Name = "label9";
|
||||||
this.label9.Size = new System.Drawing.Size(38, 13);
|
this.label9.Size = new System.Drawing.Size(35, 12);
|
||||||
this.label9.TabIndex = 21;
|
this.label9.TabIndex = 21;
|
||||||
this.label9.Text = "Name:";
|
this.label9.Text = "Name:";
|
||||||
//
|
//
|
||||||
// PB_GameIcon
|
// PB_GameIcon
|
||||||
//
|
//
|
||||||
this.PB_GameIcon.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
|
this.PB_GameIcon.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
|
||||||
this.PB_GameIcon.Location = new System.Drawing.Point(190, 43);
|
this.PB_GameIcon.Location = new System.Drawing.Point(172, 20);
|
||||||
this.PB_GameIcon.Name = "PB_GameIcon";
|
this.PB_GameIcon.Name = "PB_GameIcon";
|
||||||
this.PB_GameIcon.Size = new System.Drawing.Size(105, 105);
|
this.PB_GameIcon.Size = new System.Drawing.Size(152, 147);
|
||||||
this.PB_GameIcon.TabIndex = 18;
|
this.PB_GameIcon.TabIndex = 18;
|
||||||
this.PB_GameIcon.TabStop = false;
|
this.PB_GameIcon.TabStop = false;
|
||||||
//
|
//
|
||||||
|
@ -236,28 +270,20 @@ namespace XCI_Explorer
|
||||||
//
|
//
|
||||||
this.CB_RegionName.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.CB_RegionName.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.CB_RegionName.FormattingEnabled = true;
|
this.CB_RegionName.FormattingEnabled = true;
|
||||||
this.CB_RegionName.Location = new System.Drawing.Point(77, 14);
|
this.CB_RegionName.Location = new System.Drawing.Point(6, 84);
|
||||||
this.CB_RegionName.Name = "CB_RegionName";
|
this.CB_RegionName.Name = "CB_RegionName";
|
||||||
this.CB_RegionName.Size = new System.Drawing.Size(138, 21);
|
this.CB_RegionName.Size = new System.Drawing.Size(154, 20);
|
||||||
this.CB_RegionName.TabIndex = 17;
|
this.CB_RegionName.TabIndex = 17;
|
||||||
this.CB_RegionName.SelectedIndexChanged += new System.EventHandler(this.CB_RegionName_SelectedIndexChanged);
|
this.CB_RegionName.SelectedIndexChanged += new System.EventHandler(this.CB_RegionName_SelectedIndexChanged);
|
||||||
//
|
//
|
||||||
// TB_GameRev
|
|
||||||
//
|
|
||||||
this.TB_GameRev.Location = new System.Drawing.Point(24, 115);
|
|
||||||
this.TB_GameRev.Name = "TB_GameRev";
|
|
||||||
this.TB_GameRev.ReadOnly = true;
|
|
||||||
this.TB_GameRev.Size = new System.Drawing.Size(124, 20);
|
|
||||||
this.TB_GameRev.TabIndex = 16;
|
|
||||||
//
|
|
||||||
// label7
|
// label7
|
||||||
//
|
//
|
||||||
this.label7.AutoSize = true;
|
this.label7.AutoSize = true;
|
||||||
this.label7.Location = new System.Drawing.Point(21, 99);
|
this.label7.Location = new System.Drawing.Point(11, 48);
|
||||||
this.label7.Name = "label7";
|
this.label7.Name = "label7";
|
||||||
this.label7.Size = new System.Drawing.Size(82, 13);
|
this.label7.Size = new System.Drawing.Size(59, 12);
|
||||||
this.label7.TabIndex = 15;
|
this.label7.TabIndex = 15;
|
||||||
this.label7.Text = "Game Revision:";
|
this.label7.Text = "Contents:";
|
||||||
//
|
//
|
||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
|
@ -265,18 +291,18 @@ namespace XCI_Explorer
|
||||||
this.groupBox1.Controls.Add(this.B_ClearCert);
|
this.groupBox1.Controls.Add(this.B_ClearCert);
|
||||||
this.groupBox1.Controls.Add(this.B_ImportCert);
|
this.groupBox1.Controls.Add(this.B_ImportCert);
|
||||||
this.groupBox1.Controls.Add(this.B_ExportCert);
|
this.groupBox1.Controls.Add(this.B_ExportCert);
|
||||||
this.groupBox1.Location = new System.Drawing.Point(22, 234);
|
this.groupBox1.Location = new System.Drawing.Point(15, 230);
|
||||||
this.groupBox1.Name = "groupBox1";
|
this.groupBox1.Name = "groupBox1";
|
||||||
this.groupBox1.Size = new System.Drawing.Size(301, 52);
|
this.groupBox1.Size = new System.Drawing.Size(330, 49);
|
||||||
this.groupBox1.TabIndex = 14;
|
this.groupBox1.TabIndex = 14;
|
||||||
this.groupBox1.TabStop = false;
|
this.groupBox1.TabStop = false;
|
||||||
this.groupBox1.Text = "Cert";
|
this.groupBox1.Text = "Cert";
|
||||||
//
|
//
|
||||||
// B_ViewCert
|
// B_ViewCert
|
||||||
//
|
//
|
||||||
this.B_ViewCert.Location = new System.Drawing.Point(156, 19);
|
this.B_ViewCert.Location = new System.Drawing.Point(168, 18);
|
||||||
this.B_ViewCert.Name = "B_ViewCert";
|
this.B_ViewCert.Name = "B_ViewCert";
|
||||||
this.B_ViewCert.Size = new System.Drawing.Size(66, 23);
|
this.B_ViewCert.Size = new System.Drawing.Size(74, 21);
|
||||||
this.B_ViewCert.TabIndex = 3;
|
this.B_ViewCert.TabIndex = 3;
|
||||||
this.B_ViewCert.Text = "View Cert";
|
this.B_ViewCert.Text = "View Cert";
|
||||||
this.B_ViewCert.UseVisualStyleBackColor = true;
|
this.B_ViewCert.UseVisualStyleBackColor = true;
|
||||||
|
@ -284,9 +310,9 @@ namespace XCI_Explorer
|
||||||
//
|
//
|
||||||
// B_ClearCert
|
// B_ClearCert
|
||||||
//
|
//
|
||||||
this.B_ClearCert.Location = new System.Drawing.Point(229, 19);
|
this.B_ClearCert.Location = new System.Drawing.Point(250, 18);
|
||||||
this.B_ClearCert.Name = "B_ClearCert";
|
this.B_ClearCert.Name = "B_ClearCert";
|
||||||
this.B_ClearCert.Size = new System.Drawing.Size(66, 23);
|
this.B_ClearCert.Size = new System.Drawing.Size(74, 21);
|
||||||
this.B_ClearCert.TabIndex = 2;
|
this.B_ClearCert.TabIndex = 2;
|
||||||
this.B_ClearCert.Text = "Clear Cert";
|
this.B_ClearCert.Text = "Clear Cert";
|
||||||
this.B_ClearCert.UseVisualStyleBackColor = true;
|
this.B_ClearCert.UseVisualStyleBackColor = true;
|
||||||
|
@ -294,9 +320,9 @@ namespace XCI_Explorer
|
||||||
//
|
//
|
||||||
// B_ImportCert
|
// B_ImportCert
|
||||||
//
|
//
|
||||||
this.B_ImportCert.Location = new System.Drawing.Point(83, 19);
|
this.B_ImportCert.Location = new System.Drawing.Point(86, 18);
|
||||||
this.B_ImportCert.Name = "B_ImportCert";
|
this.B_ImportCert.Name = "B_ImportCert";
|
||||||
this.B_ImportCert.Size = new System.Drawing.Size(67, 23);
|
this.B_ImportCert.Size = new System.Drawing.Size(74, 21);
|
||||||
this.B_ImportCert.TabIndex = 1;
|
this.B_ImportCert.TabIndex = 1;
|
||||||
this.B_ImportCert.Text = "Import Cert";
|
this.B_ImportCert.Text = "Import Cert";
|
||||||
this.B_ImportCert.UseVisualStyleBackColor = true;
|
this.B_ImportCert.UseVisualStyleBackColor = true;
|
||||||
|
@ -304,9 +330,9 @@ namespace XCI_Explorer
|
||||||
//
|
//
|
||||||
// B_ExportCert
|
// B_ExportCert
|
||||||
//
|
//
|
||||||
this.B_ExportCert.Location = new System.Drawing.Point(7, 19);
|
this.B_ExportCert.Location = new System.Drawing.Point(6, 18);
|
||||||
this.B_ExportCert.Name = "B_ExportCert";
|
this.B_ExportCert.Name = "B_ExportCert";
|
||||||
this.B_ExportCert.Size = new System.Drawing.Size(70, 23);
|
this.B_ExportCert.Size = new System.Drawing.Size(74, 21);
|
||||||
this.B_ExportCert.TabIndex = 0;
|
this.B_ExportCert.TabIndex = 0;
|
||||||
this.B_ExportCert.Text = "Export Cert";
|
this.B_ExportCert.Text = "Export Cert";
|
||||||
this.B_ExportCert.UseVisualStyleBackColor = true;
|
this.B_ExportCert.UseVisualStyleBackColor = true;
|
||||||
|
@ -314,120 +340,120 @@ namespace XCI_Explorer
|
||||||
//
|
//
|
||||||
// TB_ExactUsedSpace
|
// TB_ExactUsedSpace
|
||||||
//
|
//
|
||||||
this.TB_ExactUsedSpace.Location = new System.Drawing.Point(166, 181);
|
this.TB_ExactUsedSpace.Location = new System.Drawing.Point(152, 203);
|
||||||
this.TB_ExactUsedSpace.Name = "TB_ExactUsedSpace";
|
this.TB_ExactUsedSpace.Name = "TB_ExactUsedSpace";
|
||||||
this.TB_ExactUsedSpace.ReadOnly = true;
|
this.TB_ExactUsedSpace.ReadOnly = true;
|
||||||
this.TB_ExactUsedSpace.Size = new System.Drawing.Size(157, 20);
|
this.TB_ExactUsedSpace.Size = new System.Drawing.Size(152, 21);
|
||||||
this.TB_ExactUsedSpace.TabIndex = 13;
|
this.TB_ExactUsedSpace.TabIndex = 13;
|
||||||
//
|
//
|
||||||
// TB_ROMExactSize
|
// TB_ROMExactSize
|
||||||
//
|
//
|
||||||
this.TB_ROMExactSize.Location = new System.Drawing.Point(166, 154);
|
this.TB_ROMExactSize.Location = new System.Drawing.Point(152, 178);
|
||||||
this.TB_ROMExactSize.Name = "TB_ROMExactSize";
|
this.TB_ROMExactSize.Name = "TB_ROMExactSize";
|
||||||
this.TB_ROMExactSize.ReadOnly = true;
|
this.TB_ROMExactSize.ReadOnly = true;
|
||||||
this.TB_ROMExactSize.Size = new System.Drawing.Size(157, 20);
|
this.TB_ROMExactSize.Size = new System.Drawing.Size(152, 21);
|
||||||
this.TB_ROMExactSize.TabIndex = 12;
|
this.TB_ROMExactSize.TabIndex = 12;
|
||||||
//
|
//
|
||||||
// TB_UsedSpace
|
// TB_UsedSpace
|
||||||
//
|
//
|
||||||
this.TB_UsedSpace.Location = new System.Drawing.Point(91, 181);
|
this.TB_UsedSpace.Location = new System.Drawing.Point(77, 203);
|
||||||
this.TB_UsedSpace.Name = "TB_UsedSpace";
|
this.TB_UsedSpace.Name = "TB_UsedSpace";
|
||||||
this.TB_UsedSpace.ReadOnly = true;
|
this.TB_UsedSpace.ReadOnly = true;
|
||||||
this.TB_UsedSpace.Size = new System.Drawing.Size(69, 20);
|
this.TB_UsedSpace.Size = new System.Drawing.Size(69, 21);
|
||||||
this.TB_UsedSpace.TabIndex = 11;
|
this.TB_UsedSpace.TabIndex = 11;
|
||||||
//
|
//
|
||||||
// TB_ROMSize
|
// TB_ROMSize
|
||||||
//
|
//
|
||||||
this.TB_ROMSize.Location = new System.Drawing.Point(91, 154);
|
this.TB_ROMSize.Location = new System.Drawing.Point(77, 178);
|
||||||
this.TB_ROMSize.Name = "TB_ROMSize";
|
this.TB_ROMSize.Name = "TB_ROMSize";
|
||||||
this.TB_ROMSize.ReadOnly = true;
|
this.TB_ROMSize.ReadOnly = true;
|
||||||
this.TB_ROMSize.Size = new System.Drawing.Size(69, 20);
|
this.TB_ROMSize.Size = new System.Drawing.Size(69, 21);
|
||||||
this.TB_ROMSize.TabIndex = 10;
|
this.TB_ROMSize.TabIndex = 10;
|
||||||
//
|
//
|
||||||
// label6
|
// label6
|
||||||
//
|
//
|
||||||
this.label6.AutoSize = true;
|
this.label6.AutoSize = true;
|
||||||
this.label6.Location = new System.Drawing.Point(18, 181);
|
this.label6.Location = new System.Drawing.Point(4, 203);
|
||||||
this.label6.Name = "label6";
|
this.label6.Name = "label6";
|
||||||
this.label6.Size = new System.Drawing.Size(67, 13);
|
this.label6.Size = new System.Drawing.Size(71, 12);
|
||||||
this.label6.TabIndex = 9;
|
this.label6.TabIndex = 9;
|
||||||
this.label6.Text = "Used space:";
|
this.label6.Text = "Used space:";
|
||||||
//
|
//
|
||||||
// label5
|
// label5
|
||||||
//
|
//
|
||||||
this.label5.AutoSize = true;
|
this.label5.AutoSize = true;
|
||||||
this.label5.Location = new System.Drawing.Point(27, 157);
|
this.label5.Location = new System.Drawing.Point(13, 181);
|
||||||
this.label5.Name = "label5";
|
this.label5.Name = "label5";
|
||||||
this.label5.Size = new System.Drawing.Size(58, 13);
|
this.label5.Size = new System.Drawing.Size(59, 12);
|
||||||
this.label5.TabIndex = 8;
|
this.label5.TabIndex = 8;
|
||||||
this.label5.Text = "ROM Size:";
|
this.label5.Text = "ROM Size:";
|
||||||
//
|
//
|
||||||
// TB_MKeyRev
|
// TB_MKeyRev
|
||||||
//
|
//
|
||||||
this.TB_MKeyRev.Location = new System.Drawing.Point(24, 68);
|
this.TB_MKeyRev.Location = new System.Drawing.Point(191, 21);
|
||||||
this.TB_MKeyRev.Name = "TB_MKeyRev";
|
this.TB_MKeyRev.Name = "TB_MKeyRev";
|
||||||
this.TB_MKeyRev.ReadOnly = true;
|
this.TB_MKeyRev.ReadOnly = true;
|
||||||
this.TB_MKeyRev.Size = new System.Drawing.Size(124, 20);
|
this.TB_MKeyRev.Size = new System.Drawing.Size(154, 21);
|
||||||
this.TB_MKeyRev.TabIndex = 7;
|
this.TB_MKeyRev.TabIndex = 7;
|
||||||
//
|
//
|
||||||
// label4
|
// label4
|
||||||
//
|
//
|
||||||
this.label4.AutoSize = true;
|
this.label4.AutoSize = true;
|
||||||
this.label4.Location = new System.Drawing.Point(21, 52);
|
this.label4.Location = new System.Drawing.Point(189, 6);
|
||||||
this.label4.Name = "label4";
|
this.label4.Name = "label4";
|
||||||
this.label4.Size = new System.Drawing.Size(104, 13);
|
this.label4.Size = new System.Drawing.Size(119, 12);
|
||||||
this.label4.TabIndex = 6;
|
this.label4.TabIndex = 6;
|
||||||
this.label4.Text = "MasterKey Revision:";
|
this.label4.Text = "MasterKey Revision:";
|
||||||
//
|
//
|
||||||
// TB_SDKVer
|
// TB_SDKVer
|
||||||
//
|
//
|
||||||
this.TB_SDKVer.Location = new System.Drawing.Point(238, 68);
|
this.TB_SDKVer.Location = new System.Drawing.Point(258, 102);
|
||||||
this.TB_SDKVer.Name = "TB_SDKVer";
|
this.TB_SDKVer.Name = "TB_SDKVer";
|
||||||
this.TB_SDKVer.ReadOnly = true;
|
this.TB_SDKVer.ReadOnly = true;
|
||||||
this.TB_SDKVer.Size = new System.Drawing.Size(69, 20);
|
this.TB_SDKVer.Size = new System.Drawing.Size(87, 21);
|
||||||
this.TB_SDKVer.TabIndex = 5;
|
this.TB_SDKVer.TabIndex = 5;
|
||||||
//
|
//
|
||||||
// label3
|
// label3
|
||||||
//
|
//
|
||||||
this.label3.AutoSize = true;
|
this.label3.AutoSize = true;
|
||||||
this.label3.Location = new System.Drawing.Point(235, 52);
|
this.label3.Location = new System.Drawing.Point(258, 87);
|
||||||
this.label3.Name = "label3";
|
this.label3.Name = "label3";
|
||||||
this.label3.Size = new System.Drawing.Size(70, 13);
|
this.label3.Size = new System.Drawing.Size(77, 12);
|
||||||
this.label3.TabIndex = 4;
|
this.label3.TabIndex = 4;
|
||||||
this.label3.Text = "SDK Version:";
|
this.label3.Text = "SDK Version:";
|
||||||
//
|
//
|
||||||
// TB_Capacity
|
// TB_Capacity
|
||||||
//
|
//
|
||||||
this.TB_Capacity.Location = new System.Drawing.Point(238, 23);
|
this.TB_Capacity.Location = new System.Drawing.Point(258, 63);
|
||||||
this.TB_Capacity.Name = "TB_Capacity";
|
this.TB_Capacity.Name = "TB_Capacity";
|
||||||
this.TB_Capacity.ReadOnly = true;
|
this.TB_Capacity.ReadOnly = true;
|
||||||
this.TB_Capacity.Size = new System.Drawing.Size(69, 20);
|
this.TB_Capacity.Size = new System.Drawing.Size(87, 21);
|
||||||
this.TB_Capacity.TabIndex = 3;
|
this.TB_Capacity.TabIndex = 3;
|
||||||
//
|
//
|
||||||
// label2
|
// label2
|
||||||
//
|
//
|
||||||
this.label2.AutoSize = true;
|
this.label2.AutoSize = true;
|
||||||
this.label2.Location = new System.Drawing.Point(235, 7);
|
this.label2.Location = new System.Drawing.Point(258, 48);
|
||||||
this.label2.Name = "label2";
|
this.label2.Name = "label2";
|
||||||
this.label2.Size = new System.Drawing.Size(51, 13);
|
this.label2.Size = new System.Drawing.Size(59, 12);
|
||||||
this.label2.TabIndex = 2;
|
this.label2.TabIndex = 2;
|
||||||
this.label2.Text = "Capacity:";
|
this.label2.Text = "Capacity:";
|
||||||
//
|
//
|
||||||
// label1
|
// label1
|
||||||
//
|
//
|
||||||
this.label1.AutoSize = true;
|
this.label1.AutoSize = true;
|
||||||
this.label1.Location = new System.Drawing.Point(21, 7);
|
this.label1.Location = new System.Drawing.Point(12, 6);
|
||||||
this.label1.Name = "label1";
|
this.label1.Name = "label1";
|
||||||
this.label1.Size = new System.Drawing.Size(44, 13);
|
this.label1.Size = new System.Drawing.Size(59, 12);
|
||||||
this.label1.TabIndex = 1;
|
this.label1.TabIndex = 1;
|
||||||
this.label1.Text = "Title ID:";
|
this.label1.Text = "Title ID:";
|
||||||
//
|
//
|
||||||
// TB_TID
|
// TB_TID
|
||||||
//
|
//
|
||||||
this.TB_TID.Location = new System.Drawing.Point(24, 23);
|
this.TB_TID.Location = new System.Drawing.Point(15, 21);
|
||||||
this.TB_TID.Name = "TB_TID";
|
this.TB_TID.Name = "TB_TID";
|
||||||
this.TB_TID.ReadOnly = true;
|
this.TB_TID.ReadOnly = true;
|
||||||
this.TB_TID.Size = new System.Drawing.Size(124, 20);
|
this.TB_TID.Size = new System.Drawing.Size(170, 21);
|
||||||
this.TB_TID.TabIndex = 0;
|
this.TB_TID.TabIndex = 0;
|
||||||
//
|
//
|
||||||
// tabPage2
|
// tabPage2
|
||||||
|
@ -443,7 +469,7 @@ namespace XCI_Explorer
|
||||||
this.tabPage2.Location = new System.Drawing.Point(4, 22);
|
this.tabPage2.Location = new System.Drawing.Point(4, 22);
|
||||||
this.tabPage2.Name = "tabPage2";
|
this.tabPage2.Name = "tabPage2";
|
||||||
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
|
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
|
||||||
this.tabPage2.Size = new System.Drawing.Size(347, 459);
|
this.tabPage2.Size = new System.Drawing.Size(356, 485);
|
||||||
this.tabPage2.TabIndex = 1;
|
this.tabPage2.TabIndex = 1;
|
||||||
this.tabPage2.Text = "Partitions";
|
this.tabPage2.Text = "Partitions";
|
||||||
this.tabPage2.UseVisualStyleBackColor = true;
|
this.tabPage2.UseVisualStyleBackColor = true;
|
||||||
|
@ -451,18 +477,18 @@ namespace XCI_Explorer
|
||||||
// LB_HashedRegionSize
|
// LB_HashedRegionSize
|
||||||
//
|
//
|
||||||
this.LB_HashedRegionSize.AutoSize = true;
|
this.LB_HashedRegionSize.AutoSize = true;
|
||||||
this.LB_HashedRegionSize.Location = new System.Drawing.Point(6, 416);
|
this.LB_HashedRegionSize.Location = new System.Drawing.Point(6, 439);
|
||||||
this.LB_HashedRegionSize.Name = "LB_HashedRegionSize";
|
this.LB_HashedRegionSize.Name = "LB_HashedRegionSize";
|
||||||
this.LB_HashedRegionSize.Size = new System.Drawing.Size(101, 13);
|
this.LB_HashedRegionSize.Size = new System.Drawing.Size(107, 12);
|
||||||
this.LB_HashedRegionSize.TabIndex = 7;
|
this.LB_HashedRegionSize.TabIndex = 7;
|
||||||
this.LB_HashedRegionSize.Text = "HashedRegionSize:";
|
this.LB_HashedRegionSize.Text = "HashedRegionSize:";
|
||||||
//
|
//
|
||||||
// LB_ActualHash
|
// LB_ActualHash
|
||||||
//
|
//
|
||||||
this.LB_ActualHash.AutoSize = true;
|
this.LB_ActualHash.AutoSize = true;
|
||||||
this.LB_ActualHash.Location = new System.Drawing.Point(6, 443);
|
this.LB_ActualHash.Location = new System.Drawing.Point(6, 464);
|
||||||
this.LB_ActualHash.Name = "LB_ActualHash";
|
this.LB_ActualHash.Name = "LB_ActualHash";
|
||||||
this.LB_ActualHash.Size = new System.Drawing.Size(68, 13);
|
this.LB_ActualHash.Size = new System.Drawing.Size(77, 12);
|
||||||
this.LB_ActualHash.TabIndex = 6;
|
this.LB_ActualHash.TabIndex = 6;
|
||||||
this.LB_ActualHash.Text = "Actual Hash:";
|
this.LB_ActualHash.Text = "Actual Hash:";
|
||||||
this.LB_ActualHash.DoubleClick += new System.EventHandler(this.LB_ActualHash_DoubleClick);
|
this.LB_ActualHash.DoubleClick += new System.EventHandler(this.LB_ActualHash_DoubleClick);
|
||||||
|
@ -470,9 +496,9 @@ namespace XCI_Explorer
|
||||||
// LB_ExpectedHash
|
// LB_ExpectedHash
|
||||||
//
|
//
|
||||||
this.LB_ExpectedHash.AutoSize = true;
|
this.LB_ExpectedHash.AutoSize = true;
|
||||||
this.LB_ExpectedHash.Location = new System.Drawing.Point(6, 430);
|
this.LB_ExpectedHash.Location = new System.Drawing.Point(6, 452);
|
||||||
this.LB_ExpectedHash.Name = "LB_ExpectedHash";
|
this.LB_ExpectedHash.Name = "LB_ExpectedHash";
|
||||||
this.LB_ExpectedHash.Size = new System.Drawing.Size(73, 13);
|
this.LB_ExpectedHash.Size = new System.Drawing.Size(77, 12);
|
||||||
this.LB_ExpectedHash.TabIndex = 5;
|
this.LB_ExpectedHash.TabIndex = 5;
|
||||||
this.LB_ExpectedHash.Text = "Header Hash:";
|
this.LB_ExpectedHash.Text = "Header Hash:";
|
||||||
this.LB_ExpectedHash.DoubleClick += new System.EventHandler(this.LB_ExpectedHash_DoubleClick);
|
this.LB_ExpectedHash.DoubleClick += new System.EventHandler(this.LB_ExpectedHash_DoubleClick);
|
||||||
|
@ -480,9 +506,9 @@ namespace XCI_Explorer
|
||||||
// B_Extract
|
// B_Extract
|
||||||
//
|
//
|
||||||
this.B_Extract.Enabled = false;
|
this.B_Extract.Enabled = false;
|
||||||
this.B_Extract.Location = new System.Drawing.Point(296, 367);
|
this.B_Extract.Location = new System.Drawing.Point(296, 394);
|
||||||
this.B_Extract.Name = "B_Extract";
|
this.B_Extract.Name = "B_Extract";
|
||||||
this.B_Extract.Size = new System.Drawing.Size(48, 23);
|
this.B_Extract.Size = new System.Drawing.Size(48, 21);
|
||||||
this.B_Extract.TabIndex = 4;
|
this.B_Extract.TabIndex = 4;
|
||||||
this.B_Extract.Text = "Extract";
|
this.B_Extract.Text = "Extract";
|
||||||
this.B_Extract.UseVisualStyleBackColor = true;
|
this.B_Extract.UseVisualStyleBackColor = true;
|
||||||
|
@ -491,27 +517,27 @@ namespace XCI_Explorer
|
||||||
// LB_DataSize
|
// LB_DataSize
|
||||||
//
|
//
|
||||||
this.LB_DataSize.AutoSize = true;
|
this.LB_DataSize.AutoSize = true;
|
||||||
this.LB_DataSize.Location = new System.Drawing.Point(6, 403);
|
this.LB_DataSize.Location = new System.Drawing.Point(6, 427);
|
||||||
this.LB_DataSize.Name = "LB_DataSize";
|
this.LB_DataSize.Name = "LB_DataSize";
|
||||||
this.LB_DataSize.Size = new System.Drawing.Size(30, 13);
|
this.LB_DataSize.Size = new System.Drawing.Size(35, 12);
|
||||||
this.LB_DataSize.TabIndex = 3;
|
this.LB_DataSize.TabIndex = 3;
|
||||||
this.LB_DataSize.Text = "Size:";
|
this.LB_DataSize.Text = "Size:";
|
||||||
//
|
//
|
||||||
// LB_DataOffset
|
// LB_DataOffset
|
||||||
//
|
//
|
||||||
this.LB_DataOffset.AutoSize = true;
|
this.LB_DataOffset.AutoSize = true;
|
||||||
this.LB_DataOffset.Location = new System.Drawing.Point(6, 390);
|
this.LB_DataOffset.Location = new System.Drawing.Point(6, 415);
|
||||||
this.LB_DataOffset.Name = "LB_DataOffset";
|
this.LB_DataOffset.Name = "LB_DataOffset";
|
||||||
this.LB_DataOffset.Size = new System.Drawing.Size(38, 13);
|
this.LB_DataOffset.Size = new System.Drawing.Size(47, 12);
|
||||||
this.LB_DataOffset.TabIndex = 2;
|
this.LB_DataOffset.TabIndex = 2;
|
||||||
this.LB_DataOffset.Text = "Offset:";
|
this.LB_DataOffset.Text = "Offset:";
|
||||||
//
|
//
|
||||||
// LB_SelectedData
|
// LB_SelectedData
|
||||||
//
|
//
|
||||||
this.LB_SelectedData.AutoSize = true;
|
this.LB_SelectedData.AutoSize = true;
|
||||||
this.LB_SelectedData.Location = new System.Drawing.Point(6, 367);
|
this.LB_SelectedData.Location = new System.Drawing.Point(6, 394);
|
||||||
this.LB_SelectedData.Name = "LB_SelectedData";
|
this.LB_SelectedData.Name = "LB_SelectedData";
|
||||||
this.LB_SelectedData.Size = new System.Drawing.Size(51, 13);
|
this.LB_SelectedData.Size = new System.Drawing.Size(53, 12);
|
||||||
this.LB_SelectedData.TabIndex = 1;
|
this.LB_SelectedData.TabIndex = 1;
|
||||||
this.LB_SelectedData.Text = "FileName";
|
this.LB_SelectedData.Text = "FileName";
|
||||||
//
|
//
|
||||||
|
@ -521,7 +547,7 @@ namespace XCI_Explorer
|
||||||
this.TV_Partitions.HideSelection = false;
|
this.TV_Partitions.HideSelection = false;
|
||||||
this.TV_Partitions.Location = new System.Drawing.Point(3, 3);
|
this.TV_Partitions.Location = new System.Drawing.Point(3, 3);
|
||||||
this.TV_Partitions.Name = "TV_Partitions";
|
this.TV_Partitions.Name = "TV_Partitions";
|
||||||
this.TV_Partitions.Size = new System.Drawing.Size(341, 361);
|
this.TV_Partitions.Size = new System.Drawing.Size(350, 385);
|
||||||
this.TV_Partitions.TabIndex = 0;
|
this.TV_Partitions.TabIndex = 0;
|
||||||
this.TV_Partitions.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.TV_Partitions_AfterSelect);
|
this.TV_Partitions.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.TV_Partitions_AfterSelect);
|
||||||
//
|
//
|
||||||
|
@ -533,9 +559,9 @@ namespace XCI_Explorer
|
||||||
// MainForm
|
// MainForm
|
||||||
//
|
//
|
||||||
this.AllowDrop = true;
|
this.AllowDrop = true;
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(362, 529);
|
this.ClientSize = new System.Drawing.Size(370, 553);
|
||||||
this.Controls.Add(this.TABC_Main);
|
this.Controls.Add(this.TABC_Main);
|
||||||
this.Controls.Add(this.TB_File);
|
this.Controls.Add(this.TB_File);
|
||||||
this.Controls.Add(this.B_LoadROM);
|
this.Controls.Add(this.B_LoadROM);
|
||||||
|
@ -555,6 +581,7 @@ namespace XCI_Explorer
|
||||||
this.tabPage2.PerformLayout();
|
this.tabPage2.PerformLayout();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
this.PerformLayout();
|
this.PerformLayout();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -591,7 +618,6 @@ namespace XCI_Explorer
|
||||||
private TextBox TB_ROMSize;
|
private TextBox TB_ROMSize;
|
||||||
private Label label6;
|
private Label label6;
|
||||||
private Label label5;
|
private Label label5;
|
||||||
private TextBox TB_GameRev;
|
|
||||||
private Label label7;
|
private Label label7;
|
||||||
private GroupBox groupBox1;
|
private GroupBox groupBox1;
|
||||||
private Button B_ClearCert;
|
private Button B_ClearCert;
|
||||||
|
@ -617,5 +643,8 @@ namespace XCI_Explorer
|
||||||
private Label LB_HashedRegionSize;
|
private Label LB_HashedRegionSize;
|
||||||
private BackgroundWorker backgroundWorker1;
|
private BackgroundWorker backgroundWorker1;
|
||||||
private Button B_TrimXCI;
|
private Button B_TrimXCI;
|
||||||
|
private Label label11;
|
||||||
|
private Label label12;
|
||||||
|
private RichTextBox TB_GameRev;
|
||||||
}
|
}
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load diff
|
@ -1,10 +1,10 @@
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace XCI_Explorer
|
namespace XCI_Explorer;
|
||||||
|
|
||||||
|
public static class NACP
|
||||||
{
|
{
|
||||||
public static class NACP
|
|
||||||
{
|
|
||||||
public class NACP_String
|
public class NACP_String
|
||||||
{
|
{
|
||||||
public byte[] Data;
|
public byte[] Data;
|
||||||
|
@ -38,5 +38,4 @@ namespace XCI_Explorer
|
||||||
public static NACP_String[] NACP_Strings = new NACP_String[16];
|
public static NACP_String[] NACP_Strings = new NACP_String[16];
|
||||||
|
|
||||||
public static NACP_Data[] NACP_Datas = new NACP_Data[1];
|
public static NACP_Data[] NACP_Datas = new NACP_Data[1];
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,10 @@ using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace XCI_Explorer
|
namespace XCI_Explorer;
|
||||||
|
|
||||||
|
internal static class NCA
|
||||||
{
|
{
|
||||||
internal static class NCA
|
|
||||||
{
|
|
||||||
public class NCA_Header
|
public class NCA_Header
|
||||||
{
|
{
|
||||||
public byte[] Data;
|
public byte[] Data;
|
||||||
|
@ -31,5 +31,4 @@ namespace XCI_Explorer
|
||||||
}
|
}
|
||||||
|
|
||||||
public static NCA_Header[] NCA_Headers = new NCA_Header[1];
|
public static NCA_Header[] NCA_Headers = new NCA_Header[1];
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,10 @@ using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace XCI_Explorer
|
namespace XCI_Explorer;
|
||||||
|
|
||||||
|
internal static class PFS0
|
||||||
{
|
{
|
||||||
internal static class PFS0
|
|
||||||
{
|
|
||||||
public class PFS0_Header
|
public class PFS0_Header
|
||||||
{
|
{
|
||||||
public byte[] Data;
|
public byte[] Data;
|
||||||
|
@ -44,5 +44,4 @@ namespace XCI_Explorer
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PFS0_Header[] PFS0_Headers = new PFS0_Header[1];
|
public static PFS0_Header[] PFS0_Headers = new PFS0_Header[1];
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,28 +1,26 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.IO;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace XCI_Explorer
|
namespace XCI_Explorer;
|
||||||
|
|
||||||
|
internal static class Program
|
||||||
{
|
{
|
||||||
internal static class Program
|
|
||||||
{
|
|
||||||
[STAThread]
|
[STAThread]
|
||||||
private static void Main()
|
private static void Main()
|
||||||
{
|
{
|
||||||
AppDomain.CurrentDomain.AssemblyResolve += (Object sender, ResolveEventArgs args) =>
|
AppDomain.CurrentDomain.AssemblyResolve += (object sender, ResolveEventArgs args) =>
|
||||||
{
|
{
|
||||||
System.Reflection.AssemblyName embeddedAssembly = new System.Reflection.AssemblyName(args.Name);
|
System.Reflection.AssemblyName embeddedAssembly = new System.Reflection.AssemblyName(args.Name);
|
||||||
String resourceName = "XCI_Explorer" + "." + embeddedAssembly.Name + ".dll";
|
string resourceName = "XCI_Explorer" + "." + embeddedAssembly.Name + ".dll";
|
||||||
|
|
||||||
using (var stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
|
using Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName);
|
||||||
{
|
byte[] assemblyData = new byte[stream.Length];
|
||||||
Byte[] assemblyData = new Byte[stream.Length];
|
|
||||||
stream.Read(assemblyData, 0, assemblyData.Length);
|
stream.Read(assemblyData, 0, assemblyData.Length);
|
||||||
return System.Reflection.Assembly.Load(assemblyData);
|
return System.Reflection.Assembly.Load(assemblyData);
|
||||||
}
|
|
||||||
};
|
};
|
||||||
Application.EnableVisualStyles();
|
Application.EnableVisualStyles();
|
||||||
Application.SetCompatibleTextRenderingDefault(false);
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
Application.Run(new MainForm());
|
Application.Run(new MainForm());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using XCI_Explorer.Helpers;
|
using XCI_Explorer.Helpers;
|
||||||
|
|
||||||
namespace XCI_Explorer
|
namespace XCI_Explorer;
|
||||||
|
|
||||||
|
public class TreeViewFileSystem
|
||||||
{
|
{
|
||||||
public class TreeViewFileSystem
|
|
||||||
{
|
|
||||||
public TreeView treeView;
|
public TreeView treeView;
|
||||||
|
|
||||||
public TreeViewFileSystem(TreeView tv)
|
public TreeViewFileSystem(TreeView tv)
|
||||||
|
@ -13,28 +13,28 @@ namespace XCI_Explorer
|
||||||
|
|
||||||
public BetterTreeNode AddDir(string name, BetterTreeNode parent = null)
|
public BetterTreeNode AddDir(string name, BetterTreeNode parent = null)
|
||||||
{
|
{
|
||||||
BetterTreeNode betterTreeNode = new BetterTreeNode(name);
|
BetterTreeNode betterTreeNode = new(name)
|
||||||
betterTreeNode.Offset = -1L;
|
{
|
||||||
betterTreeNode.Size = -1L;
|
Offset = -1L,
|
||||||
|
Size = -1L
|
||||||
|
};
|
||||||
parent.Nodes.Add(betterTreeNode);
|
parent.Nodes.Add(betterTreeNode);
|
||||||
return betterTreeNode;
|
return betterTreeNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BetterTreeNode AddFile(string name, BetterTreeNode parent, long offset, long size)
|
public BetterTreeNode AddFile(string name, BetterTreeNode parent, long offset, long size) => AddFile(name, parent, offset, size, 0, "", "");
|
||||||
{
|
|
||||||
return AddFile(name, parent, offset, size, 0, "", "");
|
|
||||||
}
|
|
||||||
|
|
||||||
public BetterTreeNode AddFile(string name, BetterTreeNode parent, long offset, long size, long HashedRegionSize, string ExpectedHash, string ActualHash)
|
public BetterTreeNode AddFile(string name, BetterTreeNode parent, long offset, long size, long HashedRegionSize, string ExpectedHash, string ActualHash)
|
||||||
{
|
{
|
||||||
BetterTreeNode betterTreeNode = new BetterTreeNode(name);
|
BetterTreeNode betterTreeNode = new(name)
|
||||||
betterTreeNode.Offset = offset;
|
{
|
||||||
betterTreeNode.Size = size;
|
Offset = offset,
|
||||||
betterTreeNode.ExpectedHash = ExpectedHash;
|
Size = size,
|
||||||
betterTreeNode.ActualHash = ActualHash;
|
ExpectedHash = ExpectedHash,
|
||||||
betterTreeNode.HashedRegionSize = HashedRegionSize;
|
ActualHash = ActualHash,
|
||||||
|
HashedRegionSize = HashedRegionSize
|
||||||
|
};
|
||||||
parent.Nodes.Add(betterTreeNode);
|
parent.Nodes.Add(betterTreeNode);
|
||||||
return betterTreeNode;
|
return betterTreeNode;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,130 +1,73 @@
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
namespace XCI_Explorer
|
namespace XCI_Explorer;
|
||||||
|
|
||||||
|
internal static class Util
|
||||||
{
|
{
|
||||||
internal static class Util
|
|
||||||
{
|
|
||||||
public static string GetCapacity(int id)
|
public static string GetCapacity(int id)
|
||||||
{
|
{
|
||||||
switch (id)
|
return id switch
|
||||||
{
|
{
|
||||||
case 250:
|
250 => "1GB",
|
||||||
return "1GB";
|
248 => "2GB",
|
||||||
case 248:
|
240 => "4GB",
|
||||||
return "2GB";
|
224 => "8GB",
|
||||||
case 240:
|
225 => "16GB",
|
||||||
return "4GB";
|
226 => "32GB",
|
||||||
case 224:
|
_ => "?",
|
||||||
return "8GB";
|
};
|
||||||
case 225:
|
|
||||||
return "16GB";
|
|
||||||
case 226:
|
|
||||||
return "32GB";
|
|
||||||
default:
|
|
||||||
return "?";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetMkey(byte id)
|
public static string GetMkey(byte id)
|
||||||
{
|
{
|
||||||
switch (id)
|
return id switch
|
||||||
{
|
{
|
||||||
case 0:
|
0 or 1 => "MasterKey0 (1.0.0-2.3.0)",
|
||||||
case 1:
|
2 => "MasterKey1 (3.0.0)",
|
||||||
return "MasterKey0 (1.0.0-2.3.0)";
|
3 => "MasterKey2 (3.0.1-3.0.2)",
|
||||||
case 2:
|
4 => "MasterKey3 (4.0.0-4.1.0)",
|
||||||
return "MasterKey1 (3.0.0)";
|
5 => "MasterKey4 (5.0.0-5.1.0)",
|
||||||
case 3:
|
6 => "MasterKey5 (6.0.0-6.1.0)",
|
||||||
return "MasterKey2 (3.0.1-3.0.2)";
|
7 => "MasterKey6 (6.2.0)",
|
||||||
case 4:
|
8 => "MasterKey7 (7.0.0-8.0.1)",
|
||||||
return "MasterKey3 (4.0.0-4.1.0)";
|
9 => "MasterKey8 (8.1.0-8.1.1)",
|
||||||
case 5:
|
10 => "MasterKey9 (9.0.0-9.0.1)",
|
||||||
return "MasterKey4 (5.0.0-5.1.0)";
|
11 => "MasterKey10 (9.1.0-12.0.3)",
|
||||||
case 6:
|
12 => "MasterKey11 (12.1.0)",
|
||||||
return "MasterKey5 (6.0.0-6.1.0)";
|
13 => "MasterKey12 (13.0.0-13.2.1)",
|
||||||
case 7:
|
14 => "MasterKey13 (14.0.0-14.1.2)",
|
||||||
return "MasterKey6 (6.2.0)";
|
15 => "MasterKey14 (15.0.0-?)",
|
||||||
case 8:
|
16 => "MasterKey15",
|
||||||
return "MasterKey7 (7.0.0-8.0.1)";
|
17 => "MasterKey16",
|
||||||
case 9:
|
18 => "MasterKey17",
|
||||||
return "MasterKey8 (8.1.0-8.1.1)";
|
19 => "MasterKey18",
|
||||||
case 10:
|
20 => "MasterKey19",
|
||||||
return "MasterKey9 (9.0.0-9.0.1)";
|
21 => "MasterKey20",
|
||||||
case 11:
|
22 => "MasterKey21",
|
||||||
return "MasterKey10 (9.1.0-12.0.3)";
|
23 => "MasterKey22",
|
||||||
case 12:
|
24 => "MasterKey23",
|
||||||
return "MasterKey11 (12.1.0)";
|
25 => "MasterKey24",
|
||||||
case 13:
|
26 => "MasterKey25",
|
||||||
return "MasterKey12 (13.0.0-?)";
|
27 => "MasterKey26",
|
||||||
case 14:
|
28 => "MasterKey27",
|
||||||
return "MasterKey13";
|
29 => "MasterKey28",
|
||||||
case 15:
|
30 => "MasterKey29",
|
||||||
return "MasterKey14";
|
31 => "MasterKey30",
|
||||||
case 16:
|
32 => "MasterKey31",
|
||||||
return "MasterKey15";
|
33 => "MasterKey32",
|
||||||
case 17:
|
_ => "?",
|
||||||
return "MasterKey16";
|
};
|
||||||
case 18:
|
|
||||||
return "MasterKey17";
|
|
||||||
case 19:
|
|
||||||
return "MasterKey18";
|
|
||||||
case 20:
|
|
||||||
return "MasterKey19";
|
|
||||||
case 21:
|
|
||||||
return "MasterKey20";
|
|
||||||
case 22:
|
|
||||||
return "MasterKey21";
|
|
||||||
case 23:
|
|
||||||
return "MasterKey22";
|
|
||||||
case 24:
|
|
||||||
return "MasterKey23";
|
|
||||||
case 25:
|
|
||||||
return "MasterKey24";
|
|
||||||
case 26:
|
|
||||||
return "MasterKey25";
|
|
||||||
case 27:
|
|
||||||
return "MasterKey26";
|
|
||||||
case 28:
|
|
||||||
return "MasterKey27";
|
|
||||||
case 29:
|
|
||||||
return "MasterKey28";
|
|
||||||
case 30:
|
|
||||||
return "MasterKey29";
|
|
||||||
case 31:
|
|
||||||
return "MasterKey30";
|
|
||||||
case 32:
|
|
||||||
return "MasterKey31";
|
|
||||||
case 33:
|
|
||||||
return "MasterKey32";
|
|
||||||
default:
|
|
||||||
return "?";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool checkFile(string filepath)
|
public static byte[] StringToByteArray(string hex) => (from x in Enumerable.Range(0, hex.Length)
|
||||||
{
|
|
||||||
return File.Exists(filepath);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static byte[] StringToByteArray(string hex)
|
|
||||||
{
|
|
||||||
return (from x in Enumerable.Range(0, hex.Length)
|
|
||||||
where x % 2 == 0
|
where x % 2 == 0
|
||||||
select Convert.ToByte(hex.Substring(x, 2), 16)).ToArray();
|
select Convert.ToByte(hex.Substring(x, 2), 16)).ToArray();
|
||||||
}
|
|
||||||
|
|
||||||
public static string Base64Encode(string plainText)
|
public static string Base64Encode(string plainText)
|
||||||
{
|
=> Convert.ToBase64String(Encoding.UTF8.GetBytes(plainText));
|
||||||
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
|
|
||||||
return System.Convert.ToBase64String(plainTextBytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string Base64Decode(string base64EncodedData)
|
public static string Base64Decode(string base64EncodedData)
|
||||||
{
|
=> Encoding.UTF8.GetString(Convert.FromBase64String(base64EncodedData));
|
||||||
var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
|
|
||||||
return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,10 @@ using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace XCI_Explorer
|
namespace XCI_Explorer;
|
||||||
|
|
||||||
|
public static class XCI
|
||||||
{
|
{
|
||||||
public static class XCI
|
|
||||||
{
|
|
||||||
public class XCI_Header
|
public class XCI_Header
|
||||||
{
|
{
|
||||||
public byte[] Data;
|
public byte[] Data;
|
||||||
|
@ -27,5 +27,4 @@ namespace XCI_Explorer
|
||||||
}
|
}
|
||||||
|
|
||||||
public static XCI_Header[] XCI_Headers = new XCI_Header[1];
|
public static XCI_Header[] XCI_Headers = new XCI_Header[1];
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
namespace XTSSharp
|
namespace XTSSharp;
|
||||||
|
|
||||||
|
public class RandomAccessSectorStream : Stream
|
||||||
{
|
{
|
||||||
public class RandomAccessSectorStream : Stream
|
|
||||||
{
|
|
||||||
private readonly byte[] _buffer;
|
private readonly byte[] _buffer;
|
||||||
private readonly int _bufferSize;
|
private readonly int _bufferSize;
|
||||||
private readonly SectorStream _s;
|
private readonly SectorStream _s;
|
||||||
|
@ -17,18 +17,21 @@ namespace XTSSharp
|
||||||
public override bool CanWrite => _s.CanWrite;
|
public override bool CanWrite => _s.CanWrite;
|
||||||
public override long Length => _s.Length + _bufferPos;
|
public override long Length => _s.Length + _bufferPos;
|
||||||
|
|
||||||
public override long Position {
|
public override long Position
|
||||||
get {
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
if (!_bufferLoaded)
|
if (!_bufferLoaded)
|
||||||
{
|
{
|
||||||
return _s.Position + _bufferPos;
|
return _s.Position + _bufferPos;
|
||||||
}
|
}
|
||||||
return _s.Position - _bufferSize + _bufferPos;
|
return _s.Position - _bufferSize + _bufferPos;
|
||||||
}
|
}
|
||||||
set {
|
set
|
||||||
|
{
|
||||||
if (value < 0)
|
if (value < 0)
|
||||||
{
|
{
|
||||||
throw new ArgumentOutOfRangeException("value");
|
throw new ArgumentOutOfRangeException(nameof(value));
|
||||||
}
|
}
|
||||||
long num = value % _bufferSize;
|
long num = value % _bufferSize;
|
||||||
long position = value - num;
|
long position = value - num;
|
||||||
|
@ -84,19 +87,12 @@ namespace XTSSharp
|
||||||
|
|
||||||
public override long Seek(long offset, SeekOrigin origin)
|
public override long Seek(long offset, SeekOrigin origin)
|
||||||
{
|
{
|
||||||
long num;
|
long num = origin switch
|
||||||
switch (origin)
|
|
||||||
{
|
{
|
||||||
case SeekOrigin.Begin:
|
SeekOrigin.Begin => offset,
|
||||||
num = offset;
|
SeekOrigin.End => Length - offset,
|
||||||
break;
|
_ => Position + offset,
|
||||||
case SeekOrigin.End:
|
};
|
||||||
num = Length - offset;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
num = Position + offset;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Position = num;
|
Position = num;
|
||||||
return num;
|
return num;
|
||||||
}
|
}
|
||||||
|
@ -191,5 +187,4 @@ namespace XTSSharp
|
||||||
_bufferPos = 0;
|
_bufferPos = 0;
|
||||||
Array.Clear(_buffer, 0, _bufferSize);
|
Array.Clear(_buffer, 0, _bufferSize);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,16 @@
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
namespace XTSSharp
|
namespace XTSSharp;
|
||||||
|
|
||||||
|
public class SectorStream : Stream
|
||||||
{
|
{
|
||||||
public class SectorStream : Stream
|
|
||||||
{
|
|
||||||
private readonly Stream _baseStream;
|
private readonly Stream _baseStream;
|
||||||
private readonly long _offset;
|
private readonly long _offset;
|
||||||
private ulong _currentSector;
|
private ulong _currentSector;
|
||||||
|
|
||||||
public int SectorSize {
|
public int SectorSize
|
||||||
|
{
|
||||||
get;
|
get;
|
||||||
private set;
|
private set;
|
||||||
}
|
}
|
||||||
|
@ -19,11 +20,14 @@ namespace XTSSharp
|
||||||
public override bool CanWrite => _baseStream.CanWrite;
|
public override bool CanWrite => _baseStream.CanWrite;
|
||||||
public override long Length => _baseStream.Length - _offset;
|
public override long Length => _baseStream.Length - _offset;
|
||||||
|
|
||||||
public override long Position {
|
public override long Position
|
||||||
get {
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
return _baseStream.Position - _offset;
|
return _baseStream.Position - _offset;
|
||||||
}
|
}
|
||||||
set {
|
set
|
||||||
|
{
|
||||||
ValidateSizeMultiple(value);
|
ValidateSizeMultiple(value);
|
||||||
_baseStream.Position = value + _offset;
|
_baseStream.Position = value + _offset;
|
||||||
_currentSector = (ulong)(value / SectorSize);
|
_currentSector = (ulong)(value / SectorSize);
|
||||||
|
@ -78,19 +82,12 @@ namespace XTSSharp
|
||||||
|
|
||||||
public override long Seek(long offset, SeekOrigin origin)
|
public override long Seek(long offset, SeekOrigin origin)
|
||||||
{
|
{
|
||||||
long num;
|
long num = origin switch
|
||||||
switch (origin)
|
|
||||||
{
|
{
|
||||||
case SeekOrigin.Begin:
|
SeekOrigin.Begin => offset,
|
||||||
num = offset;
|
SeekOrigin.End => Length - offset,
|
||||||
break;
|
_ => Position + offset,
|
||||||
case SeekOrigin.End:
|
};
|
||||||
num = Length - offset;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
num = Position + offset;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Position = num;
|
Position = num;
|
||||||
return num;
|
return num;
|
||||||
}
|
}
|
||||||
|
@ -115,5 +112,4 @@ namespace XTSSharp
|
||||||
_baseStream.Write(buffer, offset, count);
|
_baseStream.Write(buffer, offset, count);
|
||||||
_currentSector++;
|
_currentSector++;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
|
|
||||||
namespace XTSSharp
|
namespace XTSSharp;
|
||||||
|
|
||||||
|
public class Xts
|
||||||
{
|
{
|
||||||
public class Xts
|
|
||||||
{
|
|
||||||
private readonly SymmetricAlgorithm _key1;
|
private readonly SymmetricAlgorithm _key1;
|
||||||
private readonly SymmetricAlgorithm _key2;
|
private readonly SymmetricAlgorithm _key2;
|
||||||
|
|
||||||
|
@ -12,15 +12,15 @@ namespace XTSSharp
|
||||||
{
|
{
|
||||||
if (create == null)
|
if (create == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException("create");
|
throw new ArgumentNullException(nameof(create));
|
||||||
}
|
}
|
||||||
if (key1 == null)
|
if (key1 == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException("key1");
|
throw new ArgumentNullException(nameof(key1));
|
||||||
}
|
}
|
||||||
if (key2 == null)
|
if (key2 == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException("key2");
|
throw new ArgumentNullException(nameof(key2));
|
||||||
}
|
}
|
||||||
_key1 = create();
|
_key1 = create();
|
||||||
_key2 = create();
|
_key2 = create();
|
||||||
|
@ -54,7 +54,7 @@ namespace XTSSharp
|
||||||
{
|
{
|
||||||
if (key == null)
|
if (key == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException("key");
|
throw new ArgumentNullException(nameof(key));
|
||||||
}
|
}
|
||||||
if (key.Length * 8 != expectedSize)
|
if (key.Length * 8 != expectedSize)
|
||||||
{
|
{
|
||||||
|
@ -62,5 +62,4 @@ namespace XTSSharp
|
||||||
}
|
}
|
||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,33 +1,32 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
|
|
||||||
namespace XTSSharp
|
namespace XTSSharp;
|
||||||
|
|
||||||
|
public class XtsAes128 : Xts
|
||||||
{
|
{
|
||||||
public class XtsAes128 : Xts
|
|
||||||
{
|
|
||||||
private const int KEY_LENGTH = 128;
|
private const int KEY_LENGTH = 128;
|
||||||
private const int KEY_BYTE_LENGTH = 16;
|
private const int KEY_BYTE_LENGTH = 16;
|
||||||
|
|
||||||
protected XtsAes128(Func<SymmetricAlgorithm> create, byte[] key1, byte[] key2)
|
protected XtsAes128(Func<SymmetricAlgorithm> create, byte[] key1, byte[] key2)
|
||||||
: base(create, Xts.VerifyKey(128, key1), Xts.VerifyKey(128, key2))
|
: base(create, VerifyKey(128, key1), VerifyKey(128, key2))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Xts Create(byte[] key1, byte[] key2)
|
public static Xts Create(byte[] key1, byte[] key2)
|
||||||
{
|
{
|
||||||
Xts.VerifyKey(128, key1);
|
VerifyKey(128, key1);
|
||||||
Xts.VerifyKey(128, key2);
|
VerifyKey(128, key2);
|
||||||
return new XtsAes128(Aes.Create, key1, key2);
|
return new XtsAes128(Aes.Create, key1, key2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Xts Create(byte[] key)
|
public static Xts Create(byte[] key)
|
||||||
{
|
{
|
||||||
Xts.VerifyKey(256, key);
|
VerifyKey(256, key);
|
||||||
byte[] array = new byte[16];
|
byte[] array = new byte[16];
|
||||||
byte[] array2 = new byte[16];
|
byte[] array2 = new byte[16];
|
||||||
Buffer.BlockCopy(key, 0, array, 0, 16);
|
Buffer.BlockCopy(key, 0, array, 0, 16);
|
||||||
Buffer.BlockCopy(key, 16, array2, 0, 16);
|
Buffer.BlockCopy(key, 16, array2, 0, 16);
|
||||||
return new XtsAes128(Aes.Create, array, array2);
|
return new XtsAes128(Aes.Create, array, array2);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,33 +1,32 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
|
|
||||||
namespace XTSSharp
|
namespace XTSSharp;
|
||||||
|
|
||||||
|
public class XtsAes256 : Xts
|
||||||
{
|
{
|
||||||
public class XtsAes256 : Xts
|
|
||||||
{
|
|
||||||
private const int KEY_LENGTH = 256;
|
private const int KEY_LENGTH = 256;
|
||||||
private const int KEY_BYTE_LENGTH = 32;
|
private const int KEY_BYTE_LENGTH = 32;
|
||||||
|
|
||||||
protected XtsAes256(Func<SymmetricAlgorithm> create, byte[] key1, byte[] key2)
|
protected XtsAes256(Func<SymmetricAlgorithm> create, byte[] key1, byte[] key2)
|
||||||
: base(create, Xts.VerifyKey(256, key1), Xts.VerifyKey(256, key2))
|
: base(create, VerifyKey(256, key1), VerifyKey(256, key2))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Xts Create(byte[] key1, byte[] key2)
|
public static Xts Create(byte[] key1, byte[] key2)
|
||||||
{
|
{
|
||||||
Xts.VerifyKey(256, key1);
|
VerifyKey(256, key1);
|
||||||
Xts.VerifyKey(256, key2);
|
VerifyKey(256, key2);
|
||||||
return new XtsAes256(Aes.Create, key1, key2);
|
return new XtsAes256(Aes.Create, key1, key2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Xts Create(byte[] key)
|
public static Xts Create(byte[] key)
|
||||||
{
|
{
|
||||||
Xts.VerifyKey(512, key);
|
VerifyKey(512, key);
|
||||||
byte[] array = new byte[32];
|
byte[] array = new byte[32];
|
||||||
byte[] array2 = new byte[32];
|
byte[] array2 = new byte[32];
|
||||||
Buffer.BlockCopy(key, 0, array, 0, 32);
|
Buffer.BlockCopy(key, 0, array, 0, 32);
|
||||||
Buffer.BlockCopy(key, 32, array2, 0, 32);
|
Buffer.BlockCopy(key, 32, array2, 0, 32);
|
||||||
return new XtsAes256(Aes.Create, array, array2);
|
return new XtsAes256(Aes.Create, array, array2);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
|
|
||||||
namespace XTSSharp
|
namespace XTSSharp;
|
||||||
|
|
||||||
|
public class XtsCryptoTransform : IDisposable
|
||||||
{
|
{
|
||||||
public class XtsCryptoTransform : IDisposable
|
|
||||||
{
|
|
||||||
private readonly byte[] _cc = new byte[16];
|
private readonly byte[] _cc = new byte[16];
|
||||||
private readonly bool _decrypting;
|
private readonly bool _decrypting;
|
||||||
private readonly ICryptoTransform _key1;
|
private readonly ICryptoTransform _key1;
|
||||||
|
@ -17,11 +17,11 @@ namespace XTSSharp
|
||||||
{
|
{
|
||||||
if (key1 == null)
|
if (key1 == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException("key1");
|
throw new ArgumentNullException(nameof(key1));
|
||||||
}
|
}
|
||||||
if (key2 == null)
|
if (key2 == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException("key2");
|
throw new ArgumentNullException(nameof(key2));
|
||||||
}
|
}
|
||||||
_key1 = key1;
|
_key1 = key1;
|
||||||
_key2 = key2;
|
_key2 = key2;
|
||||||
|
@ -138,5 +138,4 @@ namespace XTSSharp
|
||||||
i[0] ^= 135;
|
i[0] ^= 135;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
namespace XTSSharp
|
namespace XTSSharp;
|
||||||
|
|
||||||
|
public class XtsSectorStream : SectorStream
|
||||||
{
|
{
|
||||||
public class XtsSectorStream : SectorStream
|
|
||||||
{
|
|
||||||
public const int DEFAULT_SECTOR_SIZE = 512;
|
public const int DEFAULT_SECTOR_SIZE = 512;
|
||||||
private readonly byte[] _tempBuffer;
|
private readonly byte[] _tempBuffer;
|
||||||
private readonly Xts _xts;
|
private readonly Xts _xts;
|
||||||
|
@ -70,5 +70,4 @@ namespace XTSSharp
|
||||||
}
|
}
|
||||||
return _decryptor.TransformBlock(_tempBuffer, 0, num, buffer, offset, currentSector);
|
return _decryptor.TransformBlock(_tempBuffer, 0, num, buffer, offset, currentSector);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
namespace XTSSharp
|
namespace XTSSharp;
|
||||||
|
|
||||||
|
public class XtsStream : RandomAccessSectorStream
|
||||||
{
|
{
|
||||||
public class XtsStream : RandomAccessSectorStream
|
|
||||||
{
|
|
||||||
public XtsStream(Stream baseStream, Xts xts)
|
public XtsStream(Stream baseStream, Xts xts)
|
||||||
: this(baseStream, xts, 512)
|
: this(baseStream, xts, 512)
|
||||||
{
|
{
|
||||||
|
@ -18,5 +18,4 @@ namespace XTSSharp
|
||||||
: base(new XtsSectorStream(baseStream, xts, sectorSize, offset), true)
|
: base(new XtsSectorStream(baseStream, xts, sectorSize, offset), true)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue