From 1a2be26c724874600f733019b785c19fec827cbc Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 7 Jul 2022 15:10:31 -0700 Subject: [PATCH] Finalize intial info output --- BurnOutSharp/FileType/MicrosoftCAB.cs | 92 +++++++++++++++++++++++---- 1 file changed, 79 insertions(+), 13 deletions(-) diff --git a/BurnOutSharp/FileType/MicrosoftCAB.cs b/BurnOutSharp/FileType/MicrosoftCAB.cs index c95ee0a2..2f2f647d 100644 --- a/BurnOutSharp/FileType/MicrosoftCAB.cs +++ b/BurnOutSharp/FileType/MicrosoftCAB.cs @@ -43,16 +43,6 @@ namespace BurnOutSharp.FileType string tempPath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); Directory.CreateDirectory(tempPath); - // TEMP SHIT CODE - - byte[] bytes = File.ReadAllBytes(file); - - int index = 0; - MSCABCabinet cabinet = MSCABCabinet.Deserialize(bytes, ref index); - cabinet?.PrintInfo(); - - // END TEMP SHIT CODE - CabInfo cabInfo = new CabInfo(file); cabInfo.Unpack(tempPath); @@ -357,6 +347,9 @@ namespace BurnOutSharp.FileType /// public void PrintInfo() { + // TODO: Move to CFHEADER + #region CFHEADER + if (Header == null) { Console.WriteLine("There is no header associated with this cabinet."); @@ -374,7 +367,7 @@ namespace BurnOutSharp.FileType Console.WriteLine($" Version: {Header.VersionMajor}.{Header.VersionMinor}"); Console.WriteLine($" FolderCount: {Header.FolderCount:X4}"); Console.WriteLine($" FileCount: {Header.FileCount:X4}"); - Console.WriteLine($" Flags: {Header.Flags} ({Header.Flags:X4})"); + Console.WriteLine($" Flags: {Header.Flags} ({(ushort)Header.Flags:X4})"); Console.WriteLine($" SetID: {Header.SetID:X4}"); Console.WriteLine($" CabinetIndex: {Header.CabinetIndex:X4}"); @@ -398,8 +391,81 @@ namespace BurnOutSharp.FileType Console.WriteLine($" DiskNext: {Encoding.ASCII.GetString(Header.DiskNext).TrimEnd('\0')}"); } - // TODO: Add CFFOLDER output - // TODO: Add CFFILE output + Console.WriteLine(); + + #endregion + + // TODO: Move to CFFOLDER + #region CFFOLDER + + if (Folders == null || Folders.Length == 0) + { + Console.WriteLine("There are no folders associated with this cabinet."); + return; + } + + Console.WriteLine("CFFOLDER INFORMATION:"); + Console.WriteLine("--------------------------------------------"); + for (int i = 0; i < Folders.Length; i++) + { + CFFOLDER folder = Folders[i]; + Console.WriteLine($" CFFOLDER {i:X4}:"); + + if (folder == null) + { + Console.WriteLine($" Not found or NULL"); + Console.WriteLine(); + continue; + } + + Console.WriteLine($" CabStartOffset: {folder.CabStartOffset:X8}"); + Console.WriteLine($" DataCount: {folder.DataCount:X4}"); + Console.WriteLine($" CompressionType: {folder.CompressionType} ({(ushort)folder.CompressionType:X4})"); + // TODO: Output reserved data + + Console.WriteLine(); + } + + Console.WriteLine(); + + #endregion + + // TODO: Move to CFFILE + #region CFFILE + + if (Folders == null || Folders.Length == 0) + { + Console.WriteLine("There are no folders associated with this cabinet."); + return; + } + + Console.WriteLine("CFFILE INFORMATION:"); + Console.WriteLine("--------------------------------------------"); + for (int i = 0; i < Files.Length; i++) + { + CFFILE file = Files[i]; + Console.WriteLine($" CFFILE {i:X4}:"); + + if (file == null) + { + Console.WriteLine($" Not found or NULL"); + Console.WriteLine(); + continue; + } + + Console.WriteLine($" FileSize: {file.FileSize:X8}"); + Console.WriteLine($" FolderStartOffset: {file.FolderStartOffset:X4}"); + Console.WriteLine($" FolderIndex: {file.FolderIndex} ({(ushort)file.FolderIndex:X4})"); + Console.WriteLine($" DateTime: {file.DateAndTimeAsDateTime} ({file.Date:X4} {file.Time:X4})"); + Console.WriteLine($" Attributes: {file.Attributes} ({(ushort)file.Attributes:X4})"); + Console.WriteLine($" Name: {file.NameAsString}"); + + Console.WriteLine(); + } + + Console.WriteLine(); + + #endregion } #endregion