Update libraries

This commit is contained in:
Matt Nadareski
2024-04-17 12:12:01 -04:00
parent f876a4e4a6
commit 115ea02822
8 changed files with 141 additions and 77 deletions

View File

@@ -81,14 +81,14 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="SabreTools.Compression" Version="0.4.2" />
<PackageReference Include="SabreTools.Compression" Version="0.4.4" />
<PackageReference Include="SabreTools.Hashing" Version="1.2.0" />
<PackageReference Include="SabreTools.IO" Version="1.3.3" />
<PackageReference Include="SabreTools.IO" Version="1.3.6" />
<PackageReference Include="SabreTools.Matching" Version="1.3.1" />
<PackageReference Include="SabreTools.Models" Version="1.4.2" />
<PackageReference Include="SabreTools.Serialization" Version="1.5.0" />
<PackageReference Include="SabreTools.Serialization" Version="1.5.1" />
<PackageReference Include="UnshieldSharp" Version="1.7.4" />
<PackageReference Include="WiseUnpacker" Version="1.3.3" />
<PackageReference Include="WiseUnpacker" Version="1.3.4" />
</ItemGroup>
</Project>

View File

@@ -2,7 +2,7 @@ using System;
using System.IO;
using System.Linq;
using BinaryObjectScanner.Interfaces;
using SabreTools.IO;
using SabreTools.IO.Extensions;
namespace BinaryObjectScanner.FileType
{

View File

@@ -3,9 +3,10 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using BinaryObjectScanner.Interfaces;
using SabreTools.IO;
using SabreTools.IO.Extensions;
using SabreTools.Matching;
using SabreTools.Serialization.Wrappers;
using WiseUnpacker;
using Wise = WiseUnpacker.WiseUnpacker;
namespace BinaryObjectScanner.Packer
@@ -151,14 +152,14 @@ namespace BinaryObjectScanner.Packer
// Ensure that we have an archive end
if (format.ArchiveEnd > 0)
{
overlayOffset = dataStart + format.ArchiveEnd;
overlayOffset = (int)(dataStart + format.ArchiveEnd);
int archiveEndLoaded = overlayData.ReadInt32(ref overlayOffset);
if (archiveEndLoaded != 0)
format.ArchiveEnd = archiveEndLoaded;
}
// Skip to the start of the archive
overlayOffset = dataStart + format.ArchiveStart;
overlayOffset = (int)(dataStart + format.ArchiveStart);
// Skip over the initialization text, if we expect it
if (format.InitText)
@@ -316,47 +317,5 @@ namespace BinaryObjectScanner.Packer
return null;
}
/// <summary>
/// Class representing the properties of each recognized Wise installer format
/// </summary>
/// TODO: Requires all fields to be writable in package before replacement
private class FormatProperty
{
/// <summary>
/// Offset to the executable data
/// </summary>
public int ExecutableOffset { get; set; }
/// <summary>
/// Indicates if this format includes a DLL at the start or not
/// </summary>
public bool Dll { get; set; }
/// <summary>
/// Offset within the data where the archive starts
/// </summary>
public int ArchiveStart { get; set; }
/// <summary>
/// Position in the archive head of the archive end
/// </summary>
public int ArchiveEnd { get; set; }
/// <summary>
/// Format includes initialization text
/// </summary>
public bool InitText { get; set; }
/// <summary>
/// Position of the filename within the data
/// </summary>
public int FilenamePosition { get; set; }
/// <summary>
/// Format does not include a CRC
/// </summary>
public bool NoCrc { get; set; }
}
}
}

View File

@@ -7,7 +7,7 @@ using System.IO;
using System.Linq;
using BinaryObjectScanner.Interfaces;
using BinaryObjectScanner.Utilities;
using SabreTools.IO;
using SabreTools.IO.Extensions;
using SabreTools.Matching;
using SabreTools.Serialization.Wrappers;

View File

@@ -1,5 +1,5 @@
using System.IO;
using SabreTools.IO;
using SabreTools.IO.Extensions;
using SabreTools.Matching;
using SabreTools.Serialization.Interfaces;
using SabreTools.Serialization.Wrappers;
@@ -11,7 +11,7 @@ namespace BinaryObjectScanner.Utilities
/// <summary>
/// Create an instance of a wrapper based on file type
/// </summary>
public static IWrapper? CreateWrapper(SupportedFileType fileType, Stream? data)
public static object? CreateWrapper(SupportedFileType fileType, Stream? data)
{
switch (fileType)
{
@@ -60,14 +60,14 @@ namespace BinaryObjectScanner.Utilities
/// </summary>
/// <param name="stream">Stream data to parse</param>
/// <returns>IWrapper representing the executable, null on error</returns>
public static IWrapper? CreateExecutableWrapper(Stream? stream)
public static object? CreateExecutableWrapper(Stream? stream)
{
// If we have no stream
if (stream == null)
return null;
// Try to get an MS-DOS wrapper first
IWrapper? wrapper = MSDOS.Create(stream);
var wrapper = MSDOS.Create(stream);
if (wrapper == null || !(wrapper is MSDOS msdos))
return null;

View File

@@ -6,7 +6,7 @@ using BinaryObjectScanner.Utilities;
#if NET40_OR_GREATER || NETCOREAPP
using OpenMcdf;
#endif
using SabreTools.IO;
using SabreTools.IO.Extensions;
using SabreTools.Serialization.Wrappers;
#if NET462_OR_GREATER || NETCOREAPP
using SharpCompress.Archives;

View File

@@ -2,8 +2,7 @@ using System;
using System.IO;
using System.Text;
using BinaryObjectScanner.Utilities;
using SabreTools.IO;
using SabreTools.Serialization.Interfaces;
using SabreTools.IO.Extensions;
using SabreTools.Serialization.Wrappers;
namespace Test
@@ -79,25 +78,23 @@ namespace Test
return;
}
// Print the wrapper name
Console.WriteLine($"{wrapper.Description()} wrapper created successfully!");
// Get the base info output name
string filenameBase = $"info-{DateTime.Now:yyyy-MM-dd_HHmmss.ffff}";
#if NET6_0_OR_GREATER
// If we have the JSON flag
if (json)
{
// Create the output data
string serializedData = wrapper.ExportJSON();
Console.WriteLine(serializedData);
// If we have the JSON flag
if (json)
{
// Create the output data
string serializedData = wrapper.ExportJSON();
Console.WriteLine(serializedData);
// Write the output data
using var jsw = new StreamWriter(File.OpenWrite($"{filenameBase}.json"));
jsw.WriteLine(serializedData);
}
// Write the output data
using var jsw = new StreamWriter(File.OpenWrite($"{filenameBase}.json"));
jsw.WriteLine(serializedData);
}
#endif
// Create the output data
var builder = wrapper.PrettyPrint();
Console.WriteLine(builder);
@@ -118,7 +115,7 @@ namespace Test
/// <summary>
/// Export the item information as pretty-printed text
/// </summary>
private static StringBuilder PrettyPrint(this IWrapper wrapper)
private static StringBuilder PrettyPrint(this object wrapper)
{
return wrapper switch
{
@@ -133,6 +130,7 @@ namespace Test
IRD item => item.PrettyPrint(),
LinearExecutable item => item.PrettyPrint(),
MicrosoftCabinet item => item.PrettyPrint(),
MoPaQ item => item.PrettyPrint(),
MSDOS item => item.PrettyPrint(),
N3DS item => item.PrettyPrint(),
NCF item => item.PrettyPrint(),
@@ -140,7 +138,9 @@ namespace Test
Nitro item => item.PrettyPrint(),
PAK item => item.PrettyPrint(),
PFF item => item.PrettyPrint(),
PIC item => item.PrettyPrint(),
PlayJAudioFile item => item.PrettyPrint(),
//PlayJPlaylist item => item.PrettyPrint(),
PortableExecutable item => item.PrettyPrint(),
Quantum item => item.PrettyPrint(),
SGA item => item.PrettyPrint(),
@@ -151,14 +151,59 @@ namespace Test
XMID item => item.PrettyPrint(),
XZP item => item.PrettyPrint(),
_ => new StringBuilder(),
}; ;
}
#if NET6_0_OR_GREATER
/// <summary>
/// Export the item information as JSON
/// </summary>
private static string ExportJSON(this object wrapper)
{
return wrapper switch
{
AACSMediaKeyBlock item => item.ExportJSON(),
BDPlusSVM item => item.ExportJSON(),
BFPK item => item.ExportJSON(),
BSP item => item.ExportJSON(),
CFB item => item.ExportJSON(),
CIA item => item.ExportJSON(),
GCF item => item.ExportJSON(),
InstallShieldCabinet item => item.ExportJSON(),
IRD item => item.ExportJSON(),
LinearExecutable item => item.ExportJSON(),
MicrosoftCabinet item => item.ExportJSON(),
MoPaQ item => item.ExportJSON(),
MSDOS item => item.ExportJSON(),
N3DS item => item.ExportJSON(),
NCF item => item.ExportJSON(),
NewExecutable item => item.ExportJSON(),
Nitro item => item.ExportJSON(),
PAK item => item.ExportJSON(),
PFF item => item.ExportJSON(),
PIC item => item.ExportJSON(),
PlayJAudioFile item => item.ExportJSON(),
PlayJPlaylist item => item.ExportJSON(),
PortableExecutable item => item.ExportJSON(),
Quantum item => item.ExportJSON(),
SGA item => item.ExportJSON(),
VBSP item => item.ExportJSON(),
VPK item => item.ExportJSON(),
WAD item => item.ExportJSON(),
XeMID item => item.ExportJSON(),
XMID item => item.ExportJSON(),
XZP item => item.ExportJSON(),
_ => string.Empty,
};
}
#endif
/// <summary>
/// Export the item information as pretty-printed text
/// </summary>
private static StringBuilder PrettyPrint(this AACSMediaKeyBlock item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.AACSMediaKeyBlock.Print(builder, item.Model);
return builder;
@@ -169,6 +214,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this BDPlusSVM item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.BDPlusSVM.Print(builder, item.Model);
return builder;
@@ -179,6 +225,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this BFPK item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.BFPK.Print(builder, item.Model);
return builder;
@@ -189,6 +236,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this BSP item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.BSP.Print(builder, item.Model);
return builder;
@@ -199,6 +247,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this CFB item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.CFB.Print(builder, item.Model);
return builder;
@@ -209,6 +258,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this CIA item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.CIA.Print(builder, item.Model);
return builder;
@@ -219,6 +269,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this GCF item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.GCF.Print(builder, item.Model);
return builder;
@@ -229,6 +280,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this InstallShieldCabinet item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.InstallShieldCabinet.Print(builder, item.Model);
return builder;
@@ -239,6 +291,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this IRD item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.IRD.Print(builder, item.Model);
return builder;
@@ -249,6 +302,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this LinearExecutable item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.LinearExecutable.Print(builder, item.Model);
return builder;
@@ -259,16 +313,29 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this MicrosoftCabinet item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.MicrosoftCabinet.Print(builder, item.Model);
return builder;
}
/// <summary>
/// Export the item information as pretty-printed text
/// </summary>
private static StringBuilder PrettyPrint(this MoPaQ item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.MoPaQ.Print(builder, item.Model);
return builder;
}
/// <summary>
/// Export the item information as pretty-printed text
/// </summary>
private static StringBuilder PrettyPrint(this MSDOS item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.MSDOS.Print(builder, item.Model);
return builder;
@@ -279,6 +346,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this N3DS item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.N3DS.Print(builder, item.Model);
return builder;
@@ -289,6 +357,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this NCF item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.NCF.Print(builder, item.Model);
return builder;
@@ -299,6 +368,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this NewExecutable item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.NewExecutable.Print(builder, item.Model);
return builder;
@@ -309,6 +379,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this Nitro item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.Nitro.Print(builder, item.Model);
return builder;
@@ -319,6 +390,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this PAK item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.PAK.Print(builder, item.Model);
return builder;
@@ -329,6 +401,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this PFF item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.PFF.Print(builder, item.Model);
return builder;
@@ -337,18 +410,42 @@ namespace Test
/// <summary>
/// Export the item information as pretty-printed text
/// </summary>
private static StringBuilder PrettyPrint(this PlayJAudioFile item)
private static StringBuilder PrettyPrint(this PIC item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.PlayJAudioFile.Print(builder, item.Model);
SabreTools.Printing.PIC.Print(builder, item.Model);
return builder;
}
/// <summary>
/// Export the item information as pretty-printed text
/// </summary>
private static StringBuilder PrettyPrint(this PlayJAudioFile item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.PlayJAudioFile.Print(builder, item.Model);
return builder;
}
///// <summary>
///// Export the item information as pretty-printed text
///// </summary>
//private static StringBuilder PrettyPrint(this PlayJPlaylist item)
//{
// Console.WriteLine($"{item.Description()} wrapper created successfully!");
// var builder = new StringBuilder();
// SabreTools.Printing.PlayJPlaylist.Print(builder, item.Model);
// return builder;
//}
/// <summary>
/// Export the item information as pretty-printed text
/// </summary>
private static StringBuilder PrettyPrint(this PortableExecutable item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.PortableExecutable.Print(builder, item.Model);
return builder;
@@ -359,6 +456,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this Quantum item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.Quantum.Print(builder, item.Model);
return builder;
@@ -369,6 +467,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this SGA item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.SGA.Print(builder, item.Model);
return builder;
@@ -379,6 +478,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this VBSP item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.VBSP.Print(builder, item.Model);
return builder;
@@ -389,6 +489,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this VPK item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.VPK.Print(builder, item.Model);
return builder;
@@ -399,6 +500,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this WAD item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.WAD.Print(builder, item.Model);
return builder;
@@ -409,6 +511,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this XeMID item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.XeMID.Print(builder, item.Model);
return builder;
@@ -419,6 +522,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this XMID item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.XMID.Print(builder, item.Model);
return builder;
@@ -429,6 +533,7 @@ namespace Test
/// </summary>
private static StringBuilder PrettyPrint(this XZP item)
{
Console.WriteLine($"{item.Description()} wrapper created successfully!");
var builder = new StringBuilder();
SabreTools.Printing.XZP.Print(builder, item.Model);
return builder;

View File

@@ -27,12 +27,12 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="SabreTools.Compression" Version="0.4.2" />
<PackageReference Include="SabreTools.IO" Version="1.3.3" />
<PackageReference Include="SabreTools.Compression" Version="0.4.4" />
<PackageReference Include="SabreTools.IO" Version="1.3.6" />
<PackageReference Include="SabreTools.Matching" Version="1.3.1" />
<PackageReference Include="SabreTools.Models" Version="1.4.2" />
<PackageReference Include="SabreTools.Printing" Version="1.3.5" />
<PackageReference Include="SabreTools.Serialization" Version="1.5.0" />
<PackageReference Include="SabreTools.Serialization" Version="1.5.1" />
<PackageReference Include="UnshieldSharp" Version="1.7.4" />
</ItemGroup>