Change namespaces but don't move yet

This commit is contained in:
Matt Nadareski
2023-03-13 22:22:52 -04:00
parent 450a8cd5bd
commit 15310a6c47
3 changed files with 86 additions and 7 deletions

View File

@@ -3,12 +3,13 @@ using System.Collections.Concurrent;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using BurnOutSharp.Interfaces;
using BurnOutSharp;
using BinaryObjectScanner.Interfaces;
using BinaryObjectScanner.Wrappers;
using static BinaryObjectScanner.Utilities.Dictionary;
using System.Linq;
namespace BurnOutSharp.FileType
namespace BinaryObjectScanner.FileType
{
/// <summary>
/// Executable or library
@@ -37,6 +38,84 @@ namespace BurnOutSharp.FileType
// - Can this somehow delegate to the proper extractable type?
return null;
// The below code is a copy of what is currently in Scan, but without any of the
// extraction code or packer filtering code. It is not currently enabled since it
// is not as complete as the IScannable implementation and therefore cannot be reasonably
// used as a replacement yet.
// Files can be protected in multiple ways
var protections = new ConcurrentQueue<string>();
// Load the current file content for debug only
byte[] fileContent = null;
if (includeDebug)
{
try
{
using (BinaryReader br = new BinaryReader(stream, Encoding.Default, true))
{
fileContent = br.ReadBytes((int)stream.Length);
}
}
catch (Exception ex)
{
if (includeDebug) Console.WriteLine(ex);
}
}
// Get the wrapper for the appropriate executable type
WrapperBase wrapper = WrapperFactory.CreateExecutableWrapper(stream);
if (wrapper == null)
return null;
// Iterate through all generic content checks
if (fileContent != null)
{
Parallel.ForEach(ScanningClasses.ContentCheckClasses, checkClass =>
{
string protection = checkClass.CheckContents(file, fileContent, includeDebug);
protections.Enqueue(protection);
});
}
// If we have an MS-DOS executable
if (wrapper is MSDOS mz)
{
// No-op
}
// If we have a New Executable
else if (wrapper is NewExecutable nex)
{
Parallel.ForEach(ScanningClasses.NewExecutableCheckClasses, checkClass =>
{
string protection = checkClass.CheckNewExecutable(file, nex, includeDebug);
protections.Enqueue(protection);
});
}
// If we have a Linear Executable
else if (wrapper is LinearExecutable lex)
{
Parallel.ForEach(ScanningClasses.LinearExecutableCheckClasses, checkClass =>
{
string protection = checkClass.CheckLinearExecutable(file, lex, includeDebug);
protections.Enqueue(protection);
});
}
// If we have a Portable Executable
else if (wrapper is PortableExecutable pex)
{
Parallel.ForEach(ScanningClasses.PortableExecutableCheckClasses, checkClass =>
{
string protection = checkClass.CheckPortableExecutable(file, pex, includeDebug);
protections.Enqueue(protection);
});
}
return string.Join(";", protections.ToArray());
}
/// <inheritdoc/>

View File

@@ -1,7 +1,8 @@
using System.Collections.Concurrent;
using System.IO;
using BurnOutSharp;
namespace BurnOutSharp.Interfaces
namespace BinaryObjectScanner.Interfaces
{
/// <summary>
/// Mark a file type as being able to be scanned

View File

@@ -5,7 +5,6 @@ using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BurnOutSharp.Interfaces;
using BinaryObjectScanner.Interfaces;
using BinaryObjectScanner.Utilities;
using static BinaryObjectScanner.Utilities.Dictionary;
@@ -449,7 +448,7 @@ namespace BurnOutSharp
case SupportedFileType.AACSMediaKeyBlock: return new BinaryObjectScanner.FileType.AACSMediaKeyBlock();
case SupportedFileType.BDPlusSVM: return new BinaryObjectScanner.FileType.BDPlusSVM();
//case SupportedFileType.CIA: return new BinaryObjectScanner.FileType.CIA();
case SupportedFileType.Executable: return new FileType.Executable();
case SupportedFileType.Executable: return new BinaryObjectScanner.FileType.Executable();
case SupportedFileType.LDSCRYPT: return new BinaryObjectScanner.FileType.LDSCRYPT();
//case SupportedFileType.N3DS: return new BinaryObjectScanner.FileType.N3DS();
//case SupportedFileType.Nitro: return new BinaryObjectScanner.FileType.Nitro();
@@ -472,7 +471,7 @@ namespace BurnOutSharp
case SupportedFileType.BZip2: return new BinaryObjectScanner.FileType.BZip2();
case SupportedFileType.CFB: return new BinaryObjectScanner.FileType.CFB();
//case SupportedFileType.CIA: return new BinaryObjectScanner.FileType.CIA();
case SupportedFileType.Executable: return new FileType.Executable();
case SupportedFileType.Executable: return new BinaryObjectScanner.FileType.Executable();
case SupportedFileType.GCF: return new BinaryObjectScanner.FileType.GCF();
case SupportedFileType.GZIP: return new BinaryObjectScanner.FileType.GZIP();
case SupportedFileType.InstallShieldArchiveV3: return new BinaryObjectScanner.FileType.InstallShieldArchiveV3();
@@ -509,7 +508,7 @@ namespace BurnOutSharp
{
switch (fileType)
{
case SupportedFileType.Executable: return new FileType.Executable();
case SupportedFileType.Executable: return new BinaryObjectScanner.FileType.Executable();
default: return null;
}
}