From b83163426257d39913dff5b7906f207716806442 Mon Sep 17 00:00:00 2001 From: Andrew Skowronski Date: Wed, 1 Apr 2026 10:17:51 -0400 Subject: [PATCH 01/11] [CBD] Add C# wrappers for new UnityFileSystemApi functions Add P/Invoke declarations and public wrappers for 7 missing native API functions: GetDllVersion, GetUnityVersion, GetSerializedFileVersion, GetTypeTreeCount, GetTypeTreeInfo, GetTypeTreeByIndex, and RemoveTypeTreeSource. Also adds TypeTreeCategory enum and TypeTreeInfo struct. Fixes TypeTreeInfo name ambiguity in SerializedFileCommands. --- UnityDataTool/SerializedFileCommands.cs | 2 +- UnityFileSystem/DllWrapper.cs | 57 +++++++++++++++++++++++++ UnityFileSystem/SerializedFile.cs | 37 ++++++++++++++++ UnityFileSystem/UnityFileSystem.cs | 22 ++++++++++ 4 files changed, 117 insertions(+), 1 deletion(-) diff --git a/UnityDataTool/SerializedFileCommands.cs b/UnityDataTool/SerializedFileCommands.cs index 7f68ee5..3dd0dc3 100644 --- a/UnityDataTool/SerializedFileCommands.cs +++ b/UnityDataTool/SerializedFileCommands.cs @@ -278,7 +278,7 @@ private static void OutputMetadataJson(SerializedFileMetadata metadata) Console.WriteLine(json); } - private static object TypeTreeInfoToJson(TypeTreeInfo info) + private static object TypeTreeInfoToJson(BinaryFormat.TypeTreeInfo info) { return new { diff --git a/UnityFileSystem/DllWrapper.cs b/UnityFileSystem/DllWrapper.cs index 820bc1c..2649ade 100644 --- a/UnityFileSystem/DllWrapper.cs +++ b/UnityFileSystem/DllWrapper.cs @@ -146,6 +146,28 @@ public enum TypeTreeMetaFlags AnyChildUsesAlignBytes = 1 << 15, } +public enum TypeTreeCategory +{ + ObjectType = 0, + RefType = 1, +} + +[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] +public struct TypeTreeInfo +{ + public readonly int TypeId; + public readonly int SerializedSize; + public readonly TypeTreeCategory Category; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] + public readonly uint[] Hash; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public readonly string ClassName; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public readonly string NamespaceName; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public readonly string AssemblyName; +} + public static class DllWrapper { [DllImport("UnityFileSystemApi", @@ -263,4 +285,39 @@ public static extern ReturnCode GetTypeTreeNodeInfo(TypeTreeHandle handle, int n StringBuilder name, int nameLen, out int offset, out int size, [MarshalAs(UnmanagedType.U4)] out TypeTreeFlags flags, [MarshalAs(UnmanagedType.U4)] out TypeTreeMetaFlags metaFlags, out int firstChildNode, out int nextNode); + + [DllImport("UnityFileSystemApi", + CallingConvention = CallingConvention.Cdecl, + EntryPoint = "UFS_GetDllVersion")] + public static extern ReturnCode GetDllVersion(out int version); + + [DllImport("UnityFileSystemApi", + CallingConvention = CallingConvention.Cdecl, + EntryPoint = "UFS_GetUnityVersion")] + public static extern ReturnCode GetUnityVersion(StringBuilder version, int versionLen); + + [DllImport("UnityFileSystemApi", + CallingConvention = CallingConvention.Cdecl, + EntryPoint = "UFS_GetSerializedFileVersion")] + public static extern ReturnCode GetSerializedFileVersion(SerializedFileHandle handle, out int version); + + [DllImport("UnityFileSystemApi", + CallingConvention = CallingConvention.Cdecl, + EntryPoint = "UFS_GetTypeTreeCount")] + public static extern ReturnCode GetTypeTreeCount(SerializedFileHandle handle, out int count); + + [DllImport("UnityFileSystemApi", + CallingConvention = CallingConvention.Cdecl, + EntryPoint = "UFS_GetTypeTreeInfo")] + public static extern ReturnCode GetTypeTreeInfo(SerializedFileHandle handle, int index, out TypeTreeInfo info); + + [DllImport("UnityFileSystemApi", + CallingConvention = CallingConvention.Cdecl, + EntryPoint = "UFS_GetTypeTreeByIndex")] + public static extern ReturnCode GetTypeTreeByIndex(SerializedFileHandle handle, int index, out TypeTreeHandle typeTree); + + [DllImport("UnityFileSystemApi", + CallingConvention = CallingConvention.Cdecl, + EntryPoint = "UFS_RemoveTypeTreeSource")] + public static extern ReturnCode RemoveTypeTreeSource(long handle); } diff --git a/UnityFileSystem/SerializedFile.cs b/UnityFileSystem/SerializedFile.cs index 6791b6f..0612418 100644 --- a/UnityFileSystem/SerializedFile.cs +++ b/UnityFileSystem/SerializedFile.cs @@ -61,6 +61,43 @@ public TypeTreeNode GetRefTypeTypeTreeRoot(string className, string namespaceNam return node; } + public int GetVersion() + { + var r = DllWrapper.GetSerializedFileVersion(m_Handle, out var version); + UnityFileSystem.HandleErrors(r); + return version; + } + + public int GetTypeTreeCount() + { + var r = DllWrapper.GetTypeTreeCount(m_Handle, out var count); + UnityFileSystem.HandleErrors(r); + return count; + } + + public TypeTreeInfo GetTypeTreeInfo(int index) + { + var r = DllWrapper.GetTypeTreeInfo(m_Handle, index, out var info); + UnityFileSystem.HandleErrors(r); + return info; + } + + public TypeTreeNode GetTypeTreeByIndex(int index) + { + var r = DllWrapper.GetTypeTreeByIndex(m_Handle, index, out var typeTreeHandle); + UnityFileSystem.HandleErrors(r); + + if (m_TypeTreeCache.TryGetValue(typeTreeHandle.Handle, out var node)) + { + return node; + } + + node = new TypeTreeNode(typeTreeHandle, 0); + m_TypeTreeCache.Add(typeTreeHandle.Handle, node); + + return node; + } + private List GetExternalReferences() { var r = DllWrapper.GetExternalReferenceCount(m_Handle, out var count); diff --git a/UnityFileSystem/UnityFileSystem.cs b/UnityFileSystem/UnityFileSystem.cs index e86bc01..a623860 100644 --- a/UnityFileSystem/UnityFileSystem.cs +++ b/UnityFileSystem/UnityFileSystem.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Text; namespace UnityDataTools.FileSystem; @@ -51,6 +52,27 @@ public static long AddTypeTreeSourceFromFile(string path) return handle; } + public static void RemoveTypeTreeSource(long handle) + { + var r = DllWrapper.RemoveTypeTreeSource(handle); + HandleErrors(r); + } + + public static int GetDllVersion() + { + var r = DllWrapper.GetDllVersion(out var version); + HandleErrors(r); + return version; + } + + public static string GetUnityVersion() + { + var version = new StringBuilder(256); + var r = DllWrapper.GetUnityVersion(version, version.Capacity); + HandleErrors(r); + return version.ToString(); + } + public static SerializedFile OpenSerializedFile(string path) { var r = DllWrapper.OpenSerializedFile(path, out var handle); From f6a959035fa49a91677ae07b99eab1e84f3e7899 Mon Sep 17 00:00:00 2001 From: Andrew Skowronski Date: Wed, 1 Apr 2026 15:46:52 -0400 Subject: [PATCH 02/11] [CBD] Extract WebBundle logic from Archive into WebBundleHelper Move all WebBundle-specific code (detection, parsing, extraction, listing) out of Archive.cs into a dedicated WebBundleHelper class. Archive now delegates to WebBundleHelper for web bundle operations. --- UnityDataTool.Tests/WebBundleSupportTests.cs | 4 +- UnityDataTool/Archive.cs | 130 +------------------ UnityDataTool/WebBundleHelper.cs | 128 ++++++++++++++++++ 3 files changed, 134 insertions(+), 128 deletions(-) create mode 100644 UnityDataTool/WebBundleHelper.cs diff --git a/UnityDataTool.Tests/WebBundleSupportTests.cs b/UnityDataTool.Tests/WebBundleSupportTests.cs index d70a9f5..dd1f683 100644 --- a/UnityDataTool.Tests/WebBundleSupportTests.cs +++ b/UnityDataTool.Tests/WebBundleSupportTests.cs @@ -40,14 +40,14 @@ public void Teardown() public void IsWebBundle_True() { var webBundlePath = Path.Combine(m_TestDataFolder, "WebBundles", "HelloWorld.data"); - Assert.IsTrue(Archive.IsWebBundle(webBundlePath)); + Assert.IsTrue(WebBundleHelper.IsWebBundle(webBundlePath)); } [Test] public void IsWebBundle_False() { var nonWebBundlePath = Path.Combine(m_TestDataFolder, "WebBundles", "NotAWebBundle.txt"); - Assert.IsFalse(Archive.IsWebBundle(nonWebBundlePath)); + Assert.IsFalse(WebBundleHelper.IsWebBundle(nonWebBundlePath)); } [Test] diff --git a/UnityDataTool/Archive.cs b/UnityDataTool/Archive.cs index 755252b..4cb31b6 100644 --- a/UnityDataTool/Archive.cs +++ b/UnityDataTool/Archive.cs @@ -1,9 +1,5 @@ using System; -using System.Collections.Generic; using System.IO; -using System.IO.Compression; -using System.Linq; -using System.Text; using UnityDataTools.BinaryFormat; using UnityDataTools.FileSystem; @@ -11,16 +7,14 @@ namespace UnityDataTools.UnityDataTool; public static class Archive { - private static readonly byte[] WebBundlePrefix = Encoding.UTF8.GetBytes("UnityWebData1.0\0"); - public static int HandleExtract(FileInfo filename, DirectoryInfo outputFolder) { try { var path = filename.ToString(); - if (IsWebBundle(path)) + if (WebBundleHelper.IsWebBundle(path)) { - ExtractWebBundle(filename, outputFolder); + WebBundleHelper.Extract(filename, outputFolder); } else if (ArchiveDetector.IsUnityArchive(path)) { @@ -48,9 +42,9 @@ public static int HandleList(FileInfo filename) try { var path = filename.ToString(); - if (IsWebBundle(path)) + if (WebBundleHelper.IsWebBundle(path)) { - ListWebBundle(filename); + WebBundleHelper.List(filename); } else if (ArchiveDetector.IsUnityArchive(path)) { @@ -74,108 +68,6 @@ err is NotSupportedException return 0; } - - public static bool IsWebBundle(string path) - { - return ( - path.EndsWith(".data") - || path.EndsWith(".data.gz") - || path.EndsWith(".data.br") - ); - } - - struct WebBundleFileDescription - { - public uint ByteOffset; - public uint Size; - public string Path; - } - - static void ExtractWebBundle(FileInfo filename, DirectoryInfo outputFolder) - { - Console.WriteLine($"Extracting web bundle: {filename}"); - using var fileStream = File.Open(filename.ToString(), FileMode.Open); - using var stream = GetStream(filename, fileStream); - using var reader = new BinaryReader(stream, Encoding.UTF8); - var fileDescriptions = ParseWebBundleHeader(reader); - foreach (var description in fileDescriptions) - { - ExtractFileFromWebBundle(description, reader, outputFolder); - } - } - - static Stream GetStream(FileInfo filename, FileStream fileStream) - { - var fileExtension = Path.GetExtension(filename.ToString()); - return fileExtension switch - { - ".data" => fileStream, - ".gz" => new GZipStream(fileStream, CompressionMode.Decompress), - ".br" => new BrotliStream(fileStream, CompressionMode.Decompress), - _ => throw new FileFormatException("Incorrect file extension for web bundle"), - }; - } - - static List ParseWebBundleHeader(BinaryReader reader) - { - var result = new List(); - var prefix = ReadBytes(reader, WebBundlePrefix.Length); - if (!prefix.SequenceEqual(WebBundlePrefix)) - { - throw new FileFormatException("File is not a valid web bundle."); - } - uint headerSize = ReadUInt32(reader); - // Advance offset past prefix string and header size uint. - var currentByteOffset = WebBundlePrefix.Length + sizeof(uint); - while (currentByteOffset < headerSize) - { - var fileByteOffset = ReadUInt32(reader); - var fileSize = ReadUInt32(reader); - var filePathLength = ReadUInt32(reader); - var filePath = Encoding.UTF8.GetString(ReadBytes(reader, (int)filePathLength)); - result.Add(new WebBundleFileDescription() - { - ByteOffset = fileByteOffset, - Size = fileSize, - Path = filePath, - }); - // Advance byte offset, so we keep track of the position (to know when we're done reading the header). - currentByteOffset += 3 * sizeof(uint) + filePath.Length; - } - return result; - } - - static void ExtractFileFromWebBundle(WebBundleFileDescription description, BinaryReader reader, DirectoryInfo outputFolder) - { - // This function assumes `reader` is at the start of the binary data representing the file contents. - Console.WriteLine($"... Extracting {description.Path}"); - var path = Path.Combine(outputFolder.ToString(), description.Path); - Directory.CreateDirectory(Path.GetDirectoryName(path)); - File.WriteAllBytes(path, ReadBytes(reader, (int)description.Size)); - } - - static uint ReadUInt32(BinaryReader reader) - { - try - { - return reader.ReadUInt32(); - } - catch (EndOfStreamException) - { - throw new FileFormatException("File data is corrupt."); - } - } - - static byte[] ReadBytes(BinaryReader reader, int count) - { - var result = reader.ReadBytes(count); - if (result.Length != count) - { - throw new FileFormatException("File data is corrupt."); - } - return result; - } - static void ExtractAssetBundle(FileInfo filename, DirectoryInfo outputFolder) { Console.WriteLine($"Extracting asset bundle: {filename}"); @@ -199,20 +91,6 @@ static void ListAssetBundle(FileInfo filename) } } - static void ListWebBundle(FileInfo filename) - { - using var fileStream = File.Open(filename.ToString(), FileMode.Open); - using var stream = GetStream(filename, fileStream); - using var reader = new BinaryReader(stream, Encoding.UTF8); - var fileDescriptions = ParseWebBundleHeader(reader); - foreach (var description in fileDescriptions) - { - Console.WriteLine($"{description.Path}"); - Console.WriteLine($" Size: {description.Size}"); - Console.WriteLine(); - } - } - static void CopyFile(string source, string dest) { using var sourceFile = UnityFileSystem.OpenFile(source); diff --git a/UnityDataTool/WebBundleHelper.cs b/UnityDataTool/WebBundleHelper.cs new file mode 100644 index 0000000..37e7018 --- /dev/null +++ b/UnityDataTool/WebBundleHelper.cs @@ -0,0 +1,128 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Linq; +using System.Text; + +namespace UnityDataTools.UnityDataTool; + +public static class WebBundleHelper +{ + private static readonly byte[] WebBundlePrefix = Encoding.UTF8.GetBytes("UnityWebData1.0\0"); + + public static bool IsWebBundle(string path) + { + return ( + path.EndsWith(".data") + || path.EndsWith(".data.gz") + || path.EndsWith(".data.br") + ); + } + + public static void Extract(FileInfo filename, DirectoryInfo outputFolder) + { + Console.WriteLine($"Extracting web bundle: {filename}"); + using var fileStream = File.Open(filename.ToString(), FileMode.Open); + using var stream = GetStream(filename, fileStream); + using var reader = new BinaryReader(stream, Encoding.UTF8); + var fileDescriptions = ParseWebBundleHeader(reader); + foreach (var description in fileDescriptions) + { + ExtractFile(description, reader, outputFolder); + } + } + + public static void List(FileInfo filename) + { + using var fileStream = File.Open(filename.ToString(), FileMode.Open); + using var stream = GetStream(filename, fileStream); + using var reader = new BinaryReader(stream, Encoding.UTF8); + var fileDescriptions = ParseWebBundleHeader(reader); + foreach (var description in fileDescriptions) + { + Console.WriteLine($"{description.Path}"); + Console.WriteLine($" Size: {description.Size}"); + Console.WriteLine(); + } + } + + struct FileDescription + { + public uint ByteOffset; + public uint Size; + public string Path; + } + + static Stream GetStream(FileInfo filename, FileStream fileStream) + { + var fileExtension = Path.GetExtension(filename.ToString()); + return fileExtension switch + { + ".data" => fileStream, + ".gz" => new GZipStream(fileStream, CompressionMode.Decompress), + ".br" => new BrotliStream(fileStream, CompressionMode.Decompress), + _ => throw new FileFormatException("Incorrect file extension for web bundle"), + }; + } + + static List ParseWebBundleHeader(BinaryReader reader) + { + var result = new List(); + var prefix = ReadBytes(reader, WebBundlePrefix.Length); + if (!prefix.SequenceEqual(WebBundlePrefix)) + { + throw new FileFormatException("File is not a valid web bundle."); + } + uint headerSize = ReadUInt32(reader); + // Advance offset past prefix string and header size uint. + var currentByteOffset = WebBundlePrefix.Length + sizeof(uint); + while (currentByteOffset < headerSize) + { + var fileByteOffset = ReadUInt32(reader); + var fileSize = ReadUInt32(reader); + var filePathLength = ReadUInt32(reader); + var filePath = Encoding.UTF8.GetString(ReadBytes(reader, (int)filePathLength)); + result.Add(new FileDescription() + { + ByteOffset = fileByteOffset, + Size = fileSize, + Path = filePath, + }); + // Advance byte offset, so we keep track of the position (to know when we're done reading the header). + currentByteOffset += 3 * sizeof(uint) + filePath.Length; + } + return result; + } + + static void ExtractFile(FileDescription description, BinaryReader reader, DirectoryInfo outputFolder) + { + // This function assumes `reader` is at the start of the binary data representing the file contents. + Console.WriteLine($"... Extracting {description.Path}"); + var path = Path.Combine(outputFolder.ToString(), description.Path); + Directory.CreateDirectory(Path.GetDirectoryName(path)); + File.WriteAllBytes(path, ReadBytes(reader, (int)description.Size)); + } + + static uint ReadUInt32(BinaryReader reader) + { + try + { + return reader.ReadUInt32(); + } + catch (EndOfStreamException) + { + throw new FileFormatException("File data is corrupt."); + } + } + + static byte[] ReadBytes(BinaryReader reader, int count) + { + var result = reader.ReadBytes(count); + if (result.Length != count) + { + throw new FileFormatException("File data is corrupt."); + } + return result; + } +} From 477866fbe947367d09df928a273395c01618099e Mon Sep 17 00:00:00 2001 From: Andrew Skowronski Date: Wed, 1 Apr 2026 16:38:56 -0400 Subject: [PATCH 03/11] [CBD] Add JSON output format option to archive list command Add -f/--format option to "archive list" supporting Text (default) and Json output, matching the existing serialized-file commands. Includes tests for both AssetBundle and WebBundle archive types in both formats, plus an extract test with file size verification. --- Documentation/command-archive.md | 10 +- UnityDataTool.Tests/ArchiveTests.cs | 137 +++++++++++++++++++ UnityDataTool.Tests/WebBundleSupportTests.cs | 38 +++++ UnityDataTool/Archive.cs | 34 +++-- UnityDataTool/Program.cs | 7 +- UnityDataTool/WebBundleHelper.cs | 26 +++- 6 files changed, 234 insertions(+), 18 deletions(-) create mode 100644 UnityDataTool.Tests/ArchiveTests.cs diff --git a/Documentation/command-archive.md b/Documentation/command-archive.md index a563926..7ed99d1 100644 --- a/Documentation/command-archive.md +++ b/Documentation/command-archive.md @@ -13,18 +13,24 @@ The `archive` command provides utilities for working with Unity Archives (AssetB ## list -Lists the SerializedFiles contained within an archive. +Lists the contents of an archive. ### Quick Reference ``` -UnityDataTool archive list +UnityDataTool archive list [options] ``` +| Option | Description | Default | +|--------|-------------|---------| +| `` | Path to the archive file | *(required)* | +| `-f, --format ` | Output format | `Text` | + ### Example ```bash UnityDataTool archive list scenes.bundle +UnityDataTool archive list scenes.bundle -f Json ``` --- diff --git a/UnityDataTool.Tests/ArchiveTests.cs b/UnityDataTool.Tests/ArchiveTests.cs new file mode 100644 index 0000000..0775e0b --- /dev/null +++ b/UnityDataTool.Tests/ArchiveTests.cs @@ -0,0 +1,137 @@ +using System; +using System.Text.Json; +using Microsoft.Data.Sqlite; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using NUnit.Framework; +using UnityDataTools.FileSystem; + +namespace UnityDataTools.UnityDataTool.Tests; + +#pragma warning disable NUnit2005, NUnit2006 + +public class ArchiveTests +{ + private string m_TestOutputFolder; + private string m_TestDataFolder; + private string m_ArchivePath; + + [OneTimeSetUp] + public void OneTimeSetup() + { + m_TestOutputFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, "test_folder"); + m_TestDataFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, "Data"); + m_ArchivePath = Path.Combine(m_TestDataFolder, "AssetBundles", "2023.1.0a16", "scenes"); + Directory.CreateDirectory(m_TestOutputFolder); + Directory.SetCurrentDirectory(m_TestOutputFolder); + } + + [TearDown] + public void Teardown() + { + SqliteConnection.ClearAllPools(); + + var testDir = new DirectoryInfo(m_TestOutputFolder); + testDir.EnumerateFiles() + .ToList().ForEach(f => f.Delete()); + testDir.EnumerateDirectories() + .ToList().ForEach(d => d.Delete(true)); + } + + [Test] + public async Task ArchiveList_TextFormat() + { + using var sw = new StringWriter(); + var currentOut = Console.Out; + try + { + Console.SetOut(sw); + + Assert.AreEqual(0, await Program.Main(new string[] { "archive", "list", m_ArchivePath })); + + var actualOutput = sw.ToString().Replace("\r\n", "\n"); + + var expectedOutput = +@"BuildPlayer-SampleScene.sharedAssets + Size: 90732 + Flags: SerializedFile + +BuildPlayer-SampleScene + Size: 153352 + Flags: SerializedFile + +BuildPlayer-OtherScene.sharedAssets + Size: 136744 + Flags: SerializedFile + +BuildPlayer-OtherScene + Size: 158340 + Flags: SerializedFile + +"; + + Assert.AreEqual(expectedOutput, actualOutput); + } + finally + { + Console.SetOut(currentOut); + } + } + + [Test] + public async Task ArchiveList_JsonFormat() + { + using var sw = new StringWriter(); + var currentOut = Console.Out; + try + { + Console.SetOut(sw); + + Assert.AreEqual(0, await Program.Main(new string[] { "archive", "list", m_ArchivePath, "-f", "Json" })); + + var output = sw.ToString(); + var jsonArray = JsonDocument.Parse(output).RootElement; + Assert.AreEqual(JsonValueKind.Array, jsonArray.ValueKind); + Assert.AreEqual(4, jsonArray.GetArrayLength()); + + foreach (var element in jsonArray.EnumerateArray()) + { + Assert.IsTrue(element.TryGetProperty("path", out _)); + Assert.IsTrue(element.TryGetProperty("size", out _)); + Assert.IsTrue(element.TryGetProperty("flags", out _)); + Assert.AreEqual("SerializedFile", element.GetProperty("flags").GetString()); + } + + Assert.AreEqual("BuildPlayer-SampleScene.sharedAssets", jsonArray[0].GetProperty("path").GetString()); + Assert.AreEqual(90732, jsonArray[0].GetProperty("size").GetInt64()); + } + finally + { + Console.SetOut(currentOut); + } + } + + [Test] + public async Task ArchiveExtract_FilesExtractedSuccessfully() + { + Assert.AreEqual(0, await Program.Main(new string[] { "archive", "extract", m_ArchivePath })); + + string[] expectedFiles = + { + "BuildPlayer-SampleScene.sharedAssets", + "BuildPlayer-SampleScene", + "BuildPlayer-OtherScene.sharedAssets", + "BuildPlayer-OtherScene", + }; + + foreach (var file in expectedFiles) + { + Assert.IsTrue(File.Exists(Path.Combine(m_TestOutputFolder, "archive", file)), $"Expected file not found: {file}"); + } + + // Verify extracted file size matches the size reported by the list command. + var extractedFile = new FileInfo(Path.Combine(m_TestOutputFolder, "archive", "BuildPlayer-SampleScene.sharedAssets")); + Assert.AreEqual(90732, extractedFile.Length); + } +} diff --git a/UnityDataTool.Tests/WebBundleSupportTests.cs b/UnityDataTool.Tests/WebBundleSupportTests.cs index dd1f683..914f695 100644 --- a/UnityDataTool.Tests/WebBundleSupportTests.cs +++ b/UnityDataTool.Tests/WebBundleSupportTests.cs @@ -1,4 +1,5 @@ using System; +using System.Text.Json; using Microsoft.Data.Sqlite; using System.IO; using System.Linq; @@ -103,6 +104,43 @@ public async Task ArchiveList_WebBundle_ListFilesCorrectly( } } + [Test] + public async Task ArchiveList_WebBundle_JsonFormat( + [Values( + "HelloWorld.data", + "HelloWorld.data.gz", + "HelloWorld.data.br" + )] string bundlePath) + { + var path = Path.Combine(m_TestDataFolder, "WebBundles", bundlePath); + using var sw = new StringWriter(); + var currentOut = Console.Out; + try + { + Console.SetOut(sw); + + Assert.AreEqual(0, await Program.Main(new string[] { "archive", "list", path, "-f", "Json" })); + + var output = sw.ToString(); + var jsonArray = JsonDocument.Parse(output).RootElement; + Assert.AreEqual(JsonValueKind.Array, jsonArray.ValueKind); + Assert.AreEqual(6, jsonArray.GetArrayLength()); + + foreach (var element in jsonArray.EnumerateArray()) + { + Assert.IsTrue(element.TryGetProperty("path", out _)); + Assert.IsTrue(element.TryGetProperty("size", out _)); + } + + Assert.AreEqual("data.unity3d", jsonArray[0].GetProperty("path").GetString()); + Assert.AreEqual(253044u, jsonArray[0].GetProperty("size").GetUInt32()); + } + finally + { + Console.SetOut(currentOut); + } + } + [Test] public async Task ArchiveExtract_WebBundle_FileExtractedSuccessfully( [Values("", "-o archive", "--output-path archive")] string options, diff --git a/UnityDataTool/Archive.cs b/UnityDataTool/Archive.cs index 4cb31b6..f5569c8 100644 --- a/UnityDataTool/Archive.cs +++ b/UnityDataTool/Archive.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Text.Json; using UnityDataTools.BinaryFormat; using UnityDataTools.FileSystem; @@ -37,18 +38,18 @@ err is NotSupportedException return 0; } - public static int HandleList(FileInfo filename) + public static int HandleList(FileInfo filename, OutputFormat format) { try { var path = filename.ToString(); if (WebBundleHelper.IsWebBundle(path)) { - WebBundleHelper.List(filename); + WebBundleHelper.List(filename, format); } else if (ArchiveDetector.IsUnityArchive(path)) { - ListAssetBundle(filename); + ListAssetBundle(filename, format); } else { @@ -79,15 +80,30 @@ static void ExtractAssetBundle(FileInfo filename, DirectoryInfo outputFolder) } } - static void ListAssetBundle(FileInfo filename) + static void ListAssetBundle(FileInfo filename, OutputFormat format) { using var archive = UnityFileSystem.MountArchive(filename.FullName, "/"); - foreach (var node in archive.Nodes) + + if (format == OutputFormat.Json) + { + var jsonArray = new object[archive.Nodes.Count]; + for (int i = 0; i < archive.Nodes.Count; i++) + { + var node = archive.Nodes[i]; + jsonArray[i] = new { path = node.Path, size = node.Size, flags = node.Flags.ToString() }; + } + var json = JsonSerializer.Serialize(jsonArray, new JsonSerializerOptions { WriteIndented = true }); + Console.WriteLine(json); + } + else { - Console.WriteLine($"{node.Path}"); - Console.WriteLine($" Size: {node.Size}"); - Console.WriteLine($" Flags: {node.Flags}"); - Console.WriteLine(); + foreach (var node in archive.Nodes) + { + Console.WriteLine($"{node.Path}"); + Console.WriteLine($" Size: {node.Size}"); + Console.WriteLine($" Flags: {node.Flags}"); + Console.WriteLine(); + } } } diff --git a/UnityDataTool/Program.cs b/UnityDataTool/Program.cs index a65fd24..a4413c5 100644 --- a/UnityDataTool/Program.cs +++ b/UnityDataTool/Program.cs @@ -130,14 +130,17 @@ public static async Task Main(string[] args) (FileInfo fi, DirectoryInfo o) => Task.FromResult(Archive.HandleExtract(fi, o)), pathArg, oOpt); + var fOpt = new Option(aliases: new[] { "--format", "-f" }, description: "Output format", getDefaultValue: () => OutputFormat.Text); + var listArchiveCommand = new Command("list", "List the contents of an AssetBundle or .data file.") { pathArg, + fOpt, }; listArchiveCommand.SetHandler( - (FileInfo fi) => Task.FromResult(Archive.HandleList(fi)), - pathArg); + (FileInfo fi, OutputFormat f) => Task.FromResult(Archive.HandleList(fi, f)), + pathArg, fOpt); var archiveCommand = new Command("archive", "Inspect or extract the contents of a Unity archive (AssetBundle or web platform .data file).") { diff --git a/UnityDataTool/WebBundleHelper.cs b/UnityDataTool/WebBundleHelper.cs index 37e7018..279adff 100644 --- a/UnityDataTool/WebBundleHelper.cs +++ b/UnityDataTool/WebBundleHelper.cs @@ -4,6 +4,7 @@ using System.IO.Compression; using System.Linq; using System.Text; +using System.Text.Json; namespace UnityDataTools.UnityDataTool; @@ -33,17 +34,32 @@ public static void Extract(FileInfo filename, DirectoryInfo outputFolder) } } - public static void List(FileInfo filename) + public static void List(FileInfo filename, OutputFormat format) { using var fileStream = File.Open(filename.ToString(), FileMode.Open); using var stream = GetStream(filename, fileStream); using var reader = new BinaryReader(stream, Encoding.UTF8); var fileDescriptions = ParseWebBundleHeader(reader); - foreach (var description in fileDescriptions) + + if (format == OutputFormat.Json) + { + var jsonArray = new object[fileDescriptions.Count]; + for (int i = 0; i < fileDescriptions.Count; i++) + { + var desc = fileDescriptions[i]; + jsonArray[i] = new { path = desc.Path, size = desc.Size }; + } + var json = JsonSerializer.Serialize(jsonArray, new JsonSerializerOptions { WriteIndented = true }); + Console.WriteLine(json); + } + else { - Console.WriteLine($"{description.Path}"); - Console.WriteLine($" Size: {description.Size}"); - Console.WriteLine(); + foreach (var description in fileDescriptions) + { + Console.WriteLine($"{description.Path}"); + Console.WriteLine($" Size: {description.Size}"); + Console.WriteLine(); + } } } From 68a8cb28a7338558d60f9e06f52291847e5589a5 Mon Sep 17 00:00:00 2001 From: Andrew Skowronski Date: Thu, 2 Apr 2026 07:51:27 -0400 Subject: [PATCH 04/11] Add "header" subcommand for archive Parse and print the header for Unity Archive files. This is similar to the header command already implemented for serialized files. --- Documentation/command-archive.md | 25 ++++++ UnityBinaryFormat/ArchiveDetector.cs | 113 ++++++++++++++++++++++++++- UnityDataTool.Tests/ArchiveTests.cs | 60 ++++++++++++++ UnityDataTool/Archive.cs | 102 ++++++++++++++++++++++++ UnityDataTool/Program.cs | 11 +++ 5 files changed, 310 insertions(+), 1 deletion(-) diff --git a/Documentation/command-archive.md b/Documentation/command-archive.md index 7ed99d1..ef3497e 100644 --- a/Documentation/command-archive.md +++ b/Documentation/command-archive.md @@ -6,11 +6,36 @@ The `archive` command provides utilities for working with Unity Archives (AssetB | Sub-Command | Description | |-------------|-------------| +| [`header`](#header) | Display archive header information | | [`list`](#list) | List contents of an archive | | [`extract`](#extract) | Extract contents of an archive | --- +## header + +Displays the header information of a Unity Archive file, including format version, Unity version, file size, metadata compression, and archive flags. Only the `UnityFS` format is supported. + +### Quick Reference + +``` +UnityDataTool archive header [options] +``` + +| Option | Description | Default | +|--------|-------------|---------| +| `` | Path to the archive file | *(required)* | +| `-f, --format ` | Output format | `Text` | + +### Example + +```bash +UnityDataTool archive header scenes.bundle +UnityDataTool archive header scenes.bundle -f Json +``` + +--- + ## list Lists the contents of an archive. diff --git a/UnityBinaryFormat/ArchiveDetector.cs b/UnityBinaryFormat/ArchiveDetector.cs index 2658362..57533a7 100644 --- a/UnityBinaryFormat/ArchiveDetector.cs +++ b/UnityBinaryFormat/ArchiveDetector.cs @@ -4,7 +4,49 @@ namespace UnityDataTools.BinaryFormat; /// -/// Utility for detecting Unity Archive (AssetBundle) files by reading their signature. +/// Parsed header information from a Unity Archive file. +/// +/// A Unity Archive consists of three sections: +/// - Header: A small uncompressed header with version info, sizes, and flags. +/// - Metadata: An index section containing the Block List (sizes and compression of each +/// data block) and the Directory (paths, sizes, and flags of files inside the archive). +/// This section may be compressed; the header's compression bits and size fields describe +/// its on-disk vs uncompressed size. +/// - Data: One or more blocks of file content. Each block has its own compression type +/// recorded in its per-block flags. The metadata section is required to interpret the data. +/// +/// The metadata can appear directly after the header (default layout) or at the end of the +/// file after the data (indicated by the BlocksInfoAtTheEnd flag). +/// +public class ArchiveHeaderInfo +{ + public string Signature { get; set; } + public uint Version { get; set; } + + /// + /// Unused legacy field (formerly "UnityWebBundleVersion"). Always "5.x.x". + /// + public string Unused { get; set; } + + public string UnityVersion { get; set; } + public ulong Size { get; set; } + public uint CompressedMetadataSize { get; set; } + public uint UncompressedMetadataSize { get; set; } + public uint Flags { get; set; } + + /// + /// Compression type used for the metadata section (bits 0-5 of Flags). + /// + public int MetadataCompressionType => (int)(Flags & 0x3F); + + /// + /// Archive flag bits (bits 6+ of Flags), with compression bits masked out. + /// + public uint ArchiveFlagBits => Flags & ~0x3Fu; +} + +/// +/// Utility for detecting and parsing Unity Archive (AssetBundle) file headers. /// public static class ArchiveDetector { @@ -60,4 +102,73 @@ public static bool IsUnityArchive(string filePath) return false; } } + + /// + /// Attempts to read and parse the header of a Unity Archive file. + /// Only the "UnityFS" format is supported. Other archive signatures will produce + /// an error message identifying the unsupported signature. + /// + public static bool TryReadArchiveHeader(string filePath, out ArchiveHeaderInfo info, out string errorMessage) + { + info = null; + errorMessage = null; + + if (!File.Exists(filePath)) + { + errorMessage = $"File not found: \"{filePath}\"."; + return false; + } + + try + { + using var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read); + using var reader = new BinaryReader(stream); + + var signature = BinaryFileHelper.ReadNullTermString(reader); + + if (signature != "UnityFS") + { + // Check if it's a recognized but unsupported legacy signature. + if (signature == "UnityWeb" || signature == "UnityRaw" || signature == "UnityArchive") + errorMessage = $"Unsupported archive signature: \"{signature}\". Only \"UnityFS\" is supported."; + else + errorMessage = "File is not a Unity Archive."; + return false; + } + + // All numeric fields are big-endian (swap = true). + var version = BinaryFileHelper.ReadUInt32(reader, true); + var unused = BinaryFileHelper.ReadNullTermString(reader); + var unityVersion = BinaryFileHelper.ReadNullTermString(reader); + var size = BinaryFileHelper.ReadUInt64(reader, true); + var compressedMetadataSize = BinaryFileHelper.ReadUInt32(reader, true); + var uncompressedMetadataSize = BinaryFileHelper.ReadUInt32(reader, true); + var flags = BinaryFileHelper.ReadUInt32(reader, true); + + if (compressedMetadataSize > uncompressedMetadataSize) + throw new InvalidDataException("Compressed metadata size exceeds uncompressed size. The file may be corrupt."); + + if (size == 0) + throw new InvalidDataException("Archive size is zero. The file may be corrupt."); + + info = new ArchiveHeaderInfo + { + Signature = signature, + Version = version, + Unused = unused, + UnityVersion = unityVersion, + Size = size, + CompressedMetadataSize = compressedMetadataSize, + UncompressedMetadataSize = uncompressedMetadataSize, + Flags = flags, + }; + + return true; + } + catch (Exception ex) when (ex is EndOfStreamException || ex is InvalidDataException) + { + errorMessage = $"Error reading archive header: {ex.Message}"; + return false; + } + } } diff --git a/UnityDataTool.Tests/ArchiveTests.cs b/UnityDataTool.Tests/ArchiveTests.cs index 0775e0b..6653f0e 100644 --- a/UnityDataTool.Tests/ArchiveTests.cs +++ b/UnityDataTool.Tests/ArchiveTests.cs @@ -112,6 +112,66 @@ public async Task ArchiveList_JsonFormat() } } + [Test] + public async Task ArchiveHeader_TextFormat() + { + using var sw = new StringWriter(); + var currentOut = Console.Out; + try + { + Console.SetOut(sw); + + Assert.AreEqual(0, await Program.Main(new string[] { "archive", "header", m_ArchivePath })); + + var output = sw.ToString(); + Assert.That(output, Does.Contain("UnityFS")); + Assert.That(output, Does.Contain("2023.1.0a16")); + Assert.That(output, Does.Contain("93,075")); + Assert.That(output, Does.Contain("Lz4HC")); + Assert.That(output, Does.Contain("BlocksAndDirectoryInfoCombined")); + Assert.That(output, Does.Contain("BlockInfoNeedPaddingAtStart")); + } + finally + { + Console.SetOut(currentOut); + } + } + + [Test] + public async Task ArchiveHeader_JsonFormat() + { + using var sw = new StringWriter(); + var currentOut = Console.Out; + try + { + Console.SetOut(sw); + + Assert.AreEqual(0, await Program.Main(new string[] { "archive", "header", m_ArchivePath, "-f", "Json" })); + + var output = sw.ToString(); + var json = JsonDocument.Parse(output).RootElement; + Assert.AreEqual(JsonValueKind.Object, json.ValueKind); + + Assert.AreEqual("UnityFS", json.GetProperty("signature").GetString()); + Assert.AreEqual(8u, json.GetProperty("version").GetUInt32()); + Assert.AreEqual("2023.1.0a16", json.GetProperty("unityVersion").GetString()); + Assert.AreEqual(93075u, json.GetProperty("fileSize").GetUInt64()); + Assert.AreEqual(118u, json.GetProperty("compressedMetadataSize").GetUInt32()); + Assert.AreEqual(234u, json.GetProperty("uncompressedMetadataSize").GetUInt32()); + Assert.AreEqual("Lz4HC", json.GetProperty("metadataCompression").GetString()); + + var flags = json.GetProperty("flags"); + Assert.AreEqual(JsonValueKind.Array, flags.ValueKind); + Assert.AreEqual(2, flags.GetArrayLength()); + Assert.AreEqual("BlocksAndDirectoryInfoCombined", flags[0].GetString()); + Assert.AreEqual("BlockInfoNeedPaddingAtStart", flags[1].GetString()); + } + finally + { + Console.SetOut(currentOut); + } + } + [Test] public async Task ArchiveExtract_FilesExtractedSuccessfully() { diff --git a/UnityDataTool/Archive.cs b/UnityDataTool/Archive.cs index f5569c8..ea62013 100644 --- a/UnityDataTool/Archive.cs +++ b/UnityDataTool/Archive.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.IO; using System.Text.Json; using UnityDataTools.BinaryFormat; @@ -69,6 +70,107 @@ err is NotSupportedException return 0; } + public static int HandleHeader(FileInfo filename, OutputFormat format) + { + var path = filename.ToString(); + + if (WebBundleHelper.IsWebBundle(path)) + { + Console.Error.WriteLine("Web bundle files (.data, .data.gz, .data.br) use a different format. The header command is only supported for Unity Archive files."); + return 1; + } + + if (!ArchiveDetector.TryReadArchiveHeader(filename.FullName, out var info, out var errorMessage)) + { + Console.Error.WriteLine(errorMessage); + return 1; + } + + if (format == OutputFormat.Json) + OutputHeaderJson(info); + else + OutputHeaderText(info); + + return 0; + } + + static void OutputHeaderText(ArchiveHeaderInfo info) + { + Console.WriteLine($"{"Signature",-30} {info.Signature}"); + Console.WriteLine($"{"Version",-30} {info.Version}"); + Console.WriteLine($"{"Unity Version",-30} {info.UnityVersion}"); + Console.WriteLine($"{"File Size",-30} {info.Size:N0} bytes"); + Console.WriteLine($"{"Compressed Metadata Size",-30} {info.CompressedMetadataSize:N0}"); + Console.WriteLine($"{"Uncompressed Metadata Size",-30} {info.UncompressedMetadataSize:N0}"); + Console.WriteLine($"{"Metadata Compression",-30} {FormatCompressionType(info.MetadataCompressionType)}"); + Console.WriteLine($"{"Flags",-30} {FormatArchiveFlags(info.ArchiveFlagBits)}"); + } + + static void OutputHeaderJson(ArchiveHeaderInfo info) + { + var jsonObject = new + { + signature = info.Signature, + version = info.Version, + unityVersion = info.UnityVersion, + fileSize = info.Size, + compressedMetadataSize = info.CompressedMetadataSize, + uncompressedMetadataSize = info.UncompressedMetadataSize, + metadataCompression = FormatCompressionType(info.MetadataCompressionType), + flags = GetArchiveFlagNames(info.ArchiveFlagBits), + }; + + var json = JsonSerializer.Serialize(jsonObject, new JsonSerializerOptions { WriteIndented = true }); + Console.WriteLine(json); + } + + static string FormatCompressionType(int compressionType) + { + return compressionType switch + { + 0 => "None", + 1 => "Lzma", + 2 => "Lz4", + 3 => "Lz4HC", + _ => compressionType.ToString(), + }; + } + + static readonly (uint bit, string name)[] KnownArchiveFlags = + { + (0x40, "BlocksAndDirectoryInfoCombined"), + (0x80, "BlocksInfoAtTheEnd"), + (0x100, "OldWebPluginCompatibility"), + (0x200, "BlockInfoNeedPaddingAtStart"), + }; + + static string[] GetArchiveFlagNames(uint flagBits) + { + var names = new List(); + uint remaining = flagBits; + + foreach (var (bit, name) in KnownArchiveFlags) + { + if ((remaining & bit) != 0) + { + names.Add(name); + remaining &= ~bit; + } + } + + // Report any unrecognized bits by hex value. + if (remaining != 0) + names.Add($"0x{remaining:X}"); + + return names.ToArray(); + } + + static string FormatArchiveFlags(uint flagBits) + { + var names = GetArchiveFlagNames(flagBits); + return names.Length > 0 ? string.Join(", ", names) : "None"; + } + static void ExtractAssetBundle(FileInfo filename, DirectoryInfo outputFolder) { Console.WriteLine($"Extracting asset bundle: {filename}"); diff --git a/UnityDataTool/Program.cs b/UnityDataTool/Program.cs index a4413c5..3a51d70 100644 --- a/UnityDataTool/Program.cs +++ b/UnityDataTool/Program.cs @@ -142,10 +142,21 @@ public static async Task Main(string[] args) (FileInfo fi, OutputFormat f) => Task.FromResult(Archive.HandleList(fi, f)), pathArg, fOpt); + var headerArchiveCommand = new Command("header", "Display the header of a Unity Archive file.") + { + pathArg, + fOpt, + }; + + headerArchiveCommand.SetHandler( + (FileInfo fi, OutputFormat f) => Task.FromResult(Archive.HandleHeader(fi, f)), + pathArg, fOpt); + var archiveCommand = new Command("archive", "Inspect or extract the contents of a Unity archive (AssetBundle or web platform .data file).") { extractArchiveCommand, listArchiveCommand, + headerArchiveCommand, }; rootCommand.AddCommand(archiveCommand); From dc261de65a9f994f8edda55910511143ceb7bd87 Mon Sep 17 00:00:00 2001 From: Andrew Skowronski Date: Thu, 2 Apr 2026 15:18:45 -0400 Subject: [PATCH 05/11] Archive command supports "blocks" command and adds offsets to "list" command --- Documentation/command-archive.md | 27 +- UnityBinaryFormat/ArchiveDetector.cs | 247 +++++++++++++++++- UnityBinaryFormat/BinaryFileHelper.cs | 8 + UnityBinaryFormat/UnityBinaryFormat.csproj | 4 + UnityDataTool.Tests/ArchiveTests.cs | 64 +++++ .../2019.4.0f1/ExpectedValues.json | 3 + .../2020.3.0f1/ExpectedValues.json | 3 + .../2021.3.0f1/ExpectedValues.json | 3 + .../2022.1.20f1/ExpectedValues.json | 3 + .../2023.1.0a16/ExpectedValues.json | 3 + .../UnityDataToolAssetBundleTests.cs | 24 +- UnityDataTool/Archive.cs | 118 ++++++++- UnityDataTool/Program.cs | 11 + 13 files changed, 499 insertions(+), 19 deletions(-) diff --git a/Documentation/command-archive.md b/Documentation/command-archive.md index ef3497e..599a417 100644 --- a/Documentation/command-archive.md +++ b/Documentation/command-archive.md @@ -7,6 +7,7 @@ The `archive` command provides utilities for working with Unity Archives (AssetB | Sub-Command | Description | |-------------|-------------| | [`header`](#header) | Display archive header information | +| [`blocks`](#blocks) | Display the data block list | | [`list`](#list) | List contents of an archive | | [`extract`](#extract) | Extract contents of an archive | @@ -36,9 +37,33 @@ UnityDataTool archive header scenes.bundle -f Json --- +## blocks + +Displays the data block list of a Unity Archive file, showing the size, compression type, and file offset of each block. Only the `UnityFS` format is supported. + +### Quick Reference + +``` +UnityDataTool archive blocks [options] +``` + +| Option | Description | Default | +|--------|-------------|---------| +| `` | Path to the archive file | *(required)* | +| `-f, --format ` | Output format | `Text` | + +### Example + +```bash +UnityDataTool archive blocks scenes.bundle +UnityDataTool archive blocks scenes.bundle -f Json +``` + +--- + ## list -Lists the contents of an archive. +Lists the contents of an archive, including the offset, size, and flags of each file. ### Quick Reference diff --git a/UnityBinaryFormat/ArchiveDetector.cs b/UnityBinaryFormat/ArchiveDetector.cs index 57533a7..54614a6 100644 --- a/UnityBinaryFormat/ArchiveDetector.cs +++ b/UnityBinaryFormat/ArchiveDetector.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using K4os.Compression.LZ4; namespace UnityDataTools.BinaryFormat; @@ -45,6 +46,40 @@ public class ArchiveHeaderInfo public uint ArchiveFlagBits => Flags & ~0x3Fu; } +public class ArchiveStorageBlock +{ + public uint UncompressedSize { get; set; } + public uint CompressedSize { get; set; } + public ushort Flags { get; set; } + public int CompressionType => Flags & 0x3F; + public bool IsStreamed => (Flags & 0x40) != 0; +} + +public class ArchiveBlocksInfo +{ + public byte[] UncompressedDataHash { get; set; } // Unused + public ArchiveStorageBlock[] Blocks { get; set; } +} + +public class ArchiveDirectoryNode +{ + public ulong Offset { get; set; } // Offset within the virtual data section (e.g. all the blocks uncompressed and concatenated together + public ulong Size { get; set; } // Size of the file in bytse + public uint Flags { get; set; } + public string Path { get; set; } +} + +public class ArchiveDirectoryInfo +{ + public ArchiveDirectoryNode[] Nodes { get; set; } +} + +public class ArchiveMetadata +{ + public ArchiveBlocksInfo BlocksInfo { get; set; } + public ArchiveDirectoryInfo DirectoryInfo { get; set; } +} + /// /// Utility for detecting and parsing Unity Archive (AssetBundle) file headers. /// @@ -103,6 +138,25 @@ public static bool IsUnityArchive(string filePath) } } + /// + /// Reads a null-terminated signature string, with a length limit to avoid reading + /// deep into non-archive files that don't contain an early null byte. + /// + static string ReadSignature(BinaryReader reader) + { + const int maxLength = 20; // Longest valid signature is "UnityArchive" (12 chars) + var sb = new System.Text.StringBuilder(); + for (int i = 0; i < maxLength; i++) + { + byte b = reader.ReadByte(); // Throws EndOfStreamException on EOF + if (b == 0) + return sb.ToString(); + sb.Append((char)b); + } + // No null terminator found within the limit — not a valid archive signature. + return sb.ToString(); + } + /// /// Attempts to read and parse the header of a Unity Archive file. /// Only the "UnityFS" format is supported. Other archive signatures will produce @@ -124,7 +178,16 @@ public static bool TryReadArchiveHeader(string filePath, out ArchiveHeaderInfo i using var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read); using var reader = new BinaryReader(stream); - var signature = BinaryFileHelper.ReadNullTermString(reader); + string signature; + try + { + signature = ReadSignature(reader); + } + catch (EndOfStreamException) + { + errorMessage = "File is not a Unity Archive."; + return false; + } if (signature != "UnityFS") { @@ -171,4 +234,186 @@ public static bool TryReadArchiveHeader(string filePath, out ArchiveHeaderInfo i return false; } } + + /// + /// Reads and parses the metadata section (BlocksInfo and DirectoryInfo) from a Unity Archive. + /// The header must have been successfully read first via TryReadArchiveHeader. + /// Only the combined BlocksInfo+DirectoryInfo layout is supported. + /// + public static bool TryReadArchiveMetadata(string filePath, ArchiveHeaderInfo header, out ArchiveMetadata metadata, out string errorMessage) + { + metadata = null; + errorMessage = null; + + const uint flagBlocksAndDirectoryInfoCombined = 0x40; + const uint flagBlocksInfoAtTheEnd = 0x80; + + if ((header.ArchiveFlagBits & flagBlocksAndDirectoryInfoCombined) == 0) + { + errorMessage = "This archive does not use the combined BlocksInfo+DirectoryInfo layout. Only the combined layout is supported."; + return false; + } + + try + { + using var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read); + + // Calculate where the metadata section starts. + long metadataOffset; + if ((header.ArchiveFlagBits & flagBlocksInfoAtTheEnd) != 0) + metadataOffset = (long)(header.Size - header.CompressedMetadataSize); + else + metadataOffset = GetHeaderSize(header); + + stream.Seek(metadataOffset, SeekOrigin.Begin); + + // Read the metadata bytes (which may be compressed) + var compressedData = new byte[header.CompressedMetadataSize]; + int bytesRead = stream.Read(compressedData, 0, compressedData.Length); + if (bytesRead != compressedData.Length) + throw new InvalidDataException("Could not read the full metadata section from the file."); + + // Decompress if needed. + byte[] uncompressedData; + if (header.MetadataCompressionType == 0) + { + uncompressedData = compressedData; + } + else if (header.MetadataCompressionType == 2 || header.MetadataCompressionType == 3) + { + // LZ4 and LZ4HC use the same decompression algorithm. + uncompressedData = new byte[header.UncompressedMetadataSize]; + int decoded = LZ4Codec.Decode(compressedData, 0, compressedData.Length, + uncompressedData, 0, uncompressedData.Length); + if (decoded != header.UncompressedMetadataSize) + throw new InvalidDataException($"LZ4 decompression produced {decoded} bytes, expected {header.UncompressedMetadataSize}."); + } + else if (header.MetadataCompressionType == 1) + { + errorMessage = "LZMA compression for archive metadata is not supported."; + return false; + } + else + { + errorMessage = $"Unknown metadata compression type: {header.MetadataCompressionType}."; + return false; + } + + // Parse BlocksInfo and DirectoryInfo from the uncompressed buffer. + using var memStream = new MemoryStream(uncompressedData); + using var reader = new BinaryReader(memStream); + + var blocksInfo = ParseBlocksInfo(reader); + var directoryInfo = ParseDirectoryInfo(reader); + + metadata = new ArchiveMetadata + { + BlocksInfo = blocksInfo, + DirectoryInfo = directoryInfo, + }; + + return true; + } + catch (Exception ex) when (ex is EndOfStreamException || ex is InvalidDataException) + { + errorMessage = $"Error reading archive metadata: {ex.Message}"; + return false; + } + } + + /// + /// Calculates the data section offset from the start of the archive file. + /// This is the byte position where the first data block begins. + /// + public static long GetDataOffset(ArchiveHeaderInfo header) + { + const uint flagBlocksInfoAtTheEnd = 0x80; + const uint flagBlockInfoNeedPaddingAtStart = 0x200; + + long offset = GetHeaderSize(header); + + if ((header.ArchiveFlagBits & flagBlocksInfoAtTheEnd) == 0) + { + if ((header.ArchiveFlagBits & flagBlockInfoNeedPaddingAtStart) != 0) + offset += AlignTo16(header.CompressedMetadataSize); + else + offset += header.CompressedMetadataSize; + } + + return offset; + } + + static int GetHeaderSize(ArchiveHeaderInfo header) + { + const uint flagOldWebPluginCompatibility = 0x100; + + int size; + if ((header.ArchiveFlagBits & flagOldWebPluginCompatibility) != 0) + size = 10; // Legacy web plugin signature portion + else + size = header.Signature.Length + 1; + + size += 4; // version + size += header.Unused.Length + 1; + size += header.UnityVersion.Length + 1; + size += 8; // size (UInt64) + size += 4; // compressedMetadataSize + size += 4; // uncompressedMetadataSize + size += 4; // flags + + if (header.Version >= 7) + size = (int)AlignTo16((uint)size); + + return size; + } + + static long AlignTo16(uint value) + { + return (value + 15) & ~15L; + } + + static ArchiveBlocksInfo ParseBlocksInfo(BinaryReader reader) + { + var hash = reader.ReadBytes(16); + var blockCount = BinaryFileHelper.ReadUInt32(reader, true); + + var blocks = new ArchiveStorageBlock[blockCount]; + for (int i = 0; i < blockCount; i++) + { + blocks[i] = new ArchiveStorageBlock + { + UncompressedSize = BinaryFileHelper.ReadUInt32(reader, true), + CompressedSize = BinaryFileHelper.ReadUInt32(reader, true), + Flags = BinaryFileHelper.ReadUInt16(reader, true), + }; + } + + return new ArchiveBlocksInfo + { + UncompressedDataHash = hash, + Blocks = blocks, + }; + } + + static ArchiveDirectoryInfo ParseDirectoryInfo(BinaryReader reader) + { + var nodeCount = BinaryFileHelper.ReadUInt32(reader, true); + + var nodes = new ArchiveDirectoryNode[nodeCount]; + for (int i = 0; i < nodeCount; i++) + { + nodes[i] = new ArchiveDirectoryNode + { + Offset = BinaryFileHelper.ReadUInt64(reader, true), + Size = BinaryFileHelper.ReadUInt64(reader, true), + Flags = BinaryFileHelper.ReadUInt32(reader, true), + Path = BinaryFileHelper.ReadNullTermString(reader), + }; + } + + return new ArchiveDirectoryInfo + { + Nodes = nodes, + }; + } } diff --git a/UnityBinaryFormat/BinaryFileHelper.cs b/UnityBinaryFormat/BinaryFileHelper.cs index 3349471..117b4bd 100644 --- a/UnityBinaryFormat/BinaryFileHelper.cs +++ b/UnityBinaryFormat/BinaryFileHelper.cs @@ -61,6 +61,14 @@ public static short ReadInt16(BinaryReader reader, bool swap) return (short)raw; } + public static ushort ReadUInt16(BinaryReader reader, bool swap) + { + ushort raw = reader.ReadUInt16(); + if (swap) + raw = (ushort)((raw << 8) | (raw >> 8)); + return raw; + } + public static uint ReadUInt32(BinaryReader reader, bool swap) { uint raw = reader.ReadUInt32(); diff --git a/UnityBinaryFormat/UnityBinaryFormat.csproj b/UnityBinaryFormat/UnityBinaryFormat.csproj index bc0f6f2..d144acc 100644 --- a/UnityBinaryFormat/UnityBinaryFormat.csproj +++ b/UnityBinaryFormat/UnityBinaryFormat.csproj @@ -14,6 +14,10 @@ AnyCPU + + + + diff --git a/UnityDataTool.Tests/ArchiveTests.cs b/UnityDataTool.Tests/ArchiveTests.cs index 6653f0e..7064459 100644 --- a/UnityDataTool.Tests/ArchiveTests.cs +++ b/UnityDataTool.Tests/ArchiveTests.cs @@ -54,18 +54,22 @@ public async Task ArchiveList_TextFormat() var expectedOutput = @"BuildPlayer-SampleScene.sharedAssets + Offset: 0 Size: 90732 Flags: SerializedFile BuildPlayer-SampleScene + Offset: 90732 Size: 153352 Flags: SerializedFile BuildPlayer-OtherScene.sharedAssets + Offset: 244084 Size: 136744 Flags: SerializedFile BuildPlayer-OtherScene + Offset: 380828 Size: 158340 Flags: SerializedFile @@ -98,12 +102,14 @@ public async Task ArchiveList_JsonFormat() foreach (var element in jsonArray.EnumerateArray()) { Assert.IsTrue(element.TryGetProperty("path", out _)); + Assert.IsTrue(element.TryGetProperty("offset", out _)); Assert.IsTrue(element.TryGetProperty("size", out _)); Assert.IsTrue(element.TryGetProperty("flags", out _)); Assert.AreEqual("SerializedFile", element.GetProperty("flags").GetString()); } Assert.AreEqual("BuildPlayer-SampleScene.sharedAssets", jsonArray[0].GetProperty("path").GetString()); + Assert.AreEqual(0, jsonArray[0].GetProperty("offset").GetUInt64()); Assert.AreEqual(90732, jsonArray[0].GetProperty("size").GetInt64()); } finally @@ -172,6 +178,64 @@ public async Task ArchiveHeader_JsonFormat() } } + [Test] + public async Task ArchiveBlocks_TextFormat() + { + using var sw = new StringWriter(); + var currentOut = Console.Out; + try + { + Console.SetOut(sw); + + Assert.AreEqual(0, await Program.Main(new string[] { "archive", "blocks", m_ArchivePath })); + + var output = sw.ToString(); + Assert.That(output, Does.Contain("Blocks: 1")); + Assert.That(output, Does.Contain("#0")); + Assert.That(output, Does.Contain("Offset: 192")); + Assert.That(output, Does.Contain("Uncompressed: 539,168")); + Assert.That(output, Does.Contain("Compressed: 92,883")); + Assert.That(output, Does.Contain("Compression: Lzma")); + } + finally + { + Console.SetOut(currentOut); + } + } + + [Test] + public async Task ArchiveBlocks_JsonFormat() + { + using var sw = new StringWriter(); + var currentOut = Console.Out; + try + { + Console.SetOut(sw); + + Assert.AreEqual(0, await Program.Main(new string[] { "archive", "blocks", m_ArchivePath, "-f", "Json" })); + + var output = sw.ToString(); + var json = JsonDocument.Parse(output).RootElement; + Assert.AreEqual(JsonValueKind.Object, json.ValueKind); + + var blocks = json.GetProperty("blocks"); + Assert.AreEqual(JsonValueKind.Array, blocks.ValueKind); + Assert.AreEqual(1, blocks.GetArrayLength()); + + var block = blocks[0]; + Assert.AreEqual(0, block.GetProperty("index").GetInt32()); + Assert.AreEqual(192, block.GetProperty("offset").GetInt64()); + Assert.AreEqual(539168u, block.GetProperty("uncompressedSize").GetUInt32()); + Assert.AreEqual(92883u, block.GetProperty("compressedSize").GetUInt32()); + Assert.AreEqual("Lzma", block.GetProperty("compression").GetString()); + Assert.AreEqual(true, block.GetProperty("isStreamed").GetBoolean()); + } + finally + { + Console.SetOut(currentOut); + } + } + [Test] public async Task ArchiveExtract_FilesExtractedSuccessfully() { diff --git a/UnityDataTool.Tests/ExpectedData/2019.4.0f1/ExpectedValues.json b/UnityDataTool.Tests/ExpectedData/2019.4.0f1/ExpectedValues.json index 6da0cff..b947cb1 100644 --- a/UnityDataTool.Tests/ExpectedData/2019.4.0f1/ExpectedValues.json +++ b/UnityDataTool.Tests/ExpectedData/2019.4.0f1/ExpectedValues.json @@ -1,10 +1,13 @@ { "$type": "System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib],[System.Object, System.Private.CoreLib]], System.Private.CoreLib", "NodeCount": 3, + "CAB-5d40f7cad7c871cf2ad2af19ac542994-Offset": 0, "CAB-5d40f7cad7c871cf2ad2af19ac542994-Size": 1639323, "CAB-5d40f7cad7c871cf2ad2af19ac542994-Flags": 4, + "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Offset": 1639323, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Size": 2833848, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Flags": 0, + "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Offset": 4473171, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Size": 5248, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Flags": 0, "animation_clips_count": 2, diff --git a/UnityDataTool.Tests/ExpectedData/2020.3.0f1/ExpectedValues.json b/UnityDataTool.Tests/ExpectedData/2020.3.0f1/ExpectedValues.json index 3646830..3b7c3e0 100644 --- a/UnityDataTool.Tests/ExpectedData/2020.3.0f1/ExpectedValues.json +++ b/UnityDataTool.Tests/ExpectedData/2020.3.0f1/ExpectedValues.json @@ -1,10 +1,13 @@ { "$type": "System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib],[System.Object, System.Private.CoreLib]], System.Private.CoreLib", "NodeCount": 3, + "CAB-5d40f7cad7c871cf2ad2af19ac542994-Offset": 0, "CAB-5d40f7cad7c871cf2ad2af19ac542994-Size": 1074083, "CAB-5d40f7cad7c871cf2ad2af19ac542994-Flags": 4, + "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Offset": 1074083, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Size": 2833848, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Flags": 0, + "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Offset": 3907931, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Size": 5248, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Flags": 0, "animation_clips_count": 2, diff --git a/UnityDataTool.Tests/ExpectedData/2021.3.0f1/ExpectedValues.json b/UnityDataTool.Tests/ExpectedData/2021.3.0f1/ExpectedValues.json index 2883328..4407084 100644 --- a/UnityDataTool.Tests/ExpectedData/2021.3.0f1/ExpectedValues.json +++ b/UnityDataTool.Tests/ExpectedData/2021.3.0f1/ExpectedValues.json @@ -1,10 +1,13 @@ { "$type": "System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib],[System.Object, System.Private.CoreLib]], System.Private.CoreLib", "NodeCount": 3, + "CAB-5d40f7cad7c871cf2ad2af19ac542994-Offset": 0, "CAB-5d40f7cad7c871cf2ad2af19ac542994-Size": 956211, "CAB-5d40f7cad7c871cf2ad2af19ac542994-Flags": 4, + "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Offset": 956211, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Size": 2833848, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Flags": 0, + "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Offset": 3790059, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Size": 5248, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Flags": 0, "animation_clips_count": 2, diff --git a/UnityDataTool.Tests/ExpectedData/2022.1.20f1/ExpectedValues.json b/UnityDataTool.Tests/ExpectedData/2022.1.20f1/ExpectedValues.json index 88589d1..3f014a9 100644 --- a/UnityDataTool.Tests/ExpectedData/2022.1.20f1/ExpectedValues.json +++ b/UnityDataTool.Tests/ExpectedData/2022.1.20f1/ExpectedValues.json @@ -1,10 +1,13 @@ { "$type": "System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib],[System.Object, System.Private.CoreLib]], System.Private.CoreLib", "NodeCount": 3, + "CAB-5d40f7cad7c871cf2ad2af19ac542994-Offset": 0, "CAB-5d40f7cad7c871cf2ad2af19ac542994-Size": 960179, "CAB-5d40f7cad7c871cf2ad2af19ac542994-Flags": 4, + "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Offset": 960179, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Size": 2833056, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Flags": 0, + "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Offset": 3793235, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Size": 5248, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Flags": 0, "animation_clips_count": 2, diff --git a/UnityDataTool.Tests/ExpectedData/2023.1.0a16/ExpectedValues.json b/UnityDataTool.Tests/ExpectedData/2023.1.0a16/ExpectedValues.json index 5e2e91e..7d6f9aa 100644 --- a/UnityDataTool.Tests/ExpectedData/2023.1.0a16/ExpectedValues.json +++ b/UnityDataTool.Tests/ExpectedData/2023.1.0a16/ExpectedValues.json @@ -1,10 +1,13 @@ { "$type": "System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib],[System.Object, System.Private.CoreLib]], System.Private.CoreLib", "NodeCount": 3, + "CAB-5d40f7cad7c871cf2ad2af19ac542994-Offset": 0, "CAB-5d40f7cad7c871cf2ad2af19ac542994-Size": 942315, "CAB-5d40f7cad7c871cf2ad2af19ac542994-Flags": 4, + "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Offset": 942315, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Size": 2833872, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Flags": 0, + "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Offset": 3776187, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Size": 5248, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Flags": 0, "animation_clips_count": 2, diff --git a/UnityDataTool.Tests/UnityDataToolAssetBundleTests.cs b/UnityDataTool.Tests/UnityDataToolAssetBundleTests.cs index b47ae73..d2a0da4 100644 --- a/UnityDataTool.Tests/UnityDataToolAssetBundleTests.cs +++ b/UnityDataTool.Tests/UnityDataToolAssetBundleTests.cs @@ -85,17 +85,21 @@ public async Task ArchiveList_AssetBundle_ListFilesCorrectly() var lines = sw.ToString().Split(sw.NewLine); + // Each entry: path, offset, size, flags, blank = 5 lines Assert.AreEqual("CAB-5d40f7cad7c871cf2ad2af19ac542994", lines[0]); - Assert.AreEqual($" Size: {Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994-Size")}", lines[1]); - Assert.AreEqual($" Flags: {(ArchiveNodeFlags)(long)Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994-Flags")}", lines[2]); - - Assert.AreEqual("CAB-5d40f7cad7c871cf2ad2af19ac542994.resS", lines[4]); - Assert.AreEqual($" Size: {Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Size")}", lines[5]); - Assert.AreEqual($" Flags: {(ArchiveNodeFlags)(long)Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Flags")}", lines[6]); - - Assert.AreEqual("CAB-5d40f7cad7c871cf2ad2af19ac542994.resource", lines[8]); - Assert.AreEqual($" Size: {Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Size")}", lines[9]); - Assert.AreEqual($" Flags: {(ArchiveNodeFlags)(long)Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Flags")}", lines[10]); + Assert.AreEqual($" Offset: {Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994-Offset")}", lines[1]); + Assert.AreEqual($" Size: {Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994-Size")}", lines[2]); + Assert.AreEqual($" Flags: {(ArchiveNodeFlags)(long)Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994-Flags")}", lines[3]); + + Assert.AreEqual("CAB-5d40f7cad7c871cf2ad2af19ac542994.resS", lines[5]); + Assert.AreEqual($" Offset: {Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Offset")}", lines[6]); + Assert.AreEqual($" Size: {Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Size")}", lines[7]); + Assert.AreEqual($" Flags: {(ArchiveNodeFlags)(long)Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Flags")}", lines[8]); + + Assert.AreEqual("CAB-5d40f7cad7c871cf2ad2af19ac542994.resource", lines[10]); + Assert.AreEqual($" Offset: {Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Offset")}", lines[11]); + Assert.AreEqual($" Size: {Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Size")}", lines[12]); + Assert.AreEqual($" Flags: {(ArchiveNodeFlags)(long)Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Flags")}", lines[13]); } finally diff --git a/UnityDataTool/Archive.cs b/UnityDataTool/Archive.cs index ea62013..4877bdb 100644 --- a/UnityDataTool/Archive.cs +++ b/UnityDataTool/Archive.cs @@ -94,6 +94,36 @@ public static int HandleHeader(FileInfo filename, OutputFormat format) return 0; } + public static int HandleBlocks(FileInfo filename, OutputFormat format) + { + var path = filename.ToString(); + + if (WebBundleHelper.IsWebBundle(path)) + { + Console.Error.WriteLine("Web bundle files (.data, .data.gz, .data.br) use a different format. The blocks command is only supported for Unity Archive files."); + return 1; + } + + if (!ArchiveDetector.TryReadArchiveHeader(filename.FullName, out var header, out var errorMessage)) + { + Console.Error.WriteLine(errorMessage); + return 1; + } + + if (!ArchiveDetector.TryReadArchiveMetadata(filename.FullName, header, out var metadata, out errorMessage)) + { + Console.Error.WriteLine(errorMessage); + return 1; + } + + if (format == OutputFormat.Json) + OutputBlocksJson(header, metadata.BlocksInfo); + else + OutputBlocksText(header, metadata.BlocksInfo); + + return 0; + } + static void OutputHeaderText(ArchiveHeaderInfo info) { Console.WriteLine($"{"Signature",-30} {info.Signature}"); @@ -171,6 +201,73 @@ static string FormatArchiveFlags(uint flagBits) return names.Length > 0 ? string.Join(", ", names) : "None"; } + static void OutputBlocksText(ArchiveHeaderInfo header, ArchiveBlocksInfo blocksInfo) + { + long dataOffset = ArchiveDetector.GetDataOffset(header); + long blockOffset = dataOffset; + + Console.WriteLine($"Blocks: {blocksInfo.Blocks.Length}"); + for (int i = 0; i < blocksInfo.Blocks.Length; i++) + { + var block = blocksInfo.Blocks[i]; + Console.WriteLine($" #{i,-4} Offset: {blockOffset:N0} Uncompressed: {block.UncompressedSize:N0} Compressed: {block.CompressedSize:N0} Compression: {FormatCompressionType(block.CompressionType)}"); + blockOffset += block.CompressedSize; + } + } + + static void OutputBlocksJson(ArchiveHeaderInfo header, ArchiveBlocksInfo blocksInfo) + { + long dataOffset = ArchiveDetector.GetDataOffset(header); + long blockOffset = dataOffset; + + var jsonBlocks = new object[blocksInfo.Blocks.Length]; + for (int i = 0; i < blocksInfo.Blocks.Length; i++) + { + var block = blocksInfo.Blocks[i]; + jsonBlocks[i] = new + { + index = i, + offset = blockOffset, + uncompressedSize = block.UncompressedSize, + compressedSize = block.CompressedSize, + compression = FormatCompressionType(block.CompressionType), + isStreamed = block.IsStreamed, + }; + blockOffset += block.CompressedSize; + } + + var jsonObject = new { blocks = jsonBlocks }; + var json = JsonSerializer.Serialize(jsonObject, new JsonSerializerOptions { WriteIndented = true }); + Console.WriteLine(json); + } + + static readonly (uint bit, string name)[] KnownNodeFlags = + { + (0x01, "Directory"), + (0x02, "Deleted"), + (0x04, "SerializedFile"), + }; + + static string FormatNodeFlags(uint flags) + { + var names = new List(); + uint remaining = flags; + + foreach (var (bit, name) in KnownNodeFlags) + { + if ((remaining & bit) != 0) + { + names.Add(name); + remaining &= ~bit; + } + } + + if (remaining != 0) + names.Add($"0x{remaining:X}"); + + return names.Count > 0 ? string.Join(", ", names) : "None"; + } + static void ExtractAssetBundle(FileInfo filename, DirectoryInfo outputFolder) { Console.WriteLine($"Extracting asset bundle: {filename}"); @@ -184,26 +281,33 @@ static void ExtractAssetBundle(FileInfo filename, DirectoryInfo outputFolder) static void ListAssetBundle(FileInfo filename, OutputFormat format) { - using var archive = UnityFileSystem.MountArchive(filename.FullName, "/"); + if (!ArchiveDetector.TryReadArchiveHeader(filename.FullName, out var header, out var errorMessage)) + throw new NotSupportedException(errorMessage); + + if (!ArchiveDetector.TryReadArchiveMetadata(filename.FullName, header, out var metadata, out errorMessage)) + throw new NotSupportedException(errorMessage); + + var nodes = metadata.DirectoryInfo.Nodes; if (format == OutputFormat.Json) { - var jsonArray = new object[archive.Nodes.Count]; - for (int i = 0; i < archive.Nodes.Count; i++) + var jsonArray = new object[nodes.Length]; + for (int i = 0; i < nodes.Length; i++) { - var node = archive.Nodes[i]; - jsonArray[i] = new { path = node.Path, size = node.Size, flags = node.Flags.ToString() }; + var node = nodes[i]; + jsonArray[i] = new { path = node.Path, offset = node.Offset, size = node.Size, flags = FormatNodeFlags(node.Flags) }; } var json = JsonSerializer.Serialize(jsonArray, new JsonSerializerOptions { WriteIndented = true }); Console.WriteLine(json); } else { - foreach (var node in archive.Nodes) + foreach (var node in nodes) { Console.WriteLine($"{node.Path}"); + Console.WriteLine($" Offset: {node.Offset}"); Console.WriteLine($" Size: {node.Size}"); - Console.WriteLine($" Flags: {node.Flags}"); + Console.WriteLine($" Flags: {FormatNodeFlags(node.Flags)}"); Console.WriteLine(); } } diff --git a/UnityDataTool/Program.cs b/UnityDataTool/Program.cs index 3a51d70..da89677 100644 --- a/UnityDataTool/Program.cs +++ b/UnityDataTool/Program.cs @@ -152,11 +152,22 @@ public static async Task Main(string[] args) (FileInfo fi, OutputFormat f) => Task.FromResult(Archive.HandleHeader(fi, f)), pathArg, fOpt); + var blocksArchiveCommand = new Command("blocks", "Display the block list of a Unity Archive file.") + { + pathArg, + fOpt, + }; + + blocksArchiveCommand.SetHandler( + (FileInfo fi, OutputFormat f) => Task.FromResult(Archive.HandleBlocks(fi, f)), + pathArg, fOpt); + var archiveCommand = new Command("archive", "Inspect or extract the contents of a Unity archive (AssetBundle or web platform .data file).") { extractArchiveCommand, listArchiveCommand, headerArchiveCommand, + blocksArchiveCommand, }; rootCommand.AddCommand(archiveCommand); From 0d56463c0dc146ea19ced5ffbc27b2a698077c82 Mon Sep 17 00:00:00 2001 From: Andrew Skowronski Date: Thu, 2 Apr 2026 16:26:06 -0400 Subject: [PATCH 06/11] Dump the version to 1.3.4 --- UnityDataTool/UnityDataTool.csproj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/UnityDataTool/UnityDataTool.csproj b/UnityDataTool/UnityDataTool.csproj index 1173552..a0eb739 100644 --- a/UnityDataTool/UnityDataTool.csproj +++ b/UnityDataTool/UnityDataTool.csproj @@ -5,9 +5,9 @@ net9.0 latest 1.3.2 - 1.3.3.0 - 1.3.3.0 - 1.3.3 + 1.3.4.0 + 1.3.4.0 + 1.3.4 From d6b4c2a581669bba77e14154b096405cd660fd91 Mon Sep 17 00:00:00 2001 From: Andrew Skowronski Date: Thu, 2 Apr 2026 16:36:31 -0400 Subject: [PATCH 07/11] Add filter argument to archive extract Useful to extract just a single file or group of files out of an archive --- Documentation/command-archive.md | 14 +++++++++++--- UnityDataTool/Archive.cs | 20 +++++++++++++++----- UnityDataTool/Program.cs | 7 +++++-- UnityDataTool/WebBundleHelper.cs | 20 ++++++++++++++++++-- 4 files changed, 49 insertions(+), 12 deletions(-) diff --git a/Documentation/command-archive.md b/Documentation/command-archive.md index 599a417..f313683 100644 --- a/Documentation/command-archive.md +++ b/Documentation/command-archive.md @@ -15,7 +15,9 @@ The `archive` command provides utilities for working with Unity Archives (AssetB ## header -Displays the header information of a Unity Archive file, including format version, Unity version, file size, metadata compression, and archive flags. Only the `UnityFS` format is supported. +Displays the header information of a Unity Archive file, including format version, Unity version, file size, metadata compression, and archive flags. + +Very old versions of the Unity Archive format are not supported. But the files created by all currently supported Unity versions should be compatible (and it was tested with files as old as Unity 2017). ### Quick Reference @@ -39,7 +41,9 @@ UnityDataTool archive header scenes.bundle -f Json ## blocks -Displays the data block list of a Unity Archive file, showing the size, compression type, and file offset of each block. Only the `UnityFS` format is supported. +Displays the data block list of a Unity Archive file, showing the size, compression type, and file offset of each block. + +Very old versions of the Unity Archive format are not supported. ### Quick Reference @@ -65,6 +69,8 @@ UnityDataTool archive blocks scenes.bundle -f Json Lists the contents of an archive, including the offset, size, and flags of each file. +Very old versions of the Unity Archive format are not supported. + ### Quick Reference ``` @@ -99,11 +105,13 @@ UnityDataTool archive extract [options] |--------|-------------|---------| | `` | Path to the archive file | *(required)* | | `-o, --output-path ` | Output directory | `archive` | +| `--filter ` | Case-insensitive substring filter on file paths inside the archive | *(none — extract all)* | ### Example ```bash UnityDataTool archive extract scenes.bundle -o contents +UnityDataTool archive extract scenes.bundle --filter sharedAssets ``` **Output files:** @@ -114,7 +122,7 @@ contents/BuildPlayer-Scene2.sharedAssets contents/BuildPlayer-Scene2 ``` -> **Note:** The extracted files are binary SerializedFiles, not text. Use the [`dump`](command-dump.md) command to convert them to readable text format. +> **Note:** The extracted files are in binary formats, not text. If they are SerializedFiles then use the [`dump`](command-dump.md) command to convert them to readable text format. See also the [`serialized-file`](command-serialized-file.md) command. --- diff --git a/UnityDataTool/Archive.cs b/UnityDataTool/Archive.cs index 4877bdb..4d60026 100644 --- a/UnityDataTool/Archive.cs +++ b/UnityDataTool/Archive.cs @@ -9,18 +9,18 @@ namespace UnityDataTools.UnityDataTool; public static class Archive { - public static int HandleExtract(FileInfo filename, DirectoryInfo outputFolder) + public static int HandleExtract(FileInfo filename, DirectoryInfo outputFolder, string filter = null) { try { var path = filename.ToString(); if (WebBundleHelper.IsWebBundle(path)) { - WebBundleHelper.Extract(filename, outputFolder); + WebBundleHelper.Extract(filename, outputFolder, filter); } else if (ArchiveDetector.IsUnityArchive(path)) { - ExtractAssetBundle(filename, outputFolder); + ExtractAssetBundle(filename, outputFolder, filter); } else { @@ -268,15 +268,25 @@ static string FormatNodeFlags(uint flags) return names.Count > 0 ? string.Join(", ", names) : "None"; } - static void ExtractAssetBundle(FileInfo filename, DirectoryInfo outputFolder) + static void ExtractAssetBundle(FileInfo filename, DirectoryInfo outputFolder, string filter) { - Console.WriteLine($"Extracting asset bundle: {filename}"); + Console.WriteLine($"Extracting files from archive: {filename}"); using var archive = UnityFileSystem.MountArchive(filename.FullName, "/"); + + int total = archive.Nodes.Count; + int extracted = 0; + foreach (var node in archive.Nodes) { + if (filter != null && !node.Path.Contains(filter, StringComparison.OrdinalIgnoreCase)) + continue; + Console.WriteLine($"... Extracting {node.Path}"); CopyFile("/" + node.Path, Path.Combine(outputFolder.FullName, node.Path)); + extracted++; } + + Console.WriteLine($"Extracted {extracted} out of {total} files."); } static void ListAssetBundle(FileInfo filename, OutputFormat format) diff --git a/UnityDataTool/Program.cs b/UnityDataTool/Program.cs index da89677..90d4bb1 100644 --- a/UnityDataTool/Program.cs +++ b/UnityDataTool/Program.cs @@ -120,15 +120,18 @@ public static async Task Main(string[] args) var pathArg = new Argument("filename", "The path of the archive file").ExistingOnly(); var oOpt = new Option(aliases: new[] { "--output-path", "-o" }, description: "Output directory of the extracted archive", getDefaultValue: () => new DirectoryInfo("archive")); + var filterOpt = new Option(aliases: new[] { "--filter" }, description: "Case-insensitive substring filter on file paths inside the archive"); + var extractArchiveCommand = new Command("extract", "Extract an AssetBundle or .data file.") { pathArg, oOpt, + filterOpt, }; extractArchiveCommand.SetHandler( - (FileInfo fi, DirectoryInfo o) => Task.FromResult(Archive.HandleExtract(fi, o)), - pathArg, oOpt); + (FileInfo fi, DirectoryInfo o, string filter) => Task.FromResult(Archive.HandleExtract(fi, o, filter)), + pathArg, oOpt, filterOpt); var fOpt = new Option(aliases: new[] { "--format", "-f" }, description: "Output format", getDefaultValue: () => OutputFormat.Text); diff --git a/UnityDataTool/WebBundleHelper.cs b/UnityDataTool/WebBundleHelper.cs index 279adff..a8f7910 100644 --- a/UnityDataTool/WebBundleHelper.cs +++ b/UnityDataTool/WebBundleHelper.cs @@ -21,17 +21,33 @@ public static bool IsWebBundle(string path) ); } - public static void Extract(FileInfo filename, DirectoryInfo outputFolder) + public static void Extract(FileInfo filename, DirectoryInfo outputFolder, string filter = null) { Console.WriteLine($"Extracting web bundle: {filename}"); using var fileStream = File.Open(filename.ToString(), FileMode.Open); using var stream = GetStream(filename, fileStream); using var reader = new BinaryReader(stream, Encoding.UTF8); var fileDescriptions = ParseWebBundleHeader(reader); + + int total = fileDescriptions.Count; + int extracted = 0; + foreach (var description in fileDescriptions) { - ExtractFile(description, reader, outputFolder); + // Always read the bytes to advance the stream position. + var data = ReadBytes(reader, (int)description.Size); + + if (filter != null && !description.Path.Contains(filter, StringComparison.OrdinalIgnoreCase)) + continue; + + Console.WriteLine($"... Extracting {description.Path}"); + var path = Path.Combine(outputFolder.ToString(), description.Path); + Directory.CreateDirectory(Path.GetDirectoryName(path)); + File.WriteAllBytes(path, data); + extracted++; } + + Console.WriteLine($"Extracted {extracted} out of {total} files."); } public static void List(FileInfo filename, OutputFormat format) From 55e172664d0eff5a25d9727509c5a7647e4bf824 Mon Sep 17 00:00:00 2001 From: Andrew Skowronski Date: Thu, 2 Apr 2026 17:18:22 -0400 Subject: [PATCH 08/11] Archive Info command Summarize the key metrics about the archive Add an example compressed player file (used to test info and useful for manual testing) --- Documentation/command-archive.md | 25 +++++ .../Data/PlayerDataCompressed/README.md | 5 + .../Data/PlayerDataCompressed/data.unity3d | Bin 0 -> 459654 bytes UnityDataTool.Tests/ArchiveTests.cs | 62 ++++++++++++ UnityDataTool/Archive.cs | 89 ++++++++++++++++++ UnityDataTool/Program.cs | 11 +++ 6 files changed, 192 insertions(+) create mode 100644 TestCommon/Data/PlayerDataCompressed/README.md create mode 100644 TestCommon/Data/PlayerDataCompressed/data.unity3d diff --git a/Documentation/command-archive.md b/Documentation/command-archive.md index f313683..e4cd05c 100644 --- a/Documentation/command-archive.md +++ b/Documentation/command-archive.md @@ -6,6 +6,7 @@ The `archive` command provides utilities for working with Unity Archives (AssetB | Sub-Command | Description | |-------------|-------------| +| [`info`](#info) | Display a high-level summary | | [`header`](#header) | Display archive header information | | [`blocks`](#blocks) | Display the data block list | | [`list`](#list) | List contents of an archive | @@ -13,6 +14,30 @@ The `archive` command provides utilities for working with Unity Archives (AssetB --- +## info + +Displays a high-level summary of a Unity Archive file, including compression ratio, file counts, and data sizes. + +### Quick Reference + +``` +UnityDataTool archive info [options] +``` + +| Option | Description | Default | +|--------|-------------|---------| +| `` | Path to the archive file | *(required)* | +| `-f, --format ` | Output format | `Text` | + +### Example + +```bash +UnityDataTool archive info scenes.bundle +UnityDataTool archive info scenes.bundle -f Json +``` + +--- + ## header Displays the header information of a Unity Archive file, including format version, Unity version, file size, metadata compression, and archive flags. diff --git a/TestCommon/Data/PlayerDataCompressed/README.md b/TestCommon/Data/PlayerDataCompressed/README.md new file mode 100644 index 0000000..56edb37 --- /dev/null +++ b/TestCommon/Data/PlayerDataCompressed/README.md @@ -0,0 +1,5 @@ +This is an example of the format used for Player Data when compression is enabled. + +It is a Unity Archive and can be examined with the "archive" command. It as created with Unity 2021.3.20f1. +This was built without TypeTrees enabled, so the analyze command is not able to extract information. + diff --git a/TestCommon/Data/PlayerDataCompressed/data.unity3d b/TestCommon/Data/PlayerDataCompressed/data.unity3d new file mode 100644 index 0000000000000000000000000000000000000000..304ba8c6b999ff9fb40ab334badf5726dae7d9fd GIT binary patch literal 459654 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̠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 + /// Offset of this block from the start of the archive file. + /// Calculated after parsing — not stored in the serialized data. + /// + public long FileOffset { get; set; } + + /// + /// Offset of this block's uncompressed data relative to the start of the + /// full uncompressed data (all blocks concatenated). + /// Calculated after parsing — not stored in the serialized data. + /// + public long DataOffset { get; set; } } public class ArchiveBlocksInfo @@ -63,8 +76,11 @@ public class ArchiveBlocksInfo public class ArchiveDirectoryNode { - public ulong Offset { get; set; } // Offset within the virtual data section (e.g. all the blocks uncompressed and concatenated together - public ulong Size { get; set; } // Size of the file in bytse + /// + /// Offset within the uncompressed data (all blocks concatenated). + /// + public ulong DataOffset { get; set; } + public ulong Size { get; set; } public uint Flags { get; set; } public string Path { get; set; } } @@ -142,6 +158,9 @@ public static bool IsUnityArchive(string filePath) /// Reads a null-terminated signature string, with a length limit to avoid reading /// deep into non-archive files that don't contain an early null byte. ///

8f%b!H$1(F83w_UJOMRLQ<(%d24!OgK<1)_j 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 L$00+ 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%0DLcVXBR1`KMC@Nrg#U)R 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 Q(G&_4W-eT*!AXezA0@_8^#A|> literal 0 HcmV?d00001 diff --git a/UnityDataTool.Tests/ArchiveTests.cs b/UnityDataTool.Tests/ArchiveTests.cs index 7064459..010ad38 100644 --- a/UnityDataTool.Tests/ArchiveTests.cs +++ b/UnityDataTool.Tests/ArchiveTests.cs @@ -236,6 +236,68 @@ public async Task ArchiveBlocks_JsonFormat() } } + [Test] + public async Task ArchiveInfo_TextFormat() + { + var infoPath = Path.Combine(m_TestDataFolder, "PlayerDataCompressed", "data.unity3d"); + using var sw = new StringWriter(); + var currentOut = Console.Out; + try + { + Console.SetOut(sw); + + Assert.AreEqual(0, await Program.Main(new string[] { "archive", "info", infoPath })); + + var output = sw.ToString(); + Assert.That(output, Does.Contain("2021.3.20f1")); + Assert.That(output, Does.Contain("459,654")); + Assert.That(output, Does.Contain("459,382")); + Assert.That(output, Does.Contain("963,117")); + Assert.That(output, Does.Contain("2.10x")); + Assert.That(output, Does.Contain("Lz4")); + Assert.That(output, Does.Contain("Block Count")); + Assert.That(output, Does.Contain("8")); + Assert.That(output, Does.Contain("File Count")); + Assert.That(output, Does.Contain("Serialized File Count")); + } + finally + { + Console.SetOut(currentOut); + } + } + + [Test] + public async Task ArchiveInfo_JsonFormat() + { + var infoPath = Path.Combine(m_TestDataFolder, "PlayerDataCompressed", "data.unity3d"); + using var sw = new StringWriter(); + var currentOut = Console.Out; + try + { + Console.SetOut(sw); + + Assert.AreEqual(0, await Program.Main(new string[] { "archive", "info", infoPath, "-f", "Json" })); + + var output = sw.ToString(); + var json = JsonDocument.Parse(output).RootElement; + Assert.AreEqual(JsonValueKind.Object, json.ValueKind); + + Assert.AreEqual("2021.3.20f1", json.GetProperty("unityVersion").GetString()); + Assert.AreEqual(459654u, json.GetProperty("fileSize").GetUInt64()); + Assert.AreEqual(459382, json.GetProperty("dataSize").GetInt64()); + Assert.AreEqual(963117, json.GetProperty("uncompressedDataSize").GetInt64()); + Assert.AreEqual(2.1, json.GetProperty("compressionRatio").GetDouble(), 0.01); + Assert.AreEqual("Lz4", json.GetProperty("compression").GetString()); + Assert.AreEqual(8, json.GetProperty("blockCount").GetInt32()); + Assert.AreEqual(5, json.GetProperty("fileCount").GetInt32()); + Assert.AreEqual(5, json.GetProperty("serializedFileCount").GetInt32()); + } + finally + { + Console.SetOut(currentOut); + } + } + [Test] public async Task ArchiveExtract_FilesExtractedSuccessfully() { diff --git a/UnityDataTool/Archive.cs b/UnityDataTool/Archive.cs index 4d60026..5243a84 100644 --- a/UnityDataTool/Archive.cs +++ b/UnityDataTool/Archive.cs @@ -124,6 +124,95 @@ public static int HandleBlocks(FileInfo filename, OutputFormat format) return 0; } + public static int HandleInfo(FileInfo filename, OutputFormat format) + { + var path = filename.ToString(); + + if (WebBundleHelper.IsWebBundle(path)) + { + Console.Error.WriteLine("Web bundle files (.data, .data.gz, .data.br) use a different format. The info command is only supported for Unity Archive files."); + return 1; + } + + if (!ArchiveDetector.TryReadArchiveHeader(filename.FullName, out var header, out var errorMessage)) + { + Console.Error.WriteLine(errorMessage); + return 1; + } + + if (!ArchiveDetector.TryReadArchiveMetadata(filename.FullName, header, out var metadata, out errorMessage)) + { + Console.Error.WriteLine(errorMessage); + return 1; + } + + var blocks = metadata.BlocksInfo.Blocks; + var nodes = metadata.DirectoryInfo.Nodes; + + long dataSize = 0; + long uncompressedDataSize = 0; + foreach (var block in blocks) + { + dataSize += block.CompressedSize; + uncompressedDataSize += block.UncompressedSize; + } + + // Determine the compression algorithm by finding the first block that uses compression. + // Individual blocks may be stored uncompressed even when compression is enabled, because + // compression is skipped when it provides no size reduction. So the first compressed block + // tells us what algorithm was used for the archive. + string compression = "Uncompressed"; + foreach (var block in blocks) + { + if (block.CompressionType != 0) + { + compression = FormatCompressionType(block.CompressionType); + break; + } + } + + double compressionRatio = dataSize > 0 ? (double)uncompressedDataSize / dataSize : 0; + int fileCount = nodes.Length; + int serializedFileCount = 0; + foreach (var node in nodes) + { + if ((node.Flags & 0x04) != 0) + serializedFileCount++; + } + + if (format == OutputFormat.Json) + { + var jsonObject = new + { + unityVersion = header.UnityVersion, + fileSize = header.Size, + dataSize = dataSize, + uncompressedDataSize = uncompressedDataSize, + compressionRatio = Math.Round(compressionRatio, 2), + compression = compression, + blockCount = blocks.Length, + fileCount = fileCount, + serializedFileCount = serializedFileCount, + }; + var json = JsonSerializer.Serialize(jsonObject, new JsonSerializerOptions { WriteIndented = true }); + Console.WriteLine(json); + } + else + { + Console.WriteLine($"{"Unity Version",-30} {header.UnityVersion}"); + Console.WriteLine($"{"File Size",-30} {header.Size:N0} bytes"); + Console.WriteLine($"{"Data Size",-30} {dataSize:N0} bytes"); + Console.WriteLine($"{"Uncompressed Data Size",-30} {uncompressedDataSize:N0} bytes"); + Console.WriteLine($"{"Compression Ratio",-30} {compressionRatio:F2}x"); + Console.WriteLine($"{"Compression",-30} {compression}"); + Console.WriteLine($"{"Block Count",-30} {blocks.Length}"); + Console.WriteLine($"{"File Count",-30} {fileCount}"); + Console.WriteLine($"{"Serialized File Count",-30} {serializedFileCount}"); + } + + return 0; + } + static void OutputHeaderText(ArchiveHeaderInfo info) { Console.WriteLine($"{"Signature",-30} {info.Signature}"); diff --git a/UnityDataTool/Program.cs b/UnityDataTool/Program.cs index 90d4bb1..16b3e0e 100644 --- a/UnityDataTool/Program.cs +++ b/UnityDataTool/Program.cs @@ -165,12 +165,23 @@ public static async Task Main(string[] args) (FileInfo fi, OutputFormat f) => Task.FromResult(Archive.HandleBlocks(fi, f)), pathArg, fOpt); + var infoArchiveCommand = new Command("info", "Display a high-level summary of a Unity Archive file.") + { + pathArg, + fOpt, + }; + + infoArchiveCommand.SetHandler( + (FileInfo fi, OutputFormat f) => Task.FromResult(Archive.HandleInfo(fi, f)), + pathArg, fOpt); + var archiveCommand = new Command("archive", "Inspect or extract the contents of a Unity archive (AssetBundle or web platform .data file).") { extractArchiveCommand, listArchiveCommand, headerArchiveCommand, blocksArchiveCommand, + infoArchiveCommand, }; rootCommand.AddCommand(archiveCommand); From 4d97a187033c886b0e73c582b4e75ff3d2934d8e Mon Sep 17 00:00:00 2001 From: Andrew Skowronski Date: Wed, 8 Apr 2026 17:52:47 -0400 Subject: [PATCH 09/11] Improve offset reporting for Blocks and Directory contents --- UnityBinaryFormat/ArchiveDetector.cs | 36 +++++++++++++++++-- UnityDataTool.Tests/ArchiveTests.cs | 18 +++++----- .../2019.4.0f1/ExpectedValues.json | 6 ++-- .../2020.3.0f1/ExpectedValues.json | 6 ++-- .../2021.3.0f1/ExpectedValues.json | 6 ++-- .../2022.1.20f1/ExpectedValues.json | 6 ++-- .../2023.1.0a16/ExpectedValues.json | 6 ++-- .../UnityDataToolAssetBundleTests.cs | 6 ++-- UnityDataTool/Archive.cs | 25 +++++-------- 9 files changed, 70 insertions(+), 45 deletions(-) diff --git a/UnityBinaryFormat/ArchiveDetector.cs b/UnityBinaryFormat/ArchiveDetector.cs index 54614a6..f3d66e7 100644 --- a/UnityBinaryFormat/ArchiveDetector.cs +++ b/UnityBinaryFormat/ArchiveDetector.cs @@ -53,6 +53,19 @@ public class ArchiveStorageBlock public ushort Flags { get; set; } public int CompressionType => Flags & 0x3F; public bool IsStreamed => (Flags & 0x40) != 0; + + ///

+ /// Note: this is used for a very similar purpose to IsUnityArchive(). But IsUnityArchive() is + /// optimized to quickly check a file whereas this one is used when we are actually parsing + /// the file. The two could potentially be merged. static string ReadSignature(BinaryReader reader) { const int maxLength = 20; // Longest valid signature is "UnityArchive" (12 chars) @@ -306,6 +325,17 @@ public static bool TryReadArchiveMetadata(string filePath, ArchiveHeaderInfo hea var blocksInfo = ParseBlocksInfo(reader); var directoryInfo = ParseDirectoryInfo(reader); + // Populate calculated offsets on each block. + long fileOffset = GetDataOffset(header); + long dataOffset = 0; + foreach (var block in blocksInfo.Blocks) + { + block.FileOffset = fileOffset; + block.DataOffset = dataOffset; + fileOffset += block.CompressedSize; + dataOffset += block.UncompressedSize; + } + metadata = new ArchiveMetadata { BlocksInfo = blocksInfo, @@ -404,7 +434,7 @@ static ArchiveDirectoryInfo ParseDirectoryInfo(BinaryReader reader) { nodes[i] = new ArchiveDirectoryNode { - Offset = BinaryFileHelper.ReadUInt64(reader, true), + DataOffset = BinaryFileHelper.ReadUInt64(reader, true), Size = BinaryFileHelper.ReadUInt64(reader, true), Flags = BinaryFileHelper.ReadUInt32(reader, true), Path = BinaryFileHelper.ReadNullTermString(reader), diff --git a/UnityDataTool.Tests/ArchiveTests.cs b/UnityDataTool.Tests/ArchiveTests.cs index 010ad38..823167c 100644 --- a/UnityDataTool.Tests/ArchiveTests.cs +++ b/UnityDataTool.Tests/ArchiveTests.cs @@ -54,22 +54,22 @@ public async Task ArchiveList_TextFormat() var expectedOutput = @"BuildPlayer-SampleScene.sharedAssets - Offset: 0 + Data Offset: 0 Size: 90732 Flags: SerializedFile BuildPlayer-SampleScene - Offset: 90732 + Data Offset: 90732 Size: 153352 Flags: SerializedFile BuildPlayer-OtherScene.sharedAssets - Offset: 244084 + Data Offset: 244084 Size: 136744 Flags: SerializedFile BuildPlayer-OtherScene - Offset: 380828 + Data Offset: 380828 Size: 158340 Flags: SerializedFile @@ -102,14 +102,14 @@ public async Task ArchiveList_JsonFormat() foreach (var element in jsonArray.EnumerateArray()) { Assert.IsTrue(element.TryGetProperty("path", out _)); - Assert.IsTrue(element.TryGetProperty("offset", out _)); + Assert.IsTrue(element.TryGetProperty("dataOffset", out _)); Assert.IsTrue(element.TryGetProperty("size", out _)); Assert.IsTrue(element.TryGetProperty("flags", out _)); Assert.AreEqual("SerializedFile", element.GetProperty("flags").GetString()); } Assert.AreEqual("BuildPlayer-SampleScene.sharedAssets", jsonArray[0].GetProperty("path").GetString()); - Assert.AreEqual(0, jsonArray[0].GetProperty("offset").GetUInt64()); + Assert.AreEqual(0, jsonArray[0].GetProperty("dataOffset").GetUInt64()); Assert.AreEqual(90732, jsonArray[0].GetProperty("size").GetInt64()); } finally @@ -192,7 +192,8 @@ public async Task ArchiveBlocks_TextFormat() var output = sw.ToString(); Assert.That(output, Does.Contain("Blocks: 1")); Assert.That(output, Does.Contain("#0")); - Assert.That(output, Does.Contain("Offset: 192")); + Assert.That(output, Does.Contain("FileOffset: 192")); + Assert.That(output, Does.Contain("DataOffset: 0")); Assert.That(output, Does.Contain("Uncompressed: 539,168")); Assert.That(output, Does.Contain("Compressed: 92,883")); Assert.That(output, Does.Contain("Compression: Lzma")); @@ -224,7 +225,8 @@ public async Task ArchiveBlocks_JsonFormat() var block = blocks[0]; Assert.AreEqual(0, block.GetProperty("index").GetInt32()); - Assert.AreEqual(192, block.GetProperty("offset").GetInt64()); + Assert.AreEqual(192, block.GetProperty("fileOffset").GetInt64()); + Assert.AreEqual(0, block.GetProperty("dataOffset").GetInt64()); Assert.AreEqual(539168u, block.GetProperty("uncompressedSize").GetUInt32()); Assert.AreEqual(92883u, block.GetProperty("compressedSize").GetUInt32()); Assert.AreEqual("Lzma", block.GetProperty("compression").GetString()); diff --git a/UnityDataTool.Tests/ExpectedData/2019.4.0f1/ExpectedValues.json b/UnityDataTool.Tests/ExpectedData/2019.4.0f1/ExpectedValues.json index b947cb1..6bac39b 100644 --- a/UnityDataTool.Tests/ExpectedData/2019.4.0f1/ExpectedValues.json +++ b/UnityDataTool.Tests/ExpectedData/2019.4.0f1/ExpectedValues.json @@ -1,13 +1,13 @@ { "$type": "System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib],[System.Object, System.Private.CoreLib]], System.Private.CoreLib", "NodeCount": 3, - "CAB-5d40f7cad7c871cf2ad2af19ac542994-Offset": 0, + "CAB-5d40f7cad7c871cf2ad2af19ac542994-DataOffset": 0, "CAB-5d40f7cad7c871cf2ad2af19ac542994-Size": 1639323, "CAB-5d40f7cad7c871cf2ad2af19ac542994-Flags": 4, - "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Offset": 1639323, + "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-DataOffset": 1639323, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Size": 2833848, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Flags": 0, - "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Offset": 4473171, + "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-DataOffset": 4473171, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Size": 5248, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Flags": 0, "animation_clips_count": 2, diff --git a/UnityDataTool.Tests/ExpectedData/2020.3.0f1/ExpectedValues.json b/UnityDataTool.Tests/ExpectedData/2020.3.0f1/ExpectedValues.json index 3b7c3e0..1d9f660 100644 --- a/UnityDataTool.Tests/ExpectedData/2020.3.0f1/ExpectedValues.json +++ b/UnityDataTool.Tests/ExpectedData/2020.3.0f1/ExpectedValues.json @@ -1,13 +1,13 @@ { "$type": "System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib],[System.Object, System.Private.CoreLib]], System.Private.CoreLib", "NodeCount": 3, - "CAB-5d40f7cad7c871cf2ad2af19ac542994-Offset": 0, + "CAB-5d40f7cad7c871cf2ad2af19ac542994-DataOffset": 0, "CAB-5d40f7cad7c871cf2ad2af19ac542994-Size": 1074083, "CAB-5d40f7cad7c871cf2ad2af19ac542994-Flags": 4, - "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Offset": 1074083, + "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-DataOffset": 1074083, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Size": 2833848, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Flags": 0, - "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Offset": 3907931, + "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-DataOffset": 3907931, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Size": 5248, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Flags": 0, "animation_clips_count": 2, diff --git a/UnityDataTool.Tests/ExpectedData/2021.3.0f1/ExpectedValues.json b/UnityDataTool.Tests/ExpectedData/2021.3.0f1/ExpectedValues.json index 4407084..6407195 100644 --- a/UnityDataTool.Tests/ExpectedData/2021.3.0f1/ExpectedValues.json +++ b/UnityDataTool.Tests/ExpectedData/2021.3.0f1/ExpectedValues.json @@ -1,13 +1,13 @@ { "$type": "System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib],[System.Object, System.Private.CoreLib]], System.Private.CoreLib", "NodeCount": 3, - "CAB-5d40f7cad7c871cf2ad2af19ac542994-Offset": 0, + "CAB-5d40f7cad7c871cf2ad2af19ac542994-DataOffset": 0, "CAB-5d40f7cad7c871cf2ad2af19ac542994-Size": 956211, "CAB-5d40f7cad7c871cf2ad2af19ac542994-Flags": 4, - "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Offset": 956211, + "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-DataOffset": 956211, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Size": 2833848, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Flags": 0, - "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Offset": 3790059, + "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-DataOffset": 3790059, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Size": 5248, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Flags": 0, "animation_clips_count": 2, diff --git a/UnityDataTool.Tests/ExpectedData/2022.1.20f1/ExpectedValues.json b/UnityDataTool.Tests/ExpectedData/2022.1.20f1/ExpectedValues.json index 3f014a9..9c873eb 100644 --- a/UnityDataTool.Tests/ExpectedData/2022.1.20f1/ExpectedValues.json +++ b/UnityDataTool.Tests/ExpectedData/2022.1.20f1/ExpectedValues.json @@ -1,13 +1,13 @@ { "$type": "System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib],[System.Object, System.Private.CoreLib]], System.Private.CoreLib", "NodeCount": 3, - "CAB-5d40f7cad7c871cf2ad2af19ac542994-Offset": 0, + "CAB-5d40f7cad7c871cf2ad2af19ac542994-DataOffset": 0, "CAB-5d40f7cad7c871cf2ad2af19ac542994-Size": 960179, "CAB-5d40f7cad7c871cf2ad2af19ac542994-Flags": 4, - "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Offset": 960179, + "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-DataOffset": 960179, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Size": 2833056, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Flags": 0, - "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Offset": 3793235, + "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-DataOffset": 3793235, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Size": 5248, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Flags": 0, "animation_clips_count": 2, diff --git a/UnityDataTool.Tests/ExpectedData/2023.1.0a16/ExpectedValues.json b/UnityDataTool.Tests/ExpectedData/2023.1.0a16/ExpectedValues.json index 7d6f9aa..506fe8c 100644 --- a/UnityDataTool.Tests/ExpectedData/2023.1.0a16/ExpectedValues.json +++ b/UnityDataTool.Tests/ExpectedData/2023.1.0a16/ExpectedValues.json @@ -1,13 +1,13 @@ { "$type": "System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib],[System.Object, System.Private.CoreLib]], System.Private.CoreLib", "NodeCount": 3, - "CAB-5d40f7cad7c871cf2ad2af19ac542994-Offset": 0, + "CAB-5d40f7cad7c871cf2ad2af19ac542994-DataOffset": 0, "CAB-5d40f7cad7c871cf2ad2af19ac542994-Size": 942315, "CAB-5d40f7cad7c871cf2ad2af19ac542994-Flags": 4, - "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Offset": 942315, + "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-DataOffset": 942315, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Size": 2833872, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Flags": 0, - "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Offset": 3776187, + "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-DataOffset": 3776187, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Size": 5248, "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Flags": 0, "animation_clips_count": 2, diff --git a/UnityDataTool.Tests/UnityDataToolAssetBundleTests.cs b/UnityDataTool.Tests/UnityDataToolAssetBundleTests.cs index d2a0da4..7eaf657 100644 --- a/UnityDataTool.Tests/UnityDataToolAssetBundleTests.cs +++ b/UnityDataTool.Tests/UnityDataToolAssetBundleTests.cs @@ -87,17 +87,17 @@ public async Task ArchiveList_AssetBundle_ListFilesCorrectly() // Each entry: path, offset, size, flags, blank = 5 lines Assert.AreEqual("CAB-5d40f7cad7c871cf2ad2af19ac542994", lines[0]); - Assert.AreEqual($" Offset: {Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994-Offset")}", lines[1]); + Assert.AreEqual($" Data Offset: {Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994-DataOffset")}", lines[1]); Assert.AreEqual($" Size: {Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994-Size")}", lines[2]); Assert.AreEqual($" Flags: {(ArchiveNodeFlags)(long)Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994-Flags")}", lines[3]); Assert.AreEqual("CAB-5d40f7cad7c871cf2ad2af19ac542994.resS", lines[5]); - Assert.AreEqual($" Offset: {Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Offset")}", lines[6]); + Assert.AreEqual($" Data Offset: {Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-DataOffset")}", lines[6]); Assert.AreEqual($" Size: {Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Size")}", lines[7]); Assert.AreEqual($" Flags: {(ArchiveNodeFlags)(long)Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994.resS-Flags")}", lines[8]); Assert.AreEqual("CAB-5d40f7cad7c871cf2ad2af19ac542994.resource", lines[10]); - Assert.AreEqual($" Offset: {Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Offset")}", lines[11]); + Assert.AreEqual($" Data Offset: {Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-DataOffset")}", lines[11]); Assert.AreEqual($" Size: {Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Size")}", lines[12]); Assert.AreEqual($" Flags: {(ArchiveNodeFlags)(long)Context.ExpectedData.Get("CAB-5d40f7cad7c871cf2ad2af19ac542994.resource-Flags")}", lines[13]); diff --git a/UnityDataTool/Archive.cs b/UnityDataTool/Archive.cs index 5243a84..dc814be 100644 --- a/UnityDataTool/Archive.cs +++ b/UnityDataTool/Archive.cs @@ -117,9 +117,9 @@ public static int HandleBlocks(FileInfo filename, OutputFormat format) } if (format == OutputFormat.Json) - OutputBlocksJson(header, metadata.BlocksInfo); + OutputBlocksJson(metadata.BlocksInfo); else - OutputBlocksText(header, metadata.BlocksInfo); + OutputBlocksText(metadata.BlocksInfo); return 0; } @@ -290,25 +290,18 @@ static string FormatArchiveFlags(uint flagBits) return names.Length > 0 ? string.Join(", ", names) : "None"; } - static void OutputBlocksText(ArchiveHeaderInfo header, ArchiveBlocksInfo blocksInfo) + static void OutputBlocksText(ArchiveBlocksInfo blocksInfo) { - long dataOffset = ArchiveDetector.GetDataOffset(header); - long blockOffset = dataOffset; - Console.WriteLine($"Blocks: {blocksInfo.Blocks.Length}"); for (int i = 0; i < blocksInfo.Blocks.Length; i++) { var block = blocksInfo.Blocks[i]; - Console.WriteLine($" #{i,-4} Offset: {blockOffset:N0} Uncompressed: {block.UncompressedSize:N0} Compressed: {block.CompressedSize:N0} Compression: {FormatCompressionType(block.CompressionType)}"); - blockOffset += block.CompressedSize; + Console.WriteLine($" #{i,-4} FileOffset: {block.FileOffset:N0} DataOffset: {block.DataOffset:N0} Uncompressed: {block.UncompressedSize:N0} Compressed: {block.CompressedSize:N0} Compression: {FormatCompressionType(block.CompressionType)}"); } } - static void OutputBlocksJson(ArchiveHeaderInfo header, ArchiveBlocksInfo blocksInfo) + static void OutputBlocksJson(ArchiveBlocksInfo blocksInfo) { - long dataOffset = ArchiveDetector.GetDataOffset(header); - long blockOffset = dataOffset; - var jsonBlocks = new object[blocksInfo.Blocks.Length]; for (int i = 0; i < blocksInfo.Blocks.Length; i++) { @@ -316,13 +309,13 @@ static void OutputBlocksJson(ArchiveHeaderInfo header, ArchiveBlocksInfo blocksI jsonBlocks[i] = new { index = i, - offset = blockOffset, + fileOffset = block.FileOffset, + dataOffset = block.DataOffset, uncompressedSize = block.UncompressedSize, compressedSize = block.CompressedSize, compression = FormatCompressionType(block.CompressionType), isStreamed = block.IsStreamed, }; - blockOffset += block.CompressedSize; } var jsonObject = new { blocks = jsonBlocks }; @@ -394,7 +387,7 @@ static void ListAssetBundle(FileInfo filename, OutputFormat format) for (int i = 0; i < nodes.Length; i++) { var node = nodes[i]; - jsonArray[i] = new { path = node.Path, offset = node.Offset, size = node.Size, flags = FormatNodeFlags(node.Flags) }; + jsonArray[i] = new { path = node.Path, dataOffset = node.DataOffset, size = node.Size, flags = FormatNodeFlags(node.Flags) }; } var json = JsonSerializer.Serialize(jsonArray, new JsonSerializerOptions { WriteIndented = true }); Console.WriteLine(json); @@ -404,7 +397,7 @@ static void ListAssetBundle(FileInfo filename, OutputFormat format) foreach (var node in nodes) { Console.WriteLine($"{node.Path}"); - Console.WriteLine($" Offset: {node.Offset}"); + Console.WriteLine($" Data Offset: {node.DataOffset}"); Console.WriteLine($" Size: {node.Size}"); Console.WriteLine($" Flags: {FormatNodeFlags(node.Flags)}"); Console.WriteLine(); From 35bf4d220f23de56e5075bc4fd91b8af38b86a08 Mon Sep 17 00:00:00 2001 From: Andrew Skowronski Date: Wed, 8 Apr 2026 18:27:19 -0400 Subject: [PATCH 10/11] Comments and add sanity check Add sanity check that the spans make sense in the Blocks and Directory data Add some more comments with some details of the format --- UnityBinaryFormat/ArchiveDetector.cs | 55 ++++++++++++++++++++++++++++ UnityDataTool/Archive.cs | 4 +- 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/UnityBinaryFormat/ArchiveDetector.cs b/UnityBinaryFormat/ArchiveDetector.cs index f3d66e7..9deb80f 100644 --- a/UnityBinaryFormat/ArchiveDetector.cs +++ b/UnityBinaryFormat/ArchiveDetector.cs @@ -15,6 +15,9 @@ namespace UnityDataTools.BinaryFormat; /// its on-disk vs uncompressed size. /// - Data: One or more blocks of file content. Each block has its own compression type /// recorded in its per-block flags. The metadata section is required to interpret the data. +/// A single file can span multiple blocks, and a single block can contain data for multiple files. +/// The blocks account for every byte of the data (there are no offsets stored - no overlapping or +/// gaps can be expressed). However the files could have padding between them. /// /// The metadata can appear directly after the header (default layout) or at the end of the /// file after the data (indicated by the BlocksInfoAtTheEnd flag). @@ -71,6 +74,9 @@ public class ArchiveStorageBlock public class ArchiveBlocksInfo { public byte[] UncompressedDataHash { get; set; } // Unused + + // Archives with no compression or LZMA will have a single block, + // except when the data exceeds 4GB (because the size fields in ArchiveStorageBlock are 32-bit). public ArchiveStorageBlock[] Blocks { get; set; } } @@ -82,6 +88,12 @@ public class ArchiveDirectoryNode public ulong DataOffset { get; set; } public ulong Size { get; set; } public uint Flags { get; set; } + + /// + /// Path of the file within the archive, using '/' as a separator. + /// Although Flags has a Directory flag, in practice nodes are only created for files, + /// and directories are implied by the paths. + /// public string Path { get; set; } } @@ -336,6 +348,8 @@ public static bool TryReadArchiveMetadata(string filePath, ArchiveHeaderInfo hea dataOffset += block.UncompressedSize; } + ValidateMetadata(blocksInfo, directoryInfo); + metadata = new ArchiveMetadata { BlocksInfo = blocksInfo, @@ -373,6 +387,47 @@ public static long GetDataOffset(ArchiveHeaderInfo header) return offset; } + /// + /// Validates consistency between BlocksInfo and DirectoryInfo. + /// + /// Directory nodes represent files laid out sequentially in the uncompressed data + /// (all blocks concatenated). Nodes must be in non-decreasing offset order and must + /// not overlap, though padding between them is permitted. Every file byte must be + /// covered by block data — the total uncompressed block size must reach at least + /// the end of the last file. + /// + static void ValidateMetadata(ArchiveBlocksInfo blocksInfo, ArchiveDirectoryInfo directoryInfo) + { + var nodes = directoryInfo.Nodes; + var blocks = blocksInfo.Blocks; + + if (nodes.Length == 0 || blocks.Length == 0) + return; + + // Verify directory nodes are in order and non-overlapping. + for (int i = 1; i < nodes.Length; i++) + { + ulong prevEnd = nodes[i - 1].DataOffset + nodes[i - 1].Size; + if (nodes[i].DataOffset < prevEnd) + throw new InvalidDataException( + $"Directory node \"{nodes[i].Path}\" at data offset {nodes[i].DataOffset} overlaps with " + + $"previous node \"{nodes[i - 1].Path}\" which ends at {prevEnd}. The file may be corrupt."); + } + + // Verify that the blocks cover all file data. The last block's end must reach + // at least the end of the last file. (It may exceed it due to padding.) + var lastBlock = blocks[blocks.Length - 1]; + long blocksEnd = lastBlock.DataOffset + lastBlock.UncompressedSize; + + var lastNode = nodes[nodes.Length - 1]; + ulong filesEnd = lastNode.DataOffset + lastNode.Size; + + if ((ulong)blocksEnd < filesEnd) + throw new InvalidDataException( + $"Block data ends at offset {blocksEnd} but directory entries extend to {filesEnd}. " + + $"The file may be corrupt."); + } + static int GetHeaderSize(ArchiveHeaderInfo header) { const uint flagOldWebPluginCompatibility = 0x100; diff --git a/UnityDataTool/Archive.cs b/UnityDataTool/Archive.cs index dc814be..b997379 100644 --- a/UnityDataTool/Archive.cs +++ b/UnityDataTool/Archive.cs @@ -325,8 +325,8 @@ static void OutputBlocksJson(ArchiveBlocksInfo blocksInfo) static readonly (uint bit, string name)[] KnownNodeFlags = { - (0x01, "Directory"), - (0x02, "Deleted"), + (0x01, "Directory"), // In practice this is not used + (0x02, "Deleted"), // In practice this is not used (0x04, "SerializedFile"), }; From 50ab5209624d17f8e3a6cecd1e4cd362bd79af19 Mon Sep 17 00:00:00 2001 From: Andrew Skowronski Date: Wed, 8 Apr 2026 18:55:47 -0400 Subject: [PATCH 11/11] Claude fixes based on CoPilot review --- .../Data/PlayerDataCompressed/README.md | 2 +- UnityDataTool.Tests/ArchiveTests.cs | 30 +++++++++++++++++++ UnityDataTool/UnityDataTool.csproj | 2 +- UnityDataTool/WebBundleHelper.cs | 11 +------ 4 files changed, 33 insertions(+), 12 deletions(-) diff --git a/TestCommon/Data/PlayerDataCompressed/README.md b/TestCommon/Data/PlayerDataCompressed/README.md index 56edb37..ebc00d0 100644 --- a/TestCommon/Data/PlayerDataCompressed/README.md +++ b/TestCommon/Data/PlayerDataCompressed/README.md @@ -1,5 +1,5 @@ This is an example of the format used for Player Data when compression is enabled. -It is a Unity Archive and can be examined with the "archive" command. It as created with Unity 2021.3.20f1. +It is a Unity Archive and can be examined with the "archive" command. It was created with Unity 2021.3.20f1. This was built without TypeTrees enabled, so the analyze command is not able to extract information. diff --git a/UnityDataTool.Tests/ArchiveTests.cs b/UnityDataTool.Tests/ArchiveTests.cs index 823167c..91a9142 100644 --- a/UnityDataTool.Tests/ArchiveTests.cs +++ b/UnityDataTool.Tests/ArchiveTests.cs @@ -322,4 +322,34 @@ public async Task ArchiveExtract_FilesExtractedSuccessfully() var extractedFile = new FileInfo(Path.Combine(m_TestOutputFolder, "archive", "BuildPlayer-SampleScene.sharedAssets")); Assert.AreEqual(90732, extractedFile.Length); } + + [Test] + public async Task ArchiveExtract_WithFilter_ExtractsOnlyMatchingFiles() + { + // "sampleSCENE" should match BuildPlayer-SampleScene.sharedAssets and BuildPlayer-SampleScene + // (case-insensitive) but not the OtherScene files. + Assert.AreEqual(0, await Program.Main(new string[] { "archive", "extract", m_ArchivePath, "--filter", "sampleSCENE" })); + + string[] expectedFiles = + { + "BuildPlayer-SampleScene.sharedAssets", + "BuildPlayer-SampleScene", + }; + + string[] excludedFiles = + { + "BuildPlayer-OtherScene.sharedAssets", + "BuildPlayer-OtherScene", + }; + + foreach (var file in expectedFiles) + { + Assert.IsTrue(File.Exists(Path.Combine(m_TestOutputFolder, "archive", file)), $"Expected file not found: {file}"); + } + + foreach (var file in excludedFiles) + { + Assert.IsFalse(File.Exists(Path.Combine(m_TestOutputFolder, "archive", file)), $"File should not have been extracted: {file}"); + } + } } diff --git a/UnityDataTool/UnityDataTool.csproj b/UnityDataTool/UnityDataTool.csproj index a0eb739..227b923 100644 --- a/UnityDataTool/UnityDataTool.csproj +++ b/UnityDataTool/UnityDataTool.csproj @@ -4,7 +4,7 @@ Exe net9.0 latest - 1.3.2 + 1.3.4 1.3.4.0 1.3.4.0 1.3.4 diff --git a/UnityDataTool/WebBundleHelper.cs b/UnityDataTool/WebBundleHelper.cs index a8f7910..4403b30 100644 --- a/UnityDataTool/WebBundleHelper.cs +++ b/UnityDataTool/WebBundleHelper.cs @@ -122,20 +122,11 @@ static List ParseWebBundleHeader(BinaryReader reader) Path = filePath, }); // Advance byte offset, so we keep track of the position (to know when we're done reading the header). - currentByteOffset += 3 * sizeof(uint) + filePath.Length; + currentByteOffset += 3 * sizeof(uint) + (int)filePathLength; } return result; } - static void ExtractFile(FileDescription description, BinaryReader reader, DirectoryInfo outputFolder) - { - // This function assumes `reader` is at the start of the binary data representing the file contents. - Console.WriteLine($"... Extracting {description.Path}"); - var path = Path.Combine(outputFolder.ToString(), description.Path); - Directory.CreateDirectory(Path.GetDirectoryName(path)); - File.WriteAllBytes(path, ReadBytes(reader, (int)description.Size)); - } - static uint ReadUInt32(BinaryReader reader) { try