mirror of
https://github.com/SabreTools/BinaryObjectScanner.git
synced 2026-02-14 13:46:03 +00:00
Add TAR skeleton models, for kicks
This commit is contained in:
10
BurnOutSharp.Models/TAR/Archive.cs
Normal file
10
BurnOutSharp.Models/TAR/Archive.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
namespace BurnOutSharp.Models.TAR
|
||||
{
|
||||
public sealed class Archive
|
||||
{
|
||||
/// <summary>
|
||||
/// File header
|
||||
/// </summary>
|
||||
public Header Header { get; set; }
|
||||
}
|
||||
}
|
||||
157
BurnOutSharp.Models/TAR/Enums.cs
Normal file
157
BurnOutSharp.Models/TAR/Enums.cs
Normal file
@@ -0,0 +1,157 @@
|
||||
using System;
|
||||
|
||||
namespace BurnOutSharp.Models.TAR
|
||||
{
|
||||
[Flags]
|
||||
public enum Mode : ushort
|
||||
{
|
||||
/// <summary>
|
||||
/// Execute/search by other
|
||||
/// </summary>
|
||||
TOEXEC = 0x0001,
|
||||
|
||||
/// <summary>
|
||||
/// Write by other
|
||||
/// </summary>
|
||||
TOWRITE = 0x0002,
|
||||
|
||||
/// <summary>
|
||||
/// Read by other
|
||||
/// </summary>
|
||||
TOREAD = 0x0004,
|
||||
|
||||
/// <summary>
|
||||
/// Execute/search by group
|
||||
/// </summary>
|
||||
TGEXEC = 0x0008,
|
||||
|
||||
/// <summary>
|
||||
/// Write by group
|
||||
/// </summary>
|
||||
TGWRITE = 0x0010,
|
||||
|
||||
/// <summary>
|
||||
/// Read by group
|
||||
/// </summary>
|
||||
TGREAD = 0x0020,
|
||||
|
||||
/// <summary>
|
||||
/// Execute/search by owner
|
||||
/// </summary>
|
||||
TUEXEC = 0x0040,
|
||||
|
||||
/// <summary>
|
||||
/// Write by owner
|
||||
/// </summary>
|
||||
TUWRITE = 0x0080,
|
||||
|
||||
/// <summary>
|
||||
/// Read by owner
|
||||
/// </summary>
|
||||
TUREAD = 0x0100,
|
||||
|
||||
/// <summary>
|
||||
/// Reserved
|
||||
/// </summary>
|
||||
TSVTX = 0x0200,
|
||||
|
||||
/// <summary>
|
||||
/// Set GID on execution
|
||||
/// </summary>
|
||||
TSGID = 0x0400,
|
||||
|
||||
/// <summary>
|
||||
/// Set UID on execution
|
||||
/// </summary>
|
||||
TSUID = 0x0800,
|
||||
}
|
||||
|
||||
public enum TypeFlag : byte
|
||||
{
|
||||
/// <summary>
|
||||
/// Regular file
|
||||
/// </summary>
|
||||
REGTYPE = (byte)'0',
|
||||
|
||||
/// <summary>
|
||||
/// Regular file
|
||||
/// </summary>
|
||||
AREGTYPE = 0,
|
||||
|
||||
/// <summary>
|
||||
/// Hard link
|
||||
/// </summary>
|
||||
LNKTYPE = (byte)'1',
|
||||
|
||||
/// <summary>
|
||||
/// Symbolic link
|
||||
/// </summary>
|
||||
SYMTYPE = (byte)'2',
|
||||
|
||||
/// <summary>
|
||||
/// Character special
|
||||
/// </summary>
|
||||
CHRTYPE = (byte)'3',
|
||||
|
||||
/// <summary>
|
||||
/// Block special
|
||||
/// </summary>
|
||||
BLKTYPE = (byte)'4',
|
||||
|
||||
/// <summary>
|
||||
/// Directory
|
||||
/// </summary>
|
||||
DIRTYPE = (byte)'5',
|
||||
|
||||
/// <summary>
|
||||
/// FIFO
|
||||
/// </summary>
|
||||
FIFOTYPE = (byte)'6',
|
||||
|
||||
/// <summary>
|
||||
/// Contiguous file
|
||||
/// </summary>
|
||||
CONTTYPE = (byte)'7',
|
||||
|
||||
/// <summary>
|
||||
/// Global extended header with meta data (POSIX.1-2001)
|
||||
/// </summary>
|
||||
XHDTYPE = (byte)'g',
|
||||
|
||||
/// <summary>
|
||||
/// Extended header with metadata for the next file in the archive (POSIX.1-2001)
|
||||
/// </summary>
|
||||
XGLTYPE = (byte)'x',
|
||||
|
||||
#region Vendor-Specific Extensions (POSIX.1-1988)
|
||||
|
||||
VendorSpecificA = (byte)'A',
|
||||
VendorSpecificB = (byte)'B',
|
||||
VendorSpecificC = (byte)'C',
|
||||
VendorSpecificD = (byte)'D',
|
||||
VendorSpecificE = (byte)'E',
|
||||
VendorSpecificF = (byte)'F',
|
||||
VendorSpecificG = (byte)'G',
|
||||
VendorSpecificH = (byte)'H',
|
||||
VendorSpecificI = (byte)'I',
|
||||
VendorSpecificJ = (byte)'J',
|
||||
VendorSpecificK = (byte)'K',
|
||||
VendorSpecificL = (byte)'L',
|
||||
VendorSpecificM = (byte)'M',
|
||||
VendorSpecificN = (byte)'N',
|
||||
VendorSpecificO = (byte)'O',
|
||||
VendorSpecificP = (byte)'P',
|
||||
VendorSpecificQ = (byte)'Q',
|
||||
VendorSpecificR = (byte)'R',
|
||||
VendorSpecificS = (byte)'S',
|
||||
VendorSpecificT = (byte)'T',
|
||||
VendorSpecificU = (byte)'U',
|
||||
VendorSpecificV = (byte)'V',
|
||||
VendorSpecificW = (byte)'W',
|
||||
VendorSpecificX = (byte)'X',
|
||||
VendorSpecificY = (byte)'Y',
|
||||
VendorSpecificZ = (byte)'Z',
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
85
BurnOutSharp.Models/TAR/Header.cs
Normal file
85
BurnOutSharp.Models/TAR/Header.cs
Normal file
@@ -0,0 +1,85 @@
|
||||
namespace BurnOutSharp.Models.TAR
|
||||
{
|
||||
public sealed class Header
|
||||
{
|
||||
/// <summary>
|
||||
/// File name
|
||||
/// </summary>
|
||||
public string FileName;
|
||||
|
||||
/// <summary>
|
||||
/// File mode
|
||||
/// </summary>
|
||||
public Mode Mode;
|
||||
|
||||
/// <summary>
|
||||
/// Owner's numeric user ID
|
||||
/// </summary>
|
||||
public uint UID;
|
||||
|
||||
/// <summary>
|
||||
/// Owner's numeric user ID
|
||||
/// </summary>
|
||||
public uint GID;
|
||||
|
||||
/// <summary>
|
||||
/// File size in bytes
|
||||
/// </summary>
|
||||
public ulong Size;
|
||||
|
||||
/// <summary>
|
||||
/// Last modification time in numeric Unix time format
|
||||
/// </summary>
|
||||
public ulong ModifiedTime;
|
||||
|
||||
/// <summary>
|
||||
/// Checksum for header record
|
||||
/// </summary>
|
||||
public ushort Checksum;
|
||||
|
||||
/// <summary>
|
||||
/// Link indicator (file type) / Type flag
|
||||
/// </summary>
|
||||
public TypeFlag TypeFlag;
|
||||
|
||||
/// <summary>
|
||||
/// Name of linked file
|
||||
/// </summary>
|
||||
public string LinkName;
|
||||
|
||||
/// <summary>
|
||||
/// UStar indicator, "ustar", then NUL
|
||||
/// </summary>
|
||||
public string Magic;
|
||||
|
||||
/// <summary>
|
||||
/// UStar version, "00"
|
||||
/// </summary>
|
||||
public string Version;
|
||||
|
||||
/// <summary>
|
||||
/// Owner user name
|
||||
/// </summary>
|
||||
public string UserName;
|
||||
|
||||
/// <summary>
|
||||
/// Owner group name
|
||||
/// </summary>
|
||||
public string GroupName;
|
||||
|
||||
/// <summary>
|
||||
/// Device major number
|
||||
/// </summary>
|
||||
public string DevMajor;
|
||||
|
||||
/// <summary>
|
||||
/// Device minor number
|
||||
/// </summary>
|
||||
public string DevMinor;
|
||||
|
||||
/// <summary>
|
||||
/// Filename prefix
|
||||
/// </summary>
|
||||
public string Prefix;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user