diff --git a/BurnOutSharp.Wrappers/N3DS.cs b/BurnOutSharp.Wrappers/N3DS.cs
index 2f7c18d9..c6778498 100644
--- a/BurnOutSharp.Wrappers/N3DS.cs
+++ b/BurnOutSharp.Wrappers/N3DS.cs
@@ -197,6 +197,13 @@ namespace BurnOutSharp.Wrappers
#endregion
+ #region ExeFS Headers
+
+ ///
+ public Models.N3DS.ExeFSHeader[] ExeFSHeaders => _cart.ExeFSHeaders;
+
+ #endregion
+
#endregion
#region Instance Variables
@@ -276,6 +283,7 @@ namespace BurnOutSharp.Wrappers
PrintDevelopmentCardInfoHeader();
PrintPartitions();
PrintExtendedHeaders();
+ PrintExeFSHeaders();
}
///
@@ -595,8 +603,8 @@ namespace BurnOutSharp.Wrappers
Console.WriteLine($" AccessDec signature (RSA-2048-SHA256): {BitConverter.ToString(extendedHeader.AccessDescSignature).Replace('-', ' ')}");
Console.WriteLine($" NCCH HDR RSA-2048 public key: {BitConverter.ToString(extendedHeader.NCCHHDRPublicKey).Replace('-', ' ')}");
-
-
+
+
Console.WriteLine($" Access control info (for limitations of first ACI):");
Console.WriteLine($" ARM11 local system capabilities:");
Console.WriteLine($" Program ID: {extendedHeader.ACIForLimitations.ARM11LocalSystemCapabilities.ProgramID}");
@@ -632,6 +640,54 @@ namespace BurnOutSharp.Wrappers
Console.WriteLine();
}
+ ///
+ /// Print ExeFS header header information
+ ///
+ private void PrintExeFSHeaders()
+ {
+ Console.WriteLine(" ExeFS Header Information:");
+ Console.WriteLine(" -------------------------");
+ if (ExeFSHeaders == null || ExeFSHeaders.Length == 0)
+ {
+ Console.WriteLine(" No ExeFS headers");
+ }
+ else
+ {
+ for (int i = 0; i < ExeFSHeaders.Length; i++)
+ {
+ var exeFSHeader = ExeFSHeaders[i];
+ Console.WriteLine($" ExeFS Header {i}");
+ if (exeFSHeader == null)
+ {
+ Console.WriteLine($" Unrecognized partition data, no data can be parsed");
+ }
+ else
+ {
+ Console.WriteLine($" File headers:");
+ for (int j = 0; j < exeFSHeader.FileHeaders.Length; j++)
+ {
+ var fileHeader = exeFSHeader.FileHeaders[j];
+ Console.WriteLine(value: $" File Header {j}");
+ Console.WriteLine(value: $" File name: {fileHeader.FileName}");
+ Console.WriteLine(value: $" File offset: {fileHeader.FileOffset}");
+ Console.WriteLine(value: $" File size: {fileHeader.FileSize}");
+ }
+
+ Console.WriteLine(value: $" Reserved: {BitConverter.ToString(exeFSHeader.Reserved).Replace('-', ' ')}");
+
+ Console.WriteLine($" File hashes:");
+ for (int j = 0; j < exeFSHeader.FileHashes.Length; j++)
+ {
+ var fileHash = exeFSHeader.FileHashes[j];
+ Console.WriteLine(value: $" File Hash {j}");
+ Console.WriteLine(value: $" SHA-256: {BitConverter.ToString(fileHash).Replace('-', ' ')}");
+ }
+ }
+ }
+ }
+ Console.WriteLine();
+ }
+
#endregion
}
}
\ No newline at end of file