diff --git a/BurnOutSharp/Enums.cs b/BurnOutSharp/Enums.cs index c861df19..fca0e028 100644 --- a/BurnOutSharp/Enums.cs +++ b/BurnOutSharp/Enums.cs @@ -10,6 +10,11 @@ /// UNKNOWN, + /// + /// AACS media key block + /// + AACSMediaKeyBlock, + /// /// BFPK custom archive /// diff --git a/BurnOutSharp/Tools/Utilities.cs b/BurnOutSharp/Tools/Utilities.cs index f90a0aae..1d4e8258 100644 --- a/BurnOutSharp/Tools/Utilities.cs +++ b/BurnOutSharp/Tools/Utilities.cs @@ -22,6 +22,18 @@ namespace BurnOutSharp.Tools return SupportedFileType.UNKNOWN; // TODO: For all modelled types, use the constants instead of hardcoded values here + #region AACSMediaKeyBlock + + // Block starting with verify media key record + if (magic.StartsWith(new byte?[] { 0x81, 0x00, 0x00, 0x14 })) + return SupportedFileType.AACSMediaKeyBlock; + + // Block starting with type and version record + if (magic.StartsWith(new byte?[] { 0x10, 0x00, 0x00, 0x0C })) + return SupportedFileType.AACSMediaKeyBlock; + + #endregion + #region BFPK if (magic.StartsWith(new byte?[] { 0x42, 0x46, 0x50, 0x4b })) @@ -344,6 +356,19 @@ namespace BurnOutSharp.Tools // Normalize the extension extension = extension.TrimStart('.').Trim(); + #region AACSMediaKeyBlock + + // Shares an extension with INF setup information so it can't be used accurately + // Blu-ray + // if (extension.Equals("inf", StringComparison.OrdinalIgnoreCase)) + // return SupportedFileType.AACSMediaKeyBlock; + + // HD-DVD + if (extension.Equals("aacs", StringComparison.OrdinalIgnoreCase)) + return SupportedFileType.AACSMediaKeyBlock; + + #endregion + #region BFPK // No extensions registered for BFPK @@ -731,6 +756,7 @@ namespace BurnOutSharp.Tools { switch (fileType) { + // case SupportedFileType.AACSMediaKeyBlock: return new FileType.AACSMediaKeyBlock(); case SupportedFileType.BFPK: return new FileType.BFPK(); case SupportedFileType.BSP: return new FileType.BSP(); case SupportedFileType.BZip2: return new FileType.BZip2();