From ea9902c946648b90485b1e94230eba34de0cf10d Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 28 Dec 2022 14:40:40 -0800 Subject: [PATCH] Add and use MS-CAB constants --- BurnOutSharp.Builders/MicrosoftCabinet.cs | 6 ++++-- BurnOutSharp.Models/MicrosoftCabinet/CFHEADER.cs | 2 +- BurnOutSharp.Models/MicrosoftCabinet/Constants.cs | 11 +++++++++++ BurnOutSharp.Wrappers/MicrosoftCabinet.cs | 2 +- 4 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 BurnOutSharp.Models/MicrosoftCabinet/Constants.cs diff --git a/BurnOutSharp.Builders/MicrosoftCabinet.cs b/BurnOutSharp.Builders/MicrosoftCabinet.cs index 58de048f..4cfc7d72 100644 --- a/BurnOutSharp.Builders/MicrosoftCabinet.cs +++ b/BurnOutSharp.Builders/MicrosoftCabinet.cs @@ -3,6 +3,7 @@ using System.IO; using System.Text; using BurnOutSharp.Models.MicrosoftCabinet; using BurnOutSharp.Utilities; +using static BurnOutSharp.Models.MicrosoftCabinet.Constants; namespace BurnOutSharp.Builders { @@ -125,8 +126,9 @@ namespace BurnOutSharp.Builders { CFHEADER header = new CFHEADER(); - header.Signature = data.ReadUInt32(); - if (header.Signature != 0x4643534D) + byte[] signature = data.ReadBytes(4); + header.Signature = Encoding.ASCII.GetString(signature); + if (header.Signature != SignatureString) return null; header.Reserved1 = data.ReadUInt32(); diff --git a/BurnOutSharp.Models/MicrosoftCabinet/CFHEADER.cs b/BurnOutSharp.Models/MicrosoftCabinet/CFHEADER.cs index bc9f3163..c190ecb0 100644 --- a/BurnOutSharp.Models/MicrosoftCabinet/CFHEADER.cs +++ b/BurnOutSharp.Models/MicrosoftCabinet/CFHEADER.cs @@ -14,7 +14,7 @@ namespace BurnOutSharp.Models.MicrosoftCabinet /// Contains the characters "M", "S", "C", and "F" (bytes 0x4D, 0x53, 0x43, /// 0x46). This field is used to ensure that the file is a cabinet (.cab) file. /// - public uint Signature; + public string Signature; /// /// Reserved field; MUST be set to 0 (zero). diff --git a/BurnOutSharp.Models/MicrosoftCabinet/Constants.cs b/BurnOutSharp.Models/MicrosoftCabinet/Constants.cs new file mode 100644 index 00000000..5063a1e2 --- /dev/null +++ b/BurnOutSharp.Models/MicrosoftCabinet/Constants.cs @@ -0,0 +1,11 @@ +namespace BurnOutSharp.Models.MicrosoftCabinet +{ + public static class Constants + { + public static readonly byte[] SignatureBytes = new byte[] { 0x4d, 0x53, 0x43, 0x46 }; + + public const string SignatureString = "MSCF"; + + public const uint SignatureUInt32 = 0x4643534d; + } +} \ No newline at end of file diff --git a/BurnOutSharp.Wrappers/MicrosoftCabinet.cs b/BurnOutSharp.Wrappers/MicrosoftCabinet.cs index d8fd7d3f..5921e956 100644 --- a/BurnOutSharp.Wrappers/MicrosoftCabinet.cs +++ b/BurnOutSharp.Wrappers/MicrosoftCabinet.cs @@ -12,7 +12,7 @@ namespace BurnOutSharp.Wrappers #region Header /// - public uint Signature => _cabinet.Header.Signature; + public string Signature => _cabinet.Header.Signature; /// public uint Reserved1 => _cabinet.Header.Reserved1;