diff --git a/BinaryObjectScanner.Printing/AACSMediaKeyBlock.cs b/BinaryObjectScanner.Printing/AACSMediaKeyBlock.cs index 46723456..62b40832 100644 --- a/BinaryObjectScanner.Printing/AACSMediaKeyBlock.cs +++ b/BinaryObjectScanner.Printing/AACSMediaKeyBlock.cs @@ -1,4 +1,3 @@ -using System; using System.Text; using SabreTools.Models.AACS; @@ -52,7 +51,7 @@ namespace BinaryObjectScanner.Printing } builder.AppendLine($" Record type: {record.RecordType} (0x{record.RecordType:X})"); - builder.AppendLine($" Record length: {record.RecordLength} (0x{record.RecordLength:X})"); + builder.AppendLine(record.RecordLength, " Record length"); switch (record) { @@ -95,7 +94,7 @@ namespace BinaryObjectScanner.Printing if (record == null) return; - builder.AppendLine($" Signature data: {(record.SignatureData == null ? "[NULL]" : BitConverter.ToString(record.SignatureData).Replace('-', ' '))}"); + builder.AppendLine(record.SignatureData, " Signature data"); } #if NET48 @@ -107,11 +106,11 @@ namespace BinaryObjectScanner.Printing if (record == null) return; - builder.AppendLine($" Subset Differences:"); + builder.AppendLine(" Subset Differences:"); builder.AppendLine(" -------------------------"); if (record?.SubsetDifferences == null || record.SubsetDifferences.Length == 0) { - builder.AppendLine($" No subset differences"); + builder.AppendLine(" No subset differences"); return; } @@ -125,8 +124,8 @@ namespace BinaryObjectScanner.Printing } else { - builder.AppendLine($" Mask: {sd.Mask} (0x{sd.Mask:X})"); - builder.AppendLine($" Number: {sd.Number} (0x{sd.Number:X})"); + builder.AppendLine(sd.Mask, " Mask"); + builder.AppendLine(sd.Number, " Number"); } } } @@ -140,18 +139,18 @@ namespace BinaryObjectScanner.Printing if (record == null) return; - builder.AppendLine($" Media Keys:"); + builder.AppendLine(" Media Keys:"); builder.AppendLine(" -------------------------"); if (record?.MediaKeyData == null || record.MediaKeyData.Length == 0) { - builder.AppendLine($" No media keys"); + builder.AppendLine(" No media keys"); return; } for (int j = 0; j < record.MediaKeyData.Length; j++) { var mk = record.MediaKeyData[j]; - builder.AppendLine($" Media key {j}: {(mk == null ? "[NULL]" : BitConverter.ToString(mk).Replace('-', ' '))}"); + builder.AppendLine(mk, $" Media key {j}"); } } @@ -165,18 +164,18 @@ namespace BinaryObjectScanner.Printing return; builder.AppendLine($" Span: {record.Span} (0x{record.Span:X})"); - builder.AppendLine($" Offsets:"); + builder.AppendLine(" Offsets:"); builder.AppendLine(" -------------------------"); if (record.Offsets == null || record.Offsets.Length == 0) { - builder.AppendLine($" No offsets"); + builder.AppendLine(" No offsets"); return; } for (int j = 0; j < record.Offsets.Length; j++) { var offset = record.Offsets[j]; - builder.AppendLine($" Offset {j}: {offset} (0x{offset:X})"); + builder.AppendLine(offset, $" Offset {j}"); } } @@ -190,7 +189,7 @@ namespace BinaryObjectScanner.Printing return; builder.AppendLine($" Media key block type: {record.MediaKeyBlockType} (0x{record.MediaKeyBlockType:X})"); - builder.AppendLine($" Version number: {record.VersionNumber} (0x{record.VersionNumber:X})"); + builder.AppendLine(record.VersionNumber, " Version number"); } #if NET48 @@ -202,12 +201,12 @@ namespace BinaryObjectScanner.Printing if (record == null) return; - builder.AppendLine($" Total number of entries: {record.TotalNumberOfEntries} (0x{record.TotalNumberOfEntries:X})"); - builder.AppendLine($" Signature Blocks:"); + builder.AppendLine(record.TotalNumberOfEntries, " Total number of entries"); + builder.AppendLine(" Signature Blocks:"); builder.AppendLine(" -------------------------"); if (record.SignatureBlocks == null || record.SignatureBlocks.Length == 0) { - builder.AppendLine($" No signature blocks"); + builder.AppendLine(" No signature blocks"); return; } @@ -221,12 +220,12 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Number of entries: {block.NumberOfEntries}"); - builder.AppendLine($" Entry Fields:"); + builder.AppendLine(block.NumberOfEntries, " Number of entries"); + builder.AppendLine(" Entry Fields:"); builder.AppendLine(" -------------------------"); if (block.EntryFields == null || block.EntryFields.Length == 0) { - builder.AppendLine($" No entry fields"); + builder.AppendLine(" No entry fields"); } else { @@ -240,8 +239,8 @@ namespace BinaryObjectScanner.Printing } else { - builder.AppendLine($" Range: {ef.Range} (0x{ef.Range:X})"); - builder.AppendLine($" Drive ID: {(ef.DriveID == null ? "[NULL]" : BitConverter.ToString(ef.DriveID).Replace('-', ' '))}"); + builder.AppendLine(ef.Range, " Range"); + builder.AppendLine(ef.DriveID, " Drive ID"); } } } @@ -258,11 +257,11 @@ namespace BinaryObjectScanner.Printing return; builder.AppendLine($" Total number of entries: {record.TotalNumberOfEntries} (0x{record.TotalNumberOfEntries:X})"); - builder.AppendLine($" Signature Blocks:"); + builder.AppendLine(" Signature Blocks:"); builder.AppendLine(" -------------------------"); if (record.SignatureBlocks == null || record.SignatureBlocks.Length == 0) { - builder.AppendLine($" No signature blocks"); + builder.AppendLine(" No signature blocks"); return; } @@ -276,12 +275,12 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Number of entries: {block.NumberOfEntries}"); - builder.AppendLine($" Entry Fields:"); + builder.AppendLine(block.NumberOfEntries, " Number of entries"); + builder.AppendLine(" Entry Fields:"); builder.AppendLine(" -------------------------"); if (block.EntryFields == null || block.EntryFields.Length == 0) { - builder.AppendLine($" No entry fields"); + builder.AppendLine(" No entry fields"); continue; } @@ -296,8 +295,8 @@ namespace BinaryObjectScanner.Printing else { - builder.AppendLine($" Range: {ef.Range} (0x{ef.Range:X})"); - builder.AppendLine($" Host ID: {(ef.HostID == null ? "[NULL]" : BitConverter.ToString(ef.HostID).Replace('-', ' '))}"); + builder.AppendLine(ef.Range, " Range"); + builder.AppendLine(ef.HostID, " Host ID"); } } } @@ -312,7 +311,7 @@ namespace BinaryObjectScanner.Printing if (record == null) return; - builder.AppendLine($" Ciphertext value: {(record.CiphertextValue == null ? "[NULL]" : BitConverter.ToString(record.CiphertextValue).Replace('-', ' '))}"); + builder.AppendLine(record.CiphertextValue, " Ciphertext value"); } #if NET48 @@ -324,7 +323,7 @@ namespace BinaryObjectScanner.Printing if (record == null) return; - builder.AppendLine($" Copyright: {record.Copyright ?? "[NULL]"}"); + builder.AppendLine(record.Copyright, " Copyright"); } } } \ No newline at end of file diff --git a/BinaryObjectScanner.Printing/BDPlusSVM.cs b/BinaryObjectScanner.Printing/BDPlusSVM.cs index 8ebadc49..5cc5aa40 100644 --- a/BinaryObjectScanner.Printing/BDPlusSVM.cs +++ b/BinaryObjectScanner.Printing/BDPlusSVM.cs @@ -1,4 +1,3 @@ -using System; using System.Text; using SabreTools.Models.BDPlus; @@ -10,14 +9,14 @@ namespace BinaryObjectScanner.Printing { builder.AppendLine("BD+ SVM Information:"); builder.AppendLine("-------------------------"); - builder.AppendLine($"Signature: {svm.Signature}"); - builder.AppendLine($"Unknown 1: {(svm.Unknown1 == null ? "[NULL]" : BitConverter.ToString(svm.Unknown1).Replace('-', ' '))}"); - builder.AppendLine($"Year: {svm.Year} (0x{svm.Year:X})"); - builder.AppendLine($"Month: {svm.Month} (0x{svm.Month:X})"); - builder.AppendLine($"Day: {svm.Day} (0x{svm.Day:X})"); - builder.AppendLine($"Unknown 2: {(svm.Unknown2 == null ? "[NULL]" : BitConverter.ToString(svm.Unknown2).Replace('-', ' '))}"); - builder.AppendLine($"Length: {svm.Length} (0x{svm.Length:X})"); - //builder.AppendLine($" Data: {(svm.Data == null ? "[NULL]" : BitConverter.ToString(svm.Data).Replace('-', ' '))}"); + builder.AppendLine(svm.Signature, "Signature"); + builder.AppendLine(svm.Unknown1, "Unknown 1"); + builder.AppendLine(svm.Year, "Year"); + builder.AppendLine(svm.Month, "Month"); + builder.AppendLine(svm.Day, "Day"); + builder.AppendLine(svm.Unknown2, "Unknown 2"); + builder.AppendLine(svm.Length, "Length"); + //builder.AppendLine(svm.Data, "Data"); builder.AppendLine(); } } diff --git a/BinaryObjectScanner.Printing/BFPK.cs b/BinaryObjectScanner.Printing/BFPK.cs index 44610ee2..79992907 100644 --- a/BinaryObjectScanner.Printing/BFPK.cs +++ b/BinaryObjectScanner.Printing/BFPK.cs @@ -30,9 +30,9 @@ namespace BinaryObjectScanner.Printing return; } - builder.AppendLine($" Magic: {header.Magic}"); - builder.AppendLine($" Version: {header.Version} (0x{header.Version:X})"); - builder.AppendLine($" Files: {header.Files} (0x{header.Files:X})"); + builder.AppendLine(header.Magic, " Magic"); + builder.AppendLine(header.Version, " Version"); + builder.AppendLine(header.Files, " Files"); builder.AppendLine(); } @@ -60,11 +60,11 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Name size: {entry.NameSize} (0x{entry.NameSize:X})"); - builder.AppendLine($" Name: {entry.Name}"); - builder.AppendLine($" Uncompressed size: {entry.UncompressedSize} (0x{entry.UncompressedSize:X})"); - builder.AppendLine($" Offset: {entry.Offset} (0x{entry.Offset:X})"); - builder.AppendLine($" Compressed Size: {entry.CompressedSize} (0x{entry.CompressedSize:X})"); + builder.AppendLine(entry.NameSize, " Name size"); + builder.AppendLine(entry.Name, " Name"); + builder.AppendLine(entry.UncompressedSize, " Uncompressed size"); + builder.AppendLine(entry.Offset, " Offset"); + builder.AppendLine(entry.CompressedSize, " Compressed size"); } } } diff --git a/BinaryObjectScanner.Printing/BSP.cs b/BinaryObjectScanner.Printing/BSP.cs index a5ef7462..f94c49df 100644 --- a/BinaryObjectScanner.Printing/BSP.cs +++ b/BinaryObjectScanner.Printing/BSP.cs @@ -33,7 +33,7 @@ namespace BinaryObjectScanner.Printing return; } - builder.AppendLine($" Version: {header.Version} (0x{header.Version:X})"); + builder.AppendLine(header.Version, " Version"); builder.AppendLine(); } @@ -73,8 +73,8 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Offset: {lump.Offset} (0x{lump.Offset:X})"); - builder.AppendLine($" Length: {lump.Length} (0x{lump.Length:X})"); + builder.AppendLine(lump.Offset, " Offset"); + builder.AppendLine(lump.Length, " Length"); } builder.AppendLine(); } @@ -94,8 +94,8 @@ namespace BinaryObjectScanner.Printing return; } - builder.AppendLine($" Texture count: {header.TextureCount}"); - builder.AppendLine($" Offsets:"); + builder.AppendLine(header.TextureCount, " Texture count"); + builder.AppendLine(" Offsets:"); if (header.Offsets == null || header.Offsets.Length == 0) { builder.AppendLine(" No offsets"); @@ -105,7 +105,7 @@ namespace BinaryObjectScanner.Printing for (int i = 0; i < header.Offsets.Length; i++) { - builder.AppendLine($" Offset {i}: {header.Offsets[i]} (0x{header.Offsets[i]:X})"); + builder.AppendLine(header.Offsets[i], $" Offset {i}"); } builder.AppendLine(); } @@ -135,24 +135,24 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Name: {texture.Name}"); - builder.AppendLine($" Width: {texture.Width} (0x{texture.Width:X})"); - builder.AppendLine($" Height: {texture.Height} (0x{texture.Height:X})"); - builder.AppendLine($" Offsets:"); + builder.AppendLine(texture.Name, " Name"); + builder.AppendLine(texture.Width, " Width"); + builder.AppendLine(texture.Height, " Height"); + builder.AppendLine(" Offsets:"); if (texture.Offsets == null || texture.Offsets.Length == 0) { - builder.AppendLine($" No offsets"); + builder.AppendLine(" No offsets"); continue; } else { for (int j = 0; j < texture.Offsets.Length; j++) { - builder.AppendLine($" Offset {j}: {texture.Offsets[i]} (0x{texture.Offsets[j]:X})"); + builder.AppendLine(texture.Offsets[i], $" Offset {j}"); } } // Skip texture data - builder.AppendLine($" Palette size: {texture.PaletteSize} (0x{texture.PaletteSize:X})"); + builder.AppendLine(texture.PaletteSize, " Palette size"); // Skip palette data } builder.AppendLine(); diff --git a/BinaryObjectScanner.Printing/CFB.cs b/BinaryObjectScanner.Printing/CFB.cs index f2fea560..6efef74f 100644 --- a/BinaryObjectScanner.Printing/CFB.cs +++ b/BinaryObjectScanner.Printing/CFB.cs @@ -33,24 +33,24 @@ namespace BinaryObjectScanner.Printing return; } - builder.AppendLine($" Signature: {header.Signature} (0x{header.Signature:X})"); - builder.AppendLine($" CLSID: {header.CLSID}"); - builder.AppendLine($" Minor version: {header.MinorVersion} (0x{header.MinorVersion:X})"); - builder.AppendLine($" Major version: {header.MajorVersion} (0x{header.MajorVersion:X})"); - builder.AppendLine($" Byte order: {header.ByteOrder} (0x{header.ByteOrder:X})"); + builder.AppendLine(header.Signature, " Signature"); + builder.AppendLine(header.CLSID, " CLSID"); + builder.AppendLine(header.MinorVersion, " Minor version"); + builder.AppendLine(header.MajorVersion, " Major version"); + builder.AppendLine(header.ByteOrder, " Byte order"); builder.AppendLine($" Sector shift: {header.SectorShift} (0x{header.SectorShift:X}) => {Math.Pow(2, header.SectorShift)}"); builder.AppendLine($" Mini sector shift: {header.MiniSectorShift} (0x{header.MiniSectorShift:X}) => {Math.Pow(2, header.MiniSectorShift)}"); - builder.AppendLine($" Reserved: {(header.Reserved == null ? "[NULL]" : BitConverter.ToString(header.Reserved).Replace('-', ' '))}"); - builder.AppendLine($" Number of directory sectors: {header.NumberOfDirectorySectors} (0x{header.NumberOfDirectorySectors:X})"); - builder.AppendLine($" Number of FAT sectors: {header.NumberOfFATSectors} (0x{header.NumberOfFATSectors:X})"); - builder.AppendLine($" First directory sector location: {header.FirstDirectorySectorLocation} (0x{header.FirstDirectorySectorLocation:X})"); - builder.AppendLine($" Transaction signature number: {header.TransactionSignatureNumber} (0x{header.TransactionSignatureNumber:X})"); - builder.AppendLine($" Mini stream cutoff size: {header.MiniStreamCutoffSize} (0x{header.MiniStreamCutoffSize:X})"); - builder.AppendLine($" First mini FAT sector location: {header.FirstMiniFATSectorLocation} (0x{header.FirstMiniFATSectorLocation:X})"); - builder.AppendLine($" Number of mini FAT sectors: {header.NumberOfMiniFATSectors} (0x{header.NumberOfMiniFATSectors:X})"); - builder.AppendLine($" First DIFAT sector location: {header.FirstDIFATSectorLocation} (0x{header.FirstDIFATSectorLocation:X})"); - builder.AppendLine($" Number of DIFAT sectors: {header.NumberOfDIFATSectors} (0x{header.NumberOfDIFATSectors:X})"); - builder.AppendLine($" DIFAT:"); + builder.AppendLine(header.Reserved, " Reserved"); + builder.AppendLine(header.NumberOfDirectorySectors, " Number of directory sectors"); + builder.AppendLine(header.NumberOfFATSectors, " Number of FAT sectors"); + builder.AppendLine(header.FirstDirectorySectorLocation, " First directory sector location"); + builder.AppendLine(header.TransactionSignatureNumber, " Transaction signature number"); + builder.AppendLine(header.MiniStreamCutoffSize, " Mini stream cutoff size"); + builder.AppendLine(header.FirstMiniFATSectorLocation, " First mini FAT sector location"); + builder.AppendLine(header.NumberOfMiniFATSectors, " Number of mini FAT sectors"); + builder.AppendLine(header.FirstDIFATSectorLocation, " First DIFAT sector location"); + builder.AppendLine(header.NumberOfDIFATSectors, " Number of DIFAT sectors"); + builder.AppendLine(" DIFAT:"); if (header.DIFAT == null || header.DIFAT.Length == 0) { builder.AppendLine(" No DIFAT entries"); @@ -112,19 +112,19 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Name: {directoryEntry.Name}"); - builder.AppendLine($" Name length: {directoryEntry.NameLength} (0x{directoryEntry.NameLength:X})"); + builder.AppendLine(directoryEntry.Name, " Name"); + builder.AppendLine(directoryEntry.NameLength, " Name length"); builder.AppendLine($" Object type: {directoryEntry.ObjectType} (0x{directoryEntry.ObjectType:X})"); builder.AppendLine($" Color flag: {directoryEntry.ColorFlag} (0x{directoryEntry.ColorFlag:X})"); builder.AppendLine($" Left sibling ID: {directoryEntry.LeftSiblingID} (0x{directoryEntry.LeftSiblingID:X})"); builder.AppendLine($" Right sibling ID: {directoryEntry.RightSiblingID} (0x{directoryEntry.RightSiblingID:X})"); builder.AppendLine($" Child ID: {directoryEntry.ChildID} (0x{directoryEntry.ChildID:X})"); - builder.AppendLine($" CLSID: {directoryEntry.CLSID}"); - builder.AppendLine($" State bits: {directoryEntry.StateBits} (0x{directoryEntry.StateBits:X})"); - builder.AppendLine($" Creation time: {directoryEntry.CreationTime} (0x{directoryEntry.CreationTime:X})"); - builder.AppendLine($" Modification time: {directoryEntry.ModifiedTime} (0x{directoryEntry.ModifiedTime:X})"); - builder.AppendLine($" Staring sector location: {directoryEntry.StartingSectorLocation} (0x{directoryEntry.StartingSectorLocation:X})"); - builder.AppendLine($" Stream size: {directoryEntry.StreamSize} (0x{directoryEntry.StreamSize:X})"); + builder.AppendLine(directoryEntry.CLSID, " CLSID"); + builder.AppendLine(directoryEntry.StateBits, " State bits"); + builder.AppendLine(directoryEntry.CreationTime, " Creation time"); + builder.AppendLine(directoryEntry.ModifiedTime, " Modification time"); + builder.AppendLine(directoryEntry.StartingSectorLocation, " Staring sector location"); + builder.AppendLine(directoryEntry.StreamSize, " Stream size"); } builder.AppendLine(); } diff --git a/BinaryObjectScanner.Printing/CIA.cs b/BinaryObjectScanner.Printing/CIA.cs index fae3bd41..a5ff7db1 100644 --- a/BinaryObjectScanner.Printing/CIA.cs +++ b/BinaryObjectScanner.Printing/CIA.cs @@ -1,4 +1,3 @@ -using System; using System.Text; using SabreTools.Models.N3DS; @@ -35,15 +34,15 @@ namespace BinaryObjectScanner.Printing return; } - builder.AppendLine($" Header size: {header.HeaderSize} (0x{header.HeaderSize:X})"); - builder.AppendLine($" Type: {header.Type} (0x{header.Type:X})"); - builder.AppendLine($" Version: {header.Version} (0x{header.Version:X})"); - builder.AppendLine($" Certificate chain size: {header.CertificateChainSize} (0x{header.CertificateChainSize:X})"); - builder.AppendLine($" Ticket size: {header.TicketSize} (0x{header.TicketSize:X})"); - builder.AppendLine($" TMD file size: {header.TMDFileSize} (0x{header.TMDFileSize:X})"); - builder.AppendLine($" Meta size: {header.MetaSize} (0x{header.MetaSize:X})"); - builder.AppendLine($" Content size: {header.ContentSize} (0x{header.ContentSize:X})"); - builder.AppendLine($" Content index: {(header.ContentIndex == null ? "[NULL]" : BitConverter.ToString(header.ContentIndex).Replace('-', ' '))}"); + builder.AppendLine(header.HeaderSize, " Header size"); + builder.AppendLine(header.Type, " Type"); + builder.AppendLine(header.Version, " Version"); + builder.AppendLine(header.CertificateChainSize, " Certificate chain size"); + builder.AppendLine(header.TicketSize, " Ticket size"); + builder.AppendLine(header.TMDFileSize, " TMD file size"); + builder.AppendLine(header.MetaSize, " Meta size"); + builder.AppendLine(header.ContentSize, " Content size"); + builder.AppendLine(header.ContentIndex, " Content index"); builder.AppendLine(); } @@ -82,25 +81,25 @@ namespace BinaryObjectScanner.Printing } builder.AppendLine($" Signature type: {certificate.SignatureType} (0x{certificate.SignatureType:X})"); - builder.AppendLine($" Signature size: {certificate.SignatureSize} (0x{certificate.SignatureSize:X})"); - builder.AppendLine($" Padding size: {certificate.PaddingSize} (0x{certificate.PaddingSize:X})"); - builder.AppendLine($" Signature: {(certificate.Signature == null ? "[NULL]" : BitConverter.ToString(certificate.Signature).Replace('-', ' '))}"); - builder.AppendLine($" Padding: {(certificate.Padding == null ? "[NULL]" : BitConverter.ToString(certificate.Padding).Replace('-', ' '))}"); - builder.AppendLine($" Issuer: {certificate.Issuer ?? "[NULL]"}"); + builder.AppendLine(certificate.SignatureSize, " Signature size"); + builder.AppendLine(certificate.PaddingSize, " Padding size"); + builder.AppendLine(certificate.Signature, " Signature"); + builder.AppendLine(certificate.Padding, " Padding"); + builder.AppendLine(certificate.Issuer, " Issuer"); builder.AppendLine($" Key type: {certificate.KeyType} (0x{certificate.KeyType:X})"); - builder.AppendLine($" Name: {certificate.Name ?? "[NULL]"}"); - builder.AppendLine($" Expiration time: {certificate.ExpirationTime} (0x{certificate.ExpirationTime:X})"); + builder.AppendLine(certificate.Name, " Name"); + builder.AppendLine(certificate.ExpirationTime, " Expiration time"); switch (certificate.KeyType) { case PublicKeyType.RSA_4096: case PublicKeyType.RSA_2048: - builder.AppendLine($" Modulus: {(certificate.RSAModulus == null ? "[NULL]" : BitConverter.ToString(certificate.RSAModulus).Replace('-', ' '))}"); - builder.AppendLine($" Public exponent: {certificate.RSAPublicExponent} (0x{certificate.RSAPublicExponent:X})"); - builder.AppendLine($" Padding: {(certificate.RSAPadding == null ? "[NULL]" : BitConverter.ToString(certificate.RSAPadding).Replace('-', ' '))}"); + builder.AppendLine(certificate.RSAModulus, " Modulus"); + builder.AppendLine(certificate.RSAPublicExponent, " Public exponent"); + builder.AppendLine(certificate.RSAPadding, " Padding"); break; case PublicKeyType.EllipticCurve: - builder.AppendLine($" Public key: {(certificate.ECCPublicKey == null ? "[NULL]" : BitConverter.ToString(certificate.ECCPublicKey).Replace('-', ' '))}"); - builder.AppendLine($" Padding: {(certificate.ECCPadding == null ? "[NULL]" : BitConverter.ToString(certificate.ECCPadding).Replace('-', ' '))}"); + builder.AppendLine(certificate.ECCPublicKey, " Public key"); + builder.AppendLine(certificate.ECCPadding, " Padding"); break; } } @@ -123,31 +122,31 @@ namespace BinaryObjectScanner.Printing } builder.AppendLine($" Signature type: {ticket.SignatureType} (0x{ticket.SignatureType:X})"); - builder.AppendLine($" Signature size: {ticket.SignatureSize} (0x{ticket.SignatureSize:X})"); - builder.AppendLine($" Padding size: {ticket.PaddingSize} (0x{ticket.PaddingSize:X})"); - builder.AppendLine($" Signature: {(ticket.Signature == null ? "[NULL]" : BitConverter.ToString(ticket.Signature).Replace('-', ' '))}"); - builder.AppendLine($" Padding: {(ticket.Padding == null ? "[NULL]" : BitConverter.ToString(ticket.Padding).Replace('-', ' '))}"); - builder.AppendLine($" Issuer: {ticket.Issuer ?? "[NULL]"}"); - builder.AppendLine($" ECC public key: {(ticket.ECCPublicKey == null ? "[NULL]" : BitConverter.ToString(ticket.ECCPublicKey).Replace('-', ' '))}"); - builder.AppendLine($" Version: {ticket.Version} (0x{ticket.Version:X})"); - builder.AppendLine($" CaCrlVersion: {ticket.CaCrlVersion} (0x{ticket.CaCrlVersion:X})"); - builder.AppendLine($" SignerCrlVersion: {ticket.SignerCrlVersion} (0x{ticket.SignerCrlVersion:X})"); - builder.AppendLine($" Title key: {(ticket.TitleKey == null ? "[NULL]" : BitConverter.ToString(ticket.TitleKey).Replace('-', ' '))}"); - builder.AppendLine($" Reserved 1: {ticket.Reserved1} (0x{ticket.Reserved1:X})"); - builder.AppendLine($" Ticket ID: {ticket.TicketID} (0x{ticket.TicketID:X})"); - builder.AppendLine($" Console ID: {ticket.ConsoleID} (0x{ticket.ConsoleID:X})"); - builder.AppendLine($" Title ID {ticket.TitleID} (0x{ticket.TitleID:X})"); - builder.AppendLine($" Reserved 2: {(ticket.Reserved2 == null ? "[NULL]" : BitConverter.ToString(ticket.Reserved2).Replace('-', ' '))}"); - builder.AppendLine($" Ticket title version: {ticket.TicketTitleVersion} (0x{ticket.TicketTitleVersion:X})"); - builder.AppendLine($" Reserved 3: {(ticket.Reserved3 == null ? "[NULL]" : BitConverter.ToString(ticket.Reserved3).Replace('-', ' '))}"); - builder.AppendLine($" License type: {ticket.LicenseType} (0x{ticket.LicenseType:X})"); - builder.AppendLine($" Common keY index: {ticket.CommonKeyYIndex} (0x{ticket.CommonKeyYIndex:X})"); - builder.AppendLine($" Reserved 4: {(ticket.Reserved4 == null ? "[NULL]" : BitConverter.ToString(ticket.Reserved4).Replace('-', ' '))}"); - builder.AppendLine($" eShop Account ID?: {ticket.eShopAccountID} (0x{ticket.eShopAccountID:X})"); - builder.AppendLine($" Reserved 5: {ticket.Reserved5} (0x{ticket.Reserved5:X})"); - builder.AppendLine($" Audit: {ticket.Audit} (0x{ticket.Audit:X})"); - builder.AppendLine($" Reserved 6: {(ticket.Reserved6 == null ? "[NULL]" : BitConverter.ToString(ticket.Reserved6).Replace('-', ' '))}"); - builder.AppendLine($" Limits:"); + builder.AppendLine(ticket.SignatureSize, " Signature size"); + builder.AppendLine(ticket.PaddingSize, " Padding size"); + builder.AppendLine(ticket.Signature, " Signature"); + builder.AppendLine(ticket.Padding, " Padding"); + builder.AppendLine(ticket.Issuer, " Issuer"); + builder.AppendLine(ticket.ECCPublicKey, " ECC public key"); + builder.AppendLine(ticket.Version, " Version"); + builder.AppendLine(ticket.CaCrlVersion, " CaCrlVersion"); + builder.AppendLine(ticket.SignerCrlVersion, " SignerCrlVersion"); + builder.AppendLine(ticket.TitleKey, " Title key"); + builder.AppendLine(ticket.Reserved1, " Reserved 1"); + builder.AppendLine(ticket.TicketID, " Ticket ID"); + builder.AppendLine(ticket.ConsoleID, " Console ID"); + builder.AppendLine(ticket.TitleID, " Title ID"); + builder.AppendLine(ticket.Reserved2, " Reserved 2"); + builder.AppendLine(ticket.TicketTitleVersion, " Ticket title version"); + builder.AppendLine(ticket.Reserved3, " Reserved 3"); + builder.AppendLine(ticket.LicenseType, " License type"); + builder.AppendLine(ticket.CommonKeyYIndex, " Common key Y index"); + builder.AppendLine(ticket.Reserved4, " Reserved 4"); + builder.AppendLine(ticket.eShopAccountID, " eShop Account ID"); + builder.AppendLine(ticket.Reserved5, " Reserved 5"); + builder.AppendLine(ticket.Audit, " Audit"); + builder.AppendLine(ticket.Reserved6, " Reserved 6"); + builder.AppendLine(" Limits:"); if (ticket.Limits == null || ticket.Limits.Length == 0) { builder.AppendLine(" No limits"); @@ -156,11 +155,11 @@ namespace BinaryObjectScanner.Printing { for (int i = 0; i < ticket.Limits.Length; i++) { - builder.AppendLine($" Limit {i}: {ticket.Limits[i]} (0x{ticket.Limits[i]:X})"); + builder.AppendLine(ticket.Limits[i], $" Limit {i}"); } } - builder.AppendLine($" Content index size: {ticket.ContentIndexSize} (0x{ticket.ContentIndexSize:X})"); - builder.AppendLine($" Content index: {(ticket.ContentIndex == null ? "[NULL]" : BitConverter.ToString(ticket.ContentIndex).Replace('-', ' '))}"); + builder.AppendLine(ticket.ContentIndexSize, " Content index size"); + builder.AppendLine(ticket.ContentIndex, " Content index"); builder.AppendLine(); builder.AppendLine(" Ticket Certificate Chain Information:"); @@ -190,25 +189,25 @@ namespace BinaryObjectScanner.Printing } builder.AppendLine($" Signature type: {certificate.SignatureType} (0x{certificate.SignatureType:X})"); - builder.AppendLine($" Signature size: {certificate.SignatureSize} (0x{certificate.SignatureSize:X})"); - builder.AppendLine($" Padding size: {certificate.PaddingSize} (0x{certificate.PaddingSize:X})"); - builder.AppendLine($" Signature: {(certificate.Signature == null ? "[NULL]" : BitConverter.ToString(certificate.Signature).Replace('-', ' '))}"); - builder.AppendLine($" Padding: {(certificate.Padding == null ? "[NULL]" : BitConverter.ToString(certificate.Padding).Replace('-', ' '))}"); - builder.AppendLine($" Issuer: {certificate.Issuer ?? "[NULL]"}"); + builder.AppendLine(certificate.SignatureSize, " Signature size"); + builder.AppendLine(certificate.PaddingSize, " Padding size"); + builder.AppendLine(certificate.Signature, " Signature"); + builder.AppendLine(certificate.Padding, " Padding"); + builder.AppendLine(certificate.Issuer, " Issuer"); builder.AppendLine($" Key type: {certificate.KeyType} (0x{certificate.KeyType:X})"); - builder.AppendLine($" Name: {certificate.Name ?? "[NULL]"}"); - builder.AppendLine($" Expiration time: {certificate.ExpirationTime} (0x{certificate.ExpirationTime:X})"); + builder.AppendLine(certificate.Name, " Name"); + builder.AppendLine(certificate.ExpirationTime, " Expiration time"); switch (certificate.KeyType) { case PublicKeyType.RSA_4096: case PublicKeyType.RSA_2048: - builder.AppendLine($" Modulus: {(certificate.RSAModulus == null ? "[NULL]" : BitConverter.ToString(certificate.RSAModulus).Replace('-', ' '))}"); - builder.AppendLine($" Public exponent: {certificate.RSAPublicExponent} (0x{certificate.RSAPublicExponent:X})"); - builder.AppendLine($" Padding: {(certificate.RSAPadding == null ? "[NULL]" : BitConverter.ToString(certificate.RSAPadding).Replace('-', ' '))}"); + builder.AppendLine(certificate.RSAModulus, " Modulus"); + builder.AppendLine(certificate.RSAPublicExponent, " Public exponent"); + builder.AppendLine(certificate.RSAPadding, " Padding"); break; case PublicKeyType.EllipticCurve: - builder.AppendLine($" Public key: {(certificate.ECCPublicKey == null ? "[NULL]" : BitConverter.ToString(certificate.ECCPublicKey).Replace('-', ' '))}"); - builder.AppendLine($" Padding: {(certificate.ECCPadding == null ? "[NULL]" : BitConverter.ToString(certificate.ECCPadding).Replace('-', ' '))}"); + builder.AppendLine(certificate.ECCPublicKey, " Public key"); + builder.AppendLine(certificate.ECCPadding, " Padding"); break; } } @@ -232,30 +231,30 @@ namespace BinaryObjectScanner.Printing } builder.AppendLine($" Signature type: {tmd.SignatureType} (0x{tmd.SignatureType:X})"); - builder.AppendLine($" Signature size: {tmd.SignatureSize} (0x{tmd.SignatureSize:X})"); - builder.AppendLine($" Padding size: {tmd.PaddingSize} (0x{tmd.PaddingSize:X})"); - builder.AppendLine($" Signature: {(tmd.Signature == null ? "[NULL]" : BitConverter.ToString(tmd.Signature).Replace('-', ' '))}"); - builder.AppendLine($" Padding 1: {(tmd.Padding1 == null ? "[NULL]" : BitConverter.ToString(tmd.Padding1).Replace('-', ' '))}"); - builder.AppendLine($" Issuer: {tmd.Issuer ?? "[NULL]"}"); - builder.AppendLine($" Version: {tmd.Version} (0x{tmd.Version:X})"); - builder.AppendLine($" CaCrlVersion: {tmd.CaCrlVersion} (0x{tmd.CaCrlVersion:X})"); - builder.AppendLine($" SignerCrlVersion: {tmd.SignerCrlVersion} (0x{tmd.SignerCrlVersion:X})"); - builder.AppendLine($" Reserved 1: {tmd.Reserved1} (0x{tmd.Reserved1:X})"); - builder.AppendLine($" System version: {tmd.SystemVersion} (0x{tmd.SystemVersion:X})"); - builder.AppendLine($" Title ID: {tmd.TitleID} (0x{tmd.TitleID:X})"); - builder.AppendLine($" Title type: {tmd.TitleType} (0x{tmd.TitleType:X})"); - builder.AppendLine($" Group ID: {tmd.GroupID} (0x{tmd.GroupID:X})"); - builder.AppendLine($" Save data size: {tmd.SaveDataSize} (0x{tmd.SaveDataSize:X})"); - builder.AppendLine($" SRL private save data size: {tmd.SRLPrivateSaveDataSize} (0x{tmd.SRLPrivateSaveDataSize:X})"); - builder.AppendLine($" Reserved 2: {(tmd.Reserved2 == null ? "[NULL]" : BitConverter.ToString(tmd.Reserved2).Replace('-', ' '))}"); - builder.AppendLine($" SRL flag: {tmd.SRLFlag} (0x{tmd.SRLFlag:X})"); - builder.AppendLine($" Reserved 3: {(tmd.Reserved3 == null ? "[NULL]" : BitConverter.ToString(tmd.Reserved3).Replace('-', ' '))}"); - builder.AppendLine($" Access rights: {tmd.AccessRights} (0x{tmd.AccessRights:X})"); - builder.AppendLine($" Title version: {tmd.TitleVersion} (0x{tmd.TitleVersion:X})"); - builder.AppendLine($" Content count: {tmd.ContentCount} (0x{tmd.ContentCount:X})"); - builder.AppendLine($" Boot content: {tmd.BootContent} (0x{tmd.BootContent:X})"); - builder.AppendLine($" Padding 2: {(tmd.Padding2 == null ? "[NULL]" : BitConverter.ToString(tmd.Padding2).Replace('-', ' '))}"); - builder.AppendLine($" SHA-256 hash of the content info records: {(tmd.SHA256HashContentInfoRecords == null ? "[NULL]" : BitConverter.ToString(tmd.SHA256HashContentInfoRecords).Replace('-', ' '))}"); + builder.AppendLine(tmd.SignatureSize, " Signature size"); + builder.AppendLine(tmd.PaddingSize, " Padding size"); + builder.AppendLine(tmd.Signature, " Signature"); + builder.AppendLine(tmd.Padding1, " Padding 1"); + builder.AppendLine(tmd.Issuer, " Issuer"); + builder.AppendLine(tmd.Version, " Version"); + builder.AppendLine(tmd.CaCrlVersion, " CaCrlVersion"); + builder.AppendLine(tmd.SignerCrlVersion, " SignerCrlVersion"); + builder.AppendLine(tmd.Reserved1, " Reserved 1"); + builder.AppendLine(tmd.SystemVersion, " System version"); + builder.AppendLine(tmd.TitleID, " Title ID"); + builder.AppendLine(tmd.TitleType, " Title type"); + builder.AppendLine(tmd.GroupID, " Group ID"); + builder.AppendLine(tmd.SaveDataSize, " Save data size"); + builder.AppendLine(tmd.SRLPrivateSaveDataSize, " SRL private save data size"); + builder.AppendLine(tmd.Reserved2, " Reserved 2"); + builder.AppendLine(tmd.SRLFlag, " SRL flag"); + builder.AppendLine(tmd.Reserved3, " Reserved 3"); + builder.AppendLine(tmd.AccessRights, " Access rights"); + builder.AppendLine(tmd.TitleVersion, " Title version"); + builder.AppendLine(tmd.ContentCount, " Content count"); + builder.AppendLine(tmd.BootContent, " Boot content"); + builder.AppendLine(tmd.Padding2, " Padding 2"); + builder.AppendLine(tmd.SHA256HashContentInfoRecords, " SHA-256 hash of the content info records"); builder.AppendLine(); builder.AppendLine(" Ticket Content Info Records Information:"); @@ -276,9 +275,9 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Content index offset: {contentInfoRecord.ContentIndexOffset} (0x{contentInfoRecord.ContentIndexOffset:X})"); - builder.AppendLine($" Content command count: {contentInfoRecord.ContentCommandCount} (0x{contentInfoRecord.ContentCommandCount:X})"); - builder.AppendLine($" SHA-256 hash of the next {contentInfoRecord.ContentCommandCount} records not hashed: {(contentInfoRecord.UnhashedContentRecordsSHA256Hash == null ? "[NULL]" : BitConverter.ToString(contentInfoRecord.UnhashedContentRecordsSHA256Hash).Replace('-', ' '))}"); + builder.AppendLine(contentInfoRecord.ContentIndexOffset, " Content index offset"); + builder.AppendLine(contentInfoRecord.ContentCommandCount, " Content command count"); + builder.AppendLine(contentInfoRecord.UnhashedContentRecordsSHA256Hash, $" SHA-256 hash of the next {contentInfoRecord.ContentCommandCount} records not hashed"); } } builder.AppendLine(); @@ -301,11 +300,11 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Content ID: {contentChunkRecord.ContentId} (0x{contentChunkRecord.ContentId:X})"); + builder.AppendLine(contentChunkRecord.ContentId, " Content ID"); builder.AppendLine($" Content index: {contentChunkRecord.ContentIndex} (0x{contentChunkRecord.ContentIndex:X})"); builder.AppendLine($" Content type: {contentChunkRecord.ContentType} (0x{contentChunkRecord.ContentType:X})"); - builder.AppendLine($" Content size: {contentChunkRecord.ContentSize} (0x{contentChunkRecord.ContentSize:X})"); - builder.AppendLine($" SHA-256 hash: {(contentChunkRecord.SHA256Hash == null ? "[NULL]" : BitConverter.ToString(contentChunkRecord.SHA256Hash).Replace('-', ' '))}"); + builder.AppendLine(contentChunkRecord.ContentSize, " Content size"); + builder.AppendLine(contentChunkRecord.SHA256Hash, " SHA-256 hash"); } } builder.AppendLine(); @@ -337,25 +336,25 @@ namespace BinaryObjectScanner.Printing } builder.AppendLine($" Signature type: {certificate.SignatureType} (0x{certificate.SignatureType:X})"); - builder.AppendLine($" Signature size: {certificate.SignatureSize} (0x{certificate.SignatureSize:X})"); - builder.AppendLine($" Padding size: {certificate.PaddingSize} (0x{certificate.PaddingSize:X})"); - builder.AppendLine($" Signature: {(certificate.Signature == null ? "[NULL]" : BitConverter.ToString(certificate.Signature).Replace('-', ' '))}"); - builder.AppendLine($" Padding: {(certificate.Padding == null ? "[NULL]" : BitConverter.ToString(certificate.Padding).Replace('-', ' '))}"); - builder.AppendLine($" Issuer: {certificate.Issuer ?? "[NULL]"}"); + builder.AppendLine(certificate.SignatureSize, " Signature size"); + builder.AppendLine(certificate.PaddingSize, " Padding size"); + builder.AppendLine(certificate.Signature, " Signature"); + builder.AppendLine(certificate.Padding, " Padding"); + builder.AppendLine(certificate.Issuer, " Issuer"); builder.AppendLine($" Key type: {certificate.KeyType} (0x{certificate.KeyType:X})"); - builder.AppendLine($" Name: {certificate.Name ?? "[NULL]"}"); - builder.AppendLine($" Expiration time: {certificate.ExpirationTime} (0x{certificate.ExpirationTime:X})"); + builder.AppendLine(certificate.Name, " Name"); + builder.AppendLine(certificate.ExpirationTime, " Expiration time"); switch (certificate.KeyType) { case PublicKeyType.RSA_4096: case PublicKeyType.RSA_2048: - builder.AppendLine($" Modulus: {(certificate.RSAModulus == null ? "[NULL]" : BitConverter.ToString(certificate.RSAModulus).Replace('-', ' '))}"); - builder.AppendLine($" Public exponent: {certificate.RSAPublicExponent} (0x{certificate.RSAPublicExponent:X})"); - builder.AppendLine($" Padding: {(certificate.RSAPadding == null ? "[NULL]" : BitConverter.ToString(certificate.RSAPadding).Replace('-', ' '))}"); + builder.AppendLine(certificate.RSAModulus, " Modulus"); + builder.AppendLine(certificate.RSAPublicExponent, " Public exponent"); + builder.AppendLine(certificate.RSAPadding, " Padding"); break; case PublicKeyType.EllipticCurve: - builder.AppendLine($" Public key: {(certificate.ECCPublicKey == null ? "[NULL]" : BitConverter.ToString(certificate.ECCPublicKey).Replace('-', ' '))}"); - builder.AppendLine($" Padding: {(certificate.ECCPadding == null ? "[NULL]" : BitConverter.ToString(certificate.ECCPadding).Replace('-', ' '))}"); + builder.AppendLine(certificate.ECCPublicKey, " Public key"); + builder.AppendLine(certificate.ECCPadding, " Padding"); break; } } @@ -390,29 +389,29 @@ namespace BinaryObjectScanner.Printing if (partitionHeader.MagicID == string.Empty) { - builder.AppendLine($" Empty partition, no data can be parsed"); + builder.AppendLine(" Empty partition, no data can be parsed"); continue; } else if (partitionHeader.MagicID != Constants.NCCHMagicNumber) { - builder.AppendLine($" Unrecognized partition data, no data can be parsed"); + builder.AppendLine(" Unrecognized partition data, no data can be parsed"); continue; } - builder.AppendLine($" RSA-2048 SHA-256 signature: {(partitionHeader.RSA2048Signature == null ? "[NULL]" : BitConverter.ToString(partitionHeader.RSA2048Signature).Replace('-', ' '))}"); - builder.AppendLine($" Magic ID: {partitionHeader.MagicID} (0x{partitionHeader.MagicID:X})"); - builder.AppendLine($" Content size in media units: {partitionHeader.ContentSizeInMediaUnits} (0x{partitionHeader.ContentSizeInMediaUnits:X})"); - builder.AppendLine($" Partition ID: {partitionHeader.PartitionId} (0x{partitionHeader.PartitionId:X})"); - builder.AppendLine($" Maker code: {partitionHeader.MakerCode} (0x{partitionHeader.MakerCode:X})"); - builder.AppendLine($" Version: {partitionHeader.Version} (0x{partitionHeader.Version:X})"); - builder.AppendLine($" Verification hash: {partitionHeader.VerificationHash} (0x{partitionHeader.VerificationHash:X})"); - builder.AppendLine($" Program ID: {(partitionHeader.ProgramId == null ? "[NULL]" : BitConverter.ToString(partitionHeader.ProgramId).Replace('-', ' '))}"); - builder.AppendLine($" Reserved 1: {(partitionHeader.Reserved1 == null ? "[NULL]" : BitConverter.ToString(partitionHeader.Reserved1).Replace('-', ' '))}"); - builder.AppendLine($" Logo region SHA-256 hash: {(partitionHeader.LogoRegionHash == null ? "[NULL]" : BitConverter.ToString(partitionHeader.LogoRegionHash).Replace('-', ' '))}"); - builder.AppendLine($" Product code: {partitionHeader.ProductCode} (0x{partitionHeader.ProductCode:X})"); - builder.AppendLine($" Extended header SHA-256 hash: {(partitionHeader.ExtendedHeaderHash == null ? "[NULL]" : BitConverter.ToString(partitionHeader.ExtendedHeaderHash).Replace('-', ' '))}"); - builder.AppendLine($" Extended header size in bytes: {partitionHeader.ExtendedHeaderSizeInBytes} (0x{partitionHeader.ExtendedHeaderSizeInBytes:X})"); - builder.AppendLine($" Reserved 2: {(partitionHeader.Reserved2 == null ? "[NULL]" : BitConverter.ToString(partitionHeader.Reserved2).Replace('-', ' '))}"); + builder.AppendLine(partitionHeader.RSA2048Signature, " RSA-2048 SHA-256 signature"); + builder.AppendLine(partitionHeader.MagicID, " Magic ID"); + builder.AppendLine(partitionHeader.ContentSizeInMediaUnits, " Content size in media units"); + builder.AppendLine(partitionHeader.PartitionId, " Partition ID"); + builder.AppendLine(partitionHeader.MakerCode, " Maker code"); + builder.AppendLine(partitionHeader.Version, " Version"); + builder.AppendLine(partitionHeader.VerificationHash, " Verification hash"); + builder.AppendLine(partitionHeader.ProgramId, " Program ID"); + builder.AppendLine(partitionHeader.Reserved1, " Reserved 1"); + builder.AppendLine(partitionHeader.LogoRegionHash, " Logo region SHA-256 hash"); + builder.AppendLine(partitionHeader.ProductCode, " Product code"); + builder.AppendLine(partitionHeader.ExtendedHeaderHash, " Extended header SHA-256 hash"); + builder.AppendLine(partitionHeader.ExtendedHeaderSizeInBytes, " Extended header size in bytes"); + builder.AppendLine(partitionHeader.Reserved2, " Reserved 2"); builder.AppendLine(" Flags:"); if (partitionHeader.Flags == null) { @@ -420,29 +419,29 @@ namespace BinaryObjectScanner.Printing } else { - builder.AppendLine($" Reserved 0: {partitionHeader.Flags.Reserved0} (0x{partitionHeader.Flags.Reserved0:X})"); - builder.AppendLine($" Reserved 1: {partitionHeader.Flags.Reserved1} (0x{partitionHeader.Flags.Reserved1:X})"); - builder.AppendLine($" Reserved 2: {partitionHeader.Flags.Reserved2} (0x{partitionHeader.Flags.Reserved2:X})"); + builder.AppendLine(partitionHeader.Flags.Reserved0, " Reserved 0"); + builder.AppendLine(partitionHeader.Flags.Reserved1, " Reserved 1"); + builder.AppendLine(partitionHeader.Flags.Reserved2, " Reserved 2"); builder.AppendLine($" Crypto method: {partitionHeader.Flags.CryptoMethod} (0x{partitionHeader.Flags.CryptoMethod:X})"); builder.AppendLine($" Content platform: {partitionHeader.Flags.ContentPlatform} (0x{partitionHeader.Flags.ContentPlatform:X})"); builder.AppendLine($" Content type: {partitionHeader.Flags.MediaPlatformIndex} (0x{partitionHeader.Flags.MediaPlatformIndex:X})"); - builder.AppendLine($" Content unit size: {partitionHeader.Flags.ContentUnitSize} (0x{partitionHeader.Flags.ContentUnitSize:X})"); + builder.AppendLine(partitionHeader.Flags.ContentUnitSize, " Content unit size"); builder.AppendLine($" Bitmasks: {partitionHeader.Flags.BitMasks} (0x{partitionHeader.Flags.BitMasks:X})"); } - builder.AppendLine($" Plain region offset, in media units: {partitionHeader.PlainRegionOffsetInMediaUnits} (0x{partitionHeader.PlainRegionOffsetInMediaUnits:X})"); - builder.AppendLine($" Plain region size, in media units: {partitionHeader.PlainRegionSizeInMediaUnits} (0x{partitionHeader.PlainRegionSizeInMediaUnits:X})"); - builder.AppendLine($" Logo region offset, in media units: {partitionHeader.LogoRegionOffsetInMediaUnits} (0x{partitionHeader.LogoRegionOffsetInMediaUnits:X})"); - builder.AppendLine($" Logo region size, in media units: {partitionHeader.LogoRegionSizeInMediaUnits} (0x{partitionHeader.LogoRegionSizeInMediaUnits:X})"); - builder.AppendLine($" ExeFS offset, in media units: {partitionHeader.ExeFSOffsetInMediaUnits} (0x{partitionHeader.ExeFSOffsetInMediaUnits:X})"); - builder.AppendLine($" ExeFS size, in media units: {partitionHeader.ExeFSSizeInMediaUnits} (0x{partitionHeader.ExeFSSizeInMediaUnits:X})"); - builder.AppendLine($" ExeFS hash region size, in media units: {partitionHeader.ExeFSHashRegionSizeInMediaUnits} (0x{partitionHeader.ExeFSHashRegionSizeInMediaUnits:X})"); - builder.AppendLine($" Reserved 3: {(partitionHeader.Reserved3 == null ? "[NULL]" : BitConverter.ToString(partitionHeader.Reserved3).Replace('-', ' '))}"); - builder.AppendLine($" RomFS offset, in media units: {partitionHeader.RomFSOffsetInMediaUnits} (0x{partitionHeader.RomFSOffsetInMediaUnits:X})"); - builder.AppendLine($" RomFS size, in media units: {partitionHeader.RomFSSizeInMediaUnits} (0x{partitionHeader.RomFSSizeInMediaUnits:X})"); - builder.AppendLine($" RomFS hash region size, in media units: {partitionHeader.RomFSHashRegionSizeInMediaUnits} (0x{partitionHeader.RomFSHashRegionSizeInMediaUnits:X})"); - builder.AppendLine($" Reserved 4: {(partitionHeader.Reserved4 == null ? "[NULL]" : BitConverter.ToString(partitionHeader.Reserved4).Replace('-', ' '))}"); - builder.AppendLine($" ExeFS superblock SHA-256 hash: {(partitionHeader.ExeFSSuperblockHash == null ? "[NULL]" : BitConverter.ToString(partitionHeader.ExeFSSuperblockHash).Replace('-', ' '))}"); - builder.AppendLine($" RomFS superblock SHA-256 hash: {(partitionHeader.RomFSSuperblockHash == null ? "[NULL]" : BitConverter.ToString(partitionHeader.RomFSSuperblockHash).Replace('-', ' '))}"); + builder.AppendLine(partitionHeader.PlainRegionOffsetInMediaUnits, " Plain region offset, in media units"); + builder.AppendLine(partitionHeader.PlainRegionSizeInMediaUnits, " Plain region size, in media units"); + builder.AppendLine(partitionHeader.LogoRegionOffsetInMediaUnits, " Logo region offset, in media units"); + builder.AppendLine(partitionHeader.LogoRegionSizeInMediaUnits, " Logo region size, in media units"); + builder.AppendLine(partitionHeader.ExeFSOffsetInMediaUnits, " ExeFS offset, in media units"); + builder.AppendLine(partitionHeader.ExeFSSizeInMediaUnits, " ExeFS size, in media units"); + builder.AppendLine(partitionHeader.ExeFSHashRegionSizeInMediaUnits, " ExeFS hash region offset, in media units"); + builder.AppendLine(partitionHeader.Reserved3, " Reserved 3"); + builder.AppendLine(partitionHeader.RomFSOffsetInMediaUnits, " RomFS offset, in media units"); + builder.AppendLine(partitionHeader.RomFSSizeInMediaUnits, " RomFS size, in media units"); + builder.AppendLine(partitionHeader.RomFSHashRegionSizeInMediaUnits, " RomFS hash region offset, in media units"); + builder.AppendLine(partitionHeader.Reserved4, " Reserved 4"); + builder.AppendLine(partitionHeader.ExeFSSuperblockHash, " ExeFS superblock SHA-256 hash"); + builder.AppendLine(partitionHeader.RomFSSuperblockHash, " RomFS superblock SHA-256 hash"); } builder.AppendLine(); } @@ -462,11 +461,11 @@ namespace BinaryObjectScanner.Printing return; } - builder.AppendLine($" Title ID dependency list: {(metaData.TitleIDDependencyList == null ? "[NULL]" : BitConverter.ToString(metaData.TitleIDDependencyList).Replace('-', ' '))}"); - builder.AppendLine($" Reserved 1: {(metaData.Reserved1 == null ? "[NULL]" : BitConverter.ToString(metaData.Reserved1).Replace('-', ' '))}"); - builder.AppendLine($" Core version: {metaData.CoreVersion} (0x{metaData.CoreVersion:X})"); - builder.AppendLine($" Reserved 2: {(metaData.Reserved2 == null ? "[NULL]" : BitConverter.ToString(metaData.Reserved2).Replace('-', ' '))}"); - builder.AppendLine($" Icon data: {(metaData.IconData == null ? "[NULL]" : BitConverter.ToString(metaData.IconData).Replace('-', ' '))}"); + builder.AppendLine(metaData.TitleIDDependencyList, " Title ID dependency list"); + builder.AppendLine(metaData.Reserved1, " Reserved 1"); + builder.AppendLine(metaData.CoreVersion, " Core version"); + builder.AppendLine(metaData.Reserved2, " Reserved 2"); + builder.AppendLine(metaData.IconData, " Icon data"); builder.AppendLine(); } diff --git a/BinaryObjectScanner.Printing/Extensions.cs b/BinaryObjectScanner.Printing/Extensions.cs index 4e641ee2..20839ee4 100644 --- a/BinaryObjectScanner.Printing/Extensions.cs +++ b/BinaryObjectScanner.Printing/Extensions.cs @@ -6,7 +6,7 @@ namespace BinaryObjectScanner.Printing internal static class Extensions { /// - /// Append a line containing a byte value to a StringBuilder + /// Append a line containing a UInt8[] value to a StringBuilder /// #if NET48 public static StringBuilder AppendLine(this StringBuilder sb, byte[] value, string prefixString) @@ -18,6 +18,84 @@ namespace BinaryObjectScanner.Printing return sb.AppendLine($"{prefixString}: {valueString}"); } + /// + /// Append a line containing a Int16[] value to a StringBuilder + /// +#if NET48 + public static StringBuilder AppendLine(this StringBuilder sb, short[] value, string prefixString) +#else + public static StringBuilder AppendLine(this StringBuilder sb, short[]? value, string prefixString) +#endif + { + string valueString = (value == null ? "[NULL]" : string.Join(", ", value)); + return sb.AppendLine($"{prefixString}: {valueString}"); + } + + /// + /// Append a line containing a UInt16[] value to a StringBuilder + /// +#if NET48 + public static StringBuilder AppendLine(this StringBuilder sb, ushort[] value, string prefixString) +#else + public static StringBuilder AppendLine(this StringBuilder sb, ushort[]? value, string prefixString) +#endif + { + string valueString = (value == null ? "[NULL]" : string.Join(", ", value)); + return sb.AppendLine($"{prefixString}: {valueString}"); + } + + /// + /// Append a line containing a Int32[] value to a StringBuilder + /// +#if NET48 + public static StringBuilder AppendLine(this StringBuilder sb, int[] value, string prefixString) +#else + public static StringBuilder AppendLine(this StringBuilder sb, int[]? value, string prefixString) +#endif + { + string valueString = (value == null ? "[NULL]" : string.Join(", ", value)); + return sb.AppendLine($"{prefixString}: {valueString}"); + } + + /// + /// Append a line containing a UInt32[] value to a StringBuilder + /// +#if NET48 + public static StringBuilder AppendLine(this StringBuilder sb, uint[] value, string prefixString) +#else + public static StringBuilder AppendLine(this StringBuilder sb, uint[]? value, string prefixString) +#endif + { + string valueString = (value == null ? "[NULL]" : string.Join(", ", value)); + return sb.AppendLine($"{prefixString}: {valueString}"); + } + + /// + /// Append a line containing a Int64[] value to a StringBuilder + /// +#if NET48 + public static StringBuilder AppendLine(this StringBuilder sb, long[] value, string prefixString) +#else + public static StringBuilder AppendLine(this StringBuilder sb, long[]? value, string prefixString) +#endif + { + string valueString = (value == null ? "[NULL]" : string.Join(", ", value)); + return sb.AppendLine($"{prefixString}: {valueString}"); + } + + /// + /// Append a line containing a UInt64[] value to a StringBuilder + /// +#if NET48 + public static StringBuilder AppendLine(this StringBuilder sb, ulong[] value, string prefixString) +#else + public static StringBuilder AppendLine(this StringBuilder sb, ulong[]? value, string prefixString) +#endif + { + string valueString = (value == null ? "[NULL]" : string.Join(", ", value)); + return sb.AppendLine($"{prefixString}: {valueString}"); + } + /// /// Append a line containing a Int8 to a StringBuilder /// @@ -170,5 +248,24 @@ namespace BinaryObjectScanner.Printing string valueString = value ?? "[NULL]"; return sb.AppendLine($"{prefixString}: {valueString}"); } + + /// + /// Append a line containing a Guid to a StringBuilder + /// +#if NET48 + public static StringBuilder AppendLine(this StringBuilder sb, Guid value, string prefixString) +#else + public static StringBuilder AppendLine(this StringBuilder sb, Guid? value, string prefixString) +#endif + { +#if NET48 + string valueString = value.ToString(); +#else + value ??= Guid.Empty; + string valueString = value.Value.ToString(); +#endif + + return sb.AppendLine($"{prefixString}: {value}"); + } } } \ No newline at end of file diff --git a/BinaryObjectScanner.Printing/GCF.cs b/BinaryObjectScanner.Printing/GCF.cs index 0570ed7b..af148f02 100644 --- a/BinaryObjectScanner.Printing/GCF.cs +++ b/BinaryObjectScanner.Printing/GCF.cs @@ -62,17 +62,17 @@ namespace BinaryObjectScanner.Printing return; } - builder.AppendLine($" Dummy 0: {header.Dummy0} (0x{header.Dummy0:X})"); - builder.AppendLine($" Major version: {header.MajorVersion} (0x{header.MajorVersion:X})"); - builder.AppendLine($" Minor version: {header.MinorVersion} (0x{header.MinorVersion:X})"); - builder.AppendLine($" Cache ID: {header.CacheID} (0x{header.CacheID:X})"); - builder.AppendLine($" Last version played: {header.LastVersionPlayed} (0x{header.LastVersionPlayed:X})"); - builder.AppendLine($" Dummy 1: {header.Dummy1} (0x{header.Dummy1:X})"); - builder.AppendLine($" Dummy 2: {header.Dummy2} (0x{header.Dummy2:X})"); - builder.AppendLine($" File size: {header.FileSize} (0x{header.FileSize:X})"); - builder.AppendLine($" Block size: {header.BlockSize} (0x{header.BlockSize:X})"); - builder.AppendLine($" Block count: {header.BlockCount} (0x{header.BlockCount:X})"); - builder.AppendLine($" Dummy 3: {header.Dummy3} (0x{header.Dummy3:X})"); + builder.AppendLine(header.Dummy0, " Dummy 0"); + builder.AppendLine(header.MajorVersion, " Major version"); + builder.AppendLine(header.MinorVersion, " Minor version"); + builder.AppendLine(header.CacheID, " Cache ID"); + builder.AppendLine(header.LastVersionPlayed, " Last version played"); + builder.AppendLine(header.Dummy1, " Dummy 1"); + builder.AppendLine(header.Dummy2, " Dummy 2"); + builder.AppendLine(header.FileSize, " File size"); + builder.AppendLine(header.BlockSize, " Block size"); + builder.AppendLine(header.BlockCount, " Block count"); + builder.AppendLine(header.Dummy3, " Dummy 3"); builder.AppendLine(); } @@ -91,14 +91,14 @@ namespace BinaryObjectScanner.Printing return; } - builder.AppendLine($" Block count: {header.BlockCount} (0x{header.BlockCount:X})"); - builder.AppendLine($" Blocks used: {header.BlocksUsed} (0x{header.BlocksUsed:X})"); - builder.AppendLine($" Dummy 0: {header.Dummy0} (0x{header.Dummy0:X})"); - builder.AppendLine($" Dummy 1: {header.Dummy1} (0x{header.Dummy1:X})"); - builder.AppendLine($" Dummy 2: {header.Dummy2} (0x{header.Dummy2:X})"); - builder.AppendLine($" Dummy 3: {header.Dummy3} (0x{header.Dummy3:X})"); - builder.AppendLine($" Dummy 4: {header.Dummy4} (0x{header.Dummy4:X})"); - builder.AppendLine($" Checksum: {header.Checksum} (0x{header.Checksum:X})"); + builder.AppendLine(header.BlockCount, " Block count"); + builder.AppendLine(header.BlocksUsed, " Blocks used"); + builder.AppendLine(header.Dummy0, " Dummy 0"); + builder.AppendLine(header.Dummy1, " Dummy 1"); + builder.AppendLine(header.Dummy2, " Dummy 2"); + builder.AppendLine(header.Dummy3, " Dummy 3"); + builder.AppendLine(header.Dummy4, " Dummy 4"); + builder.AppendLine(header.Checksum, " Checksum"); builder.AppendLine(); } @@ -127,13 +127,13 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Entry flags: {entry.EntryFlags} (0x{entry.EntryFlags:X})"); - builder.AppendLine($" File data offset: {entry.FileDataOffset} (0x{entry.FileDataOffset:X})"); - builder.AppendLine($" File data size: {entry.FileDataSize} (0x{entry.FileDataSize:X})"); - builder.AppendLine($" First data block index: {entry.FirstDataBlockIndex} (0x{entry.FirstDataBlockIndex:X})"); - builder.AppendLine($" Next block entry index: {entry.NextBlockEntryIndex} (0x{entry.NextBlockEntryIndex:X})"); - builder.AppendLine($" Previous block entry index: {entry.PreviousBlockEntryIndex} (0x{entry.PreviousBlockEntryIndex:X})"); - builder.AppendLine($" Directory index: {entry.DirectoryIndex} (0x{entry.DirectoryIndex:X})"); + builder.AppendLine(entry.EntryFlags, " Entry flags"); + builder.AppendLine(entry.FileDataOffset, " File data offset"); + builder.AppendLine(entry.FileDataSize, " File data size"); + builder.AppendLine(entry.FirstDataBlockIndex, " First data block index"); + builder.AppendLine(entry.NextBlockEntryIndex, " Next block entry index"); + builder.AppendLine(entry.PreviousBlockEntryIndex, " Previous block entry index"); + builder.AppendLine(entry.DirectoryIndex, " Directory index"); } builder.AppendLine(); } @@ -153,10 +153,10 @@ namespace BinaryObjectScanner.Printing return; } - builder.AppendLine($" Block count: {header.BlockCount} (0x{header.BlockCount:X})"); - builder.AppendLine($" First unused entry: {header.FirstUnusedEntry} (0x{header.FirstUnusedEntry:X})"); - builder.AppendLine($" Terminator: {header.Terminator} (0x{header.Terminator:X})"); - builder.AppendLine($" Checksum: {header.Checksum} (0x{header.Checksum:X})"); + builder.AppendLine(header.BlockCount, " Block count"); + builder.AppendLine(header.FirstUnusedEntry, " First unused entry"); + builder.AppendLine(header.Terminator, " Terminator"); + builder.AppendLine(header.Checksum, " Checksum"); builder.AppendLine(); } @@ -185,7 +185,7 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Next data block index: {entry.NextDataBlockIndex} (0x{entry.NextDataBlockIndex:X})"); + builder.AppendLine(entry.NextDataBlockIndex, " Next data block index"); } builder.AppendLine(); } @@ -200,16 +200,16 @@ namespace BinaryObjectScanner.Printing builder.AppendLine(" -------------------------"); if (header == null) { - builder.AppendLine($" No block entry map header"); + builder.AppendLine(" No block entry map header"); builder.AppendLine(); return; } - builder.AppendLine($" Block count: {header.BlockCount} (0x{header.BlockCount:X})"); - builder.AppendLine($" First block entry index: {header.FirstBlockEntryIndex} (0x{header.FirstBlockEntryIndex:X})"); - builder.AppendLine($" Last block entry index: {header.LastBlockEntryIndex} (0x{header.LastBlockEntryIndex:X})"); - builder.AppendLine($" Dummy 0: {header.Dummy0} (0x{header.Dummy0:X})"); - builder.AppendLine($" Checksum: {header.Checksum} (0x{header.Checksum:X})"); + builder.AppendLine(header.BlockCount, " Block count"); + builder.AppendLine(header.FirstBlockEntryIndex, " First block entry index"); + builder.AppendLine(header.LastBlockEntryIndex, " Last block entry index"); + builder.AppendLine(header.Dummy0, " Dummy 0"); + builder.AppendLine(header.Checksum, " Checksum"); builder.AppendLine(); } @@ -238,8 +238,8 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Previous data block index: {entry.PreviousBlockEntryIndex} (0x{entry.PreviousBlockEntryIndex:X})"); - builder.AppendLine($" Next data block index: {entry.NextBlockEntryIndex} (0x{entry.NextBlockEntryIndex:X})"); + builder.AppendLine(entry.PreviousBlockEntryIndex, " Previous data block index"); + builder.AppendLine(entry.NextBlockEntryIndex, " Next data block index"); } builder.AppendLine(); } @@ -259,20 +259,20 @@ namespace BinaryObjectScanner.Printing return; } - builder.AppendLine($" Dummy 0: {header.Dummy0} (0x{header.Dummy0:X})"); - builder.AppendLine($" Cache ID: {header.CacheID} (0x{header.CacheID:X})"); - builder.AppendLine($" Last version played: {header.LastVersionPlayed} (0x{header.LastVersionPlayed:X})"); - builder.AppendLine($" Item count: {header.ItemCount} (0x{header.ItemCount:X})"); - builder.AppendLine($" File count: {header.FileCount} (0x{header.FileCount:X})"); - builder.AppendLine($" Dummy 1: {header.Dummy1} (0x{header.Dummy1:X})"); - builder.AppendLine($" Directory size: {header.DirectorySize} (0x{header.DirectorySize:X})"); - builder.AppendLine($" Name size: {header.NameSize} (0x{header.NameSize:X})"); - builder.AppendLine($" Info 1 count: {header.Info1Count} (0x{header.Info1Count:X})"); - builder.AppendLine($" Copy count: {header.CopyCount} (0x{header.CopyCount:X})"); - builder.AppendLine($" Local count: {header.LocalCount} (0x{header.LocalCount:X})"); - builder.AppendLine($" Dummy 2: {header.Dummy2} (0x{header.Dummy2:X})"); - builder.AppendLine($" Dummy 3: {header.Dummy3} (0x{header.Dummy3:X})"); - builder.AppendLine($" Checksum: {header.Checksum} (0x{header.Checksum:X})"); + builder.AppendLine(header.Dummy0, " Dummy 0"); + builder.AppendLine(header.CacheID, " Cache ID"); + builder.AppendLine(header.LastVersionPlayed, " Last version played"); + builder.AppendLine(header.ItemCount, " Item count"); + builder.AppendLine(header.FileCount, " File count"); + builder.AppendLine(header.Dummy1, " Dummy 1"); + builder.AppendLine(header.DirectorySize, " Directory size"); + builder.AppendLine(header.NameSize, " Name size"); + builder.AppendLine(header.Info1Count, " Info 1 count"); + builder.AppendLine(header.CopyCount, " Copy count"); + builder.AppendLine(header.LocalCount, " Local count"); + builder.AppendLine(header.Dummy2, " Dummy 2"); + builder.AppendLine(header.Dummy3, " Dummy 3"); + builder.AppendLine(header.Checksum, " Checksum"); builder.AppendLine(); } @@ -301,14 +301,14 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Name offset: {entry.NameOffset} (0x{entry.NameOffset:X})"); - builder.AppendLine($" Name: {entry.Name ?? "[NULL]"}"); - builder.AppendLine($" Item size: {entry.ItemSize} (0x{entry.ItemSize:X})"); - builder.AppendLine($" Checksum index: {entry.ChecksumIndex} (0x{entry.ChecksumIndex:X})"); + builder.AppendLine(entry.NameOffset, " Name offset"); + builder.AppendLine(entry.Name, " Name"); + builder.AppendLine(entry.ItemSize, " Item size"); + builder.AppendLine(entry.ChecksumIndex, " Checksum index"); builder.AppendLine($" Directory flags: {entry.DirectoryFlags} (0x{entry.DirectoryFlags:X})"); - builder.AppendLine($" Parent index: {entry.ParentIndex} (0x{entry.ParentIndex:X})"); - builder.AppendLine($" Next index: {entry.NextIndex} (0x{entry.NextIndex:X})"); - builder.AppendLine($" First index: {entry.FirstIndex} (0x{entry.FirstIndex:X})"); + builder.AppendLine(entry.ParentIndex, " Parent index"); + builder.AppendLine(entry.NextIndex, " Next index"); + builder.AppendLine(entry.FirstIndex, " First index"); } builder.AppendLine(); } @@ -338,7 +338,7 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Dummy 0: {entry.Dummy0} (0x{entry.Dummy0:X})"); + builder.AppendLine(entry.Dummy0, " Dummy 0"); } builder.AppendLine(); } @@ -368,7 +368,7 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Dummy 0: {entry.Dummy0} (0x{entry.Dummy0:X})"); + builder.AppendLine(entry.Dummy0, " Dummy 0"); } builder.AppendLine(); } @@ -398,7 +398,7 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Directory index: {entry.DirectoryIndex} (0x{entry.DirectoryIndex:X})"); + builder.AppendLine(entry.DirectoryIndex, " Directory index"); } builder.AppendLine(); } @@ -428,7 +428,7 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Directory index: {entry.DirectoryIndex} (0x{entry.DirectoryIndex:X})"); + builder.AppendLine(entry.DirectoryIndex, " Directory index"); } builder.AppendLine(); } @@ -443,13 +443,13 @@ namespace BinaryObjectScanner.Printing builder.AppendLine(" -------------------------"); if (header == null) { - builder.AppendLine($" No directory map header"); + builder.AppendLine(" No directory map header"); builder.AppendLine(); return; } - builder.AppendLine($" Dummy 0: {header.Dummy0} (0x{header.Dummy0:X})"); - builder.AppendLine($" Dummy 1: {header.Dummy1} (0x{header.Dummy1:X})"); + builder.AppendLine(header.Dummy0, " Dummy 0"); + builder.AppendLine(header.Dummy1, " Dummy 1"); builder.AppendLine(); } @@ -478,7 +478,7 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" First block index: {entry.FirstBlockIndex} (0x{entry.FirstBlockIndex:X})"); + builder.AppendLine(entry.FirstBlockIndex, " First block index"); } builder.AppendLine(); } @@ -498,8 +498,8 @@ namespace BinaryObjectScanner.Printing return; } - builder.AppendLine($" Dummy 0: {header.Dummy0} (0x{header.Dummy0:X})"); - builder.AppendLine($" Checksum size: {header.ChecksumSize} (0x{header.ChecksumSize:X})"); + builder.AppendLine(header.Dummy0, " Dummy 0"); + builder.AppendLine(header.ChecksumSize, " Checksum size"); builder.AppendLine(); } @@ -518,10 +518,10 @@ namespace BinaryObjectScanner.Printing return; } - builder.AppendLine($" Dummy 0: {header.Dummy0} (0x{header.Dummy0:X})"); - builder.AppendLine($" Dummy 1: {header.Dummy1} (0x{header.Dummy1:X})"); - builder.AppendLine($" Item count: {header.ItemCount} (0x{header.ItemCount:X})"); - builder.AppendLine($" Checksum count: {header.ChecksumCount} (0x{header.ChecksumCount:X})"); + builder.AppendLine(header.Dummy0, " Dummy 0"); + builder.AppendLine(header.Dummy1, " Dummy 1"); + builder.AppendLine(header.ItemCount, " Item count"); + builder.AppendLine(header.ChecksumCount, " Checksum count"); builder.AppendLine(); } @@ -550,8 +550,8 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Checksum count: {entry.ChecksumCount} (0x{entry.ChecksumCount:X})"); - builder.AppendLine($" First checksum index: {entry.FirstChecksumIndex} (0x{entry.FirstChecksumIndex:X})"); + builder.AppendLine(entry.ChecksumCount, " Checksum count"); + builder.AppendLine(entry.FirstChecksumIndex, " First checksum index"); } builder.AppendLine(); } @@ -581,7 +581,7 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Checksum: {entry.Checksum} (0x{entry.Checksum:X})"); + builder.AppendLine(entry.Checksum, " Checksum"); } builder.AppendLine(); } @@ -601,12 +601,12 @@ namespace BinaryObjectScanner.Printing return; } - builder.AppendLine($" Last version played: {header.LastVersionPlayed} (0x{header.LastVersionPlayed:X})"); - builder.AppendLine($" Block count: {header.BlockCount} (0x{header.BlockCount:X})"); - builder.AppendLine($" Block size: {header.BlockSize} (0x{header.BlockSize:X})"); - builder.AppendLine($" First block offset: {header.FirstBlockOffset} (0x{header.FirstBlockOffset:X})"); - builder.AppendLine($" Blocks used: {header.BlocksUsed} (0x{header.BlocksUsed:X})"); - builder.AppendLine($" Checksum: {header.Checksum} (0x{header.Checksum:X})"); + builder.AppendLine(header.LastVersionPlayed, " Last version played"); + builder.AppendLine(header.BlockCount, " Block count"); + builder.AppendLine(header.BlockSize, " Block size"); + builder.AppendLine(header.FirstBlockOffset, " First block offset"); + builder.AppendLine(header.BlocksUsed, " Blocks used"); + builder.AppendLine(header.Checksum, " Checksum"); builder.AppendLine(); } } diff --git a/BinaryObjectScanner.Printing/InstallShieldCabinet.cs b/BinaryObjectScanner.Printing/InstallShieldCabinet.cs index cbdaa034..972fcc06 100644 --- a/BinaryObjectScanner.Printing/InstallShieldCabinet.cs +++ b/BinaryObjectScanner.Printing/InstallShieldCabinet.cs @@ -75,11 +75,11 @@ namespace BinaryObjectScanner.Printing return; } - builder.AppendLine($" Signature: {header.Signature}"); + builder.AppendLine(header.Signature, " Signature"); builder.AppendLine($" Version: {header.Version} (0x{header.Version:X}) [{majorVersion}]"); - builder.AppendLine($" Volume info: {header.VolumeInfo} (0x{header.VolumeInfo:X})"); - builder.AppendLine($" Descriptor offset: {header.DescriptorOffset} (0x{header.DescriptorOffset:X})"); - builder.AppendLine($" Descriptor size: {header.DescriptorSize} (0x{header.DescriptorSize:X})"); + builder.AppendLine(header.VolumeInfo, " Volume info"); + builder.AppendLine(header.DescriptorOffset, " Descriptor offset"); + builder.AppendLine(header.DescriptorSize, " Descriptor size"); builder.AppendLine(); } @@ -100,34 +100,34 @@ namespace BinaryObjectScanner.Printing if (majorVersion <= 5) { - builder.AppendLine($" Data offset: {header.DataOffset} (0x{header.DataOffset:X})"); - builder.AppendLine($" First file index: {header.FirstFileIndex} (0x{header.FirstFileIndex:X})"); - builder.AppendLine($" Last file index: {header.LastFileIndex} (0x{header.LastFileIndex:X})"); - builder.AppendLine($" First file offset: {header.FirstFileOffset} (0x{header.FirstFileOffset:X})"); - builder.AppendLine($" First file size expanded: {header.FirstFileSizeExpanded} (0x{header.FirstFileSizeExpanded:X})"); - builder.AppendLine($" First file size compressed: {header.FirstFileSizeCompressed} (0x{header.FirstFileSizeCompressed:X})"); - builder.AppendLine($" Last file offset: {header.LastFileOffset} (0x{header.LastFileOffset:X})"); - builder.AppendLine($" Last file size expanded: {header.LastFileSizeExpanded} (0x{header.LastFileSizeExpanded:X})"); - builder.AppendLine($" Last file size compressed: {header.LastFileSizeCompressed} (0x{header.LastFileSizeCompressed:X})"); + builder.AppendLine(header.DataOffset, " Data offset"); + builder.AppendLine(header.FirstFileIndex, " First file index"); + builder.AppendLine(header.LastFileIndex, " Last file index"); + builder.AppendLine(header.FirstFileOffset, " First file offset"); + builder.AppendLine(header.FirstFileSizeExpanded, " First file size expanded"); + builder.AppendLine(header.FirstFileSizeCompressed, " First file size compressed"); + builder.AppendLine(header.LastFileOffset, " Last file offset"); + builder.AppendLine(header.LastFileSizeExpanded, " Last file size expanded"); + builder.AppendLine(header.LastFileSizeCompressed, " Last file size compressed"); } else { - builder.AppendLine($" Data offset: {header.DataOffset} (0x{header.DataOffset:X})"); - builder.AppendLine($" Data offset high: {header.DataOffsetHigh} (0x{header.DataOffsetHigh:X})"); - builder.AppendLine($" First file index: {header.FirstFileIndex} (0x{header.FirstFileIndex:X})"); - builder.AppendLine($" Last file index: {header.LastFileIndex} (0x{header.LastFileIndex:X})"); - builder.AppendLine($" First file offset: {header.FirstFileOffset} (0x{header.FirstFileOffset:X})"); - builder.AppendLine($" First file offset high: {header.FirstFileOffsetHigh} (0x{header.FirstFileOffsetHigh:X})"); - builder.AppendLine($" First file size expanded: {header.FirstFileSizeExpanded} (0x{header.FirstFileSizeExpanded:X})"); - builder.AppendLine($" First file size expanded high: {header.FirstFileSizeExpandedHigh} (0x{header.FirstFileSizeExpandedHigh:X})"); - builder.AppendLine($" First file size compressed: {header.FirstFileSizeCompressed} (0x{header.FirstFileSizeCompressed:X})"); - builder.AppendLine($" First file size compressed high: {header.FirstFileSizeCompressedHigh} (0x{header.FirstFileSizeCompressedHigh:X})"); - builder.AppendLine($" Last file offset: {header.LastFileOffset} (0x{header.LastFileOffset:X})"); - builder.AppendLine($" Last file offset high: {header.LastFileOffsetHigh} (0x{header.LastFileOffsetHigh:X})"); - builder.AppendLine($" Last file size expanded: {header.LastFileSizeExpanded} (0x{header.LastFileSizeExpanded:X})"); - builder.AppendLine($" Last file size expanded high: {header.LastFileSizeExpandedHigh} (0x{header.LastFileSizeExpandedHigh:X})"); - builder.AppendLine($" Last file size compressed: {header.LastFileSizeCompressed} (0x{header.LastFileSizeCompressed:X})"); - builder.AppendLine($" Last file size compressed high: {header.LastFileSizeCompressedHigh} (0x{header.LastFileSizeCompressedHigh:X})"); + builder.AppendLine(header.DataOffset, " Data offset"); + builder.AppendLine(header.DataOffsetHigh, " Data offset high"); + builder.AppendLine(header.FirstFileIndex, " First file index"); + builder.AppendLine(header.LastFileIndex, " Last file index"); + builder.AppendLine(header.FirstFileOffset, " First file offset"); + builder.AppendLine(header.FirstFileOffsetHigh, " First file offset high"); + builder.AppendLine(header.FirstFileSizeExpanded, " First file size expanded"); + builder.AppendLine(header.FirstFileSizeExpandedHigh, " First file size expanded high"); + builder.AppendLine(header.FirstFileSizeCompressed, " First file size compressed"); + builder.AppendLine(header.FirstFileSizeCompressedHigh, " First file size compressed high"); + builder.AppendLine(header.LastFileOffset, " Last file offset"); + builder.AppendLine(header.LastFileOffsetHigh, " Last file offset high"); + builder.AppendLine(header.LastFileSizeExpanded, " Last file size expanded"); + builder.AppendLine(header.LastFileSizeExpandedHigh, " Last file size expanded high"); + builder.AppendLine(header.LastFileSizeCompressed, " Last file size compressed"); + builder.AppendLine(header.LastFileSizeCompressedHigh, " Last file size compressed high"); } builder.AppendLine(); } @@ -147,26 +147,26 @@ namespace BinaryObjectScanner.Printing return; } - builder.AppendLine($" Strings offset: {descriptor.StringsOffset} (0x{descriptor.StringsOffset:X})"); - builder.AppendLine($" Reserved 0: {(descriptor.Reserved0 == null ? "[NULL]" : BitConverter.ToString(descriptor.Reserved0).Replace('-', ' '))}"); - builder.AppendLine($" Component list offset: {descriptor.ComponentListOffset} (0x{descriptor.ComponentListOffset:X})"); - builder.AppendLine($" File table offset: {descriptor.FileTableOffset} (0x{descriptor.FileTableOffset:X})"); - builder.AppendLine($" Reserved 1: {(descriptor.Reserved1 == null ? "[NULL]" : BitConverter.ToString(descriptor.Reserved1).Replace('-', ' '))}"); - builder.AppendLine($" File table size: {descriptor.FileTableSize} (0x{descriptor.FileTableSize:X})"); - builder.AppendLine($" File table size 2: {descriptor.FileTableSize2} (0x{descriptor.FileTableSize2:X})"); - builder.AppendLine($" Directory count: {descriptor.DirectoryCount} (0x{descriptor.DirectoryCount:X})"); - builder.AppendLine($" Reserved 2: {(descriptor.Reserved2 == null ? "[NULL]" : BitConverter.ToString(descriptor.Reserved2).Replace('-', ' '))}"); - builder.AppendLine($" Reserved 3: {(descriptor.Reserved3 == null ? "[NULL]" : BitConverter.ToString(descriptor.Reserved3).Replace('-', ' '))}"); - builder.AppendLine($" Reserved 4: {(descriptor.Reserved4 == null ? "[NULL]" : BitConverter.ToString(descriptor.Reserved4).Replace('-', ' '))}"); - builder.AppendLine($" File count: {descriptor.FileCount} (0x{descriptor.FileCount:X})"); - builder.AppendLine($" File table offset 2: {descriptor.FileTableOffset2} (0x{descriptor.FileTableOffset2:X})"); - builder.AppendLine($" Component table info count: {descriptor.ComponentTableInfoCount} (0x{descriptor.ComponentTableInfoCount:X})"); - builder.AppendLine($" Component table offset: {descriptor.ComponentTableOffset} (0x{descriptor.ComponentTableOffset:X})"); - builder.AppendLine($" Reserved 5: {(descriptor.Reserved5 == null ? "[NULL]" : BitConverter.ToString(descriptor.Reserved5).Replace('-', ' '))}"); - builder.AppendLine($" Reserved 6: {(descriptor.Reserved6 == null ? "[NULL]" : BitConverter.ToString(descriptor.Reserved6).Replace('-', ' '))}"); + builder.AppendLine(descriptor.StringsOffset, " Strings offset"); + builder.AppendLine(descriptor.Reserved0, " Reserved 0"); + builder.AppendLine(descriptor.ComponentListOffset, " Component list offset"); + builder.AppendLine(descriptor.FileTableOffset, " File table offset"); + builder.AppendLine(descriptor.Reserved1, " Reserved 1"); + builder.AppendLine(descriptor.FileTableSize, " File table size"); + builder.AppendLine(descriptor.FileTableSize2, " File table size 2"); + builder.AppendLine(descriptor.DirectoryCount, " Directory count"); + builder.AppendLine(descriptor.Reserved2, " Reserved 2"); + builder.AppendLine(descriptor.Reserved3, " Reserved 3"); + builder.AppendLine(descriptor.Reserved4, " Reserved 4"); + builder.AppendLine(descriptor.FileCount, " File count"); + builder.AppendLine(descriptor.FileTableOffset2, " File table offset 2"); + builder.AppendLine(descriptor.ComponentTableInfoCount, " Component table info count"); + builder.AppendLine(descriptor.ComponentTableOffset, " Component table offset"); + builder.AppendLine(descriptor.Reserved5, " Reserved 5"); + builder.AppendLine(descriptor.Reserved6, " Reserved 6"); builder.AppendLine(); - builder.AppendLine($" File group offsets:"); + builder.AppendLine(" File group offsets:"); builder.AppendLine(" -------------------------"); if (descriptor.FileGroupOffsets == null || descriptor.FileGroupOffsets.Length == 0) { @@ -176,12 +176,12 @@ namespace BinaryObjectScanner.Printing { for (int i = 0; i < descriptor.FileGroupOffsets.Length; i++) { - builder.AppendLine($" File Group Offset {i}: {descriptor.FileGroupOffsets[i]} (0x{descriptor.FileGroupOffsets[i]:X})"); + builder.AppendLine(descriptor.FileGroupOffsets[i], $" File Group Offset {i}"); } } builder.AppendLine(); - builder.AppendLine($" Component offsets:"); + builder.AppendLine(" Component offsets:"); builder.AppendLine(" -------------------------"); if (descriptor.ComponentOffsets == null || descriptor.ComponentOffsets.Length == 0) { @@ -191,15 +191,15 @@ namespace BinaryObjectScanner.Printing { for (int i = 0; i < descriptor.ComponentOffsets.Length; i++) { - builder.AppendLine($" Component Offset {i}: {descriptor.ComponentOffsets[i]} (0x{descriptor.ComponentOffsets[i]:X})"); + builder.AppendLine(descriptor.ComponentOffsets[i], $" Component Offset {i}"); } } builder.AppendLine(); - builder.AppendLine($" Setup types offset: {descriptor.SetupTypesOffset} (0x{descriptor.SetupTypesOffset:X})"); - builder.AppendLine($" Setup table offset: {descriptor.SetupTableOffset} (0x{descriptor.SetupTableOffset:X})"); - builder.AppendLine($" Reserved 7: {(descriptor.Reserved7 == null ? "[NULL]" : BitConverter.ToString(descriptor.Reserved7).Replace('-', ' '))}"); - builder.AppendLine($" Reserved 8: {(descriptor.Reserved8 == null ? "[NULL]" : BitConverter.ToString(descriptor.Reserved8).Replace('-', ' '))}"); + builder.AppendLine(descriptor.SetupTypesOffset, " Setup types offset"); + builder.AppendLine(descriptor.SetupTableOffset, " Setup table offset"); + builder.AppendLine(descriptor.Reserved7, " Reserved 7"); + builder.AppendLine(descriptor.Reserved8, " Reserved 8"); builder.AppendLine(); } @@ -220,7 +220,7 @@ namespace BinaryObjectScanner.Printing for (int i = 0; i < entries.Length; i++) { - builder.AppendLine($" File Descriptor Offset {i}: {entries[i]} (0x{entries[i]:X})"); + builder.AppendLine(entries[i], $" File Descriptor Offset {i}"); } builder.AppendLine(); } @@ -242,7 +242,7 @@ namespace BinaryObjectScanner.Printing for (int i = 0; i < entries.Length; i++) { - builder.AppendLine($" Directory Name {i}: {entries[i] ?? "[NULL]"}"); + builder.AppendLine(entries[i], $" Directory Name {i}"); } builder.AppendLine(); } @@ -272,17 +272,17 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Name offset: {entry.NameOffset} (0x{entry.NameOffset:X})"); - builder.AppendLine($" Name: {entry.Name ?? "[NULL]"}"); - builder.AppendLine($" Directory index: {entry.DirectoryIndex} (0x{entry.DirectoryIndex:X})"); + builder.AppendLine(entry.NameOffset, " Name offset"); + builder.AppendLine(entry.Name, " Name"); + builder.AppendLine(entry.DirectoryIndex, " Directory index"); builder.AppendLine($" Flags: {entry.Flags} (0x{entry.Flags:X})"); - builder.AppendLine($" Expanded size: {entry.ExpandedSize} (0x{entry.ExpandedSize:X})"); - builder.AppendLine($" Compressed size: {entry.CompressedSize} (0x{entry.CompressedSize:X})"); - builder.AppendLine($" Data offset: {entry.DataOffset} (0x{entry.DataOffset:X})"); - builder.AppendLine($" MD5: {(entry.MD5 == null ? "[NULL]" : BitConverter.ToString(entry.MD5).Replace('-', ' '))}"); - builder.AppendLine($" Volume: {entry.Volume} (0x{entry.Volume:X})"); - builder.AppendLine($" Link previous: {entry.LinkPrevious} (0x{entry.LinkPrevious:X})"); - builder.AppendLine($" Link next: {entry.LinkNext} (0x{entry.LinkNext:X})"); + builder.AppendLine(entry.ExpandedSize, " Expanded size"); + builder.AppendLine(entry.CompressedSize, " Compressed size"); + builder.AppendLine(entry.DataOffset, " Data offset"); + builder.AppendLine(entry.MD5, " MD5"); + builder.AppendLine(entry.Volume, " Volume"); + builder.AppendLine(entry.LinkPrevious, " Link previous"); + builder.AppendLine(entry.LinkNext, " Link next"); builder.AppendLine($" Link flags: {entry.LinkFlags} (0x{entry.LinkFlags:X})"); } builder.AppendLine(); @@ -315,10 +315,10 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Name offset: {value.NameOffset} (0x{value.NameOffset:X})"); - builder.AppendLine($" Name: {value.Name ?? "[NULL]"}"); - builder.AppendLine($" Descriptor offset: {value.DescriptorOffset} (0x{value.DescriptorOffset:X})"); - builder.AppendLine($" Next offset: {value.NextOffset} (0x{value.NextOffset:X})"); + builder.AppendLine(value.NameOffset, " Name offset"); + builder.AppendLine(value.Name, " Name"); + builder.AppendLine(value.DescriptorOffset, " Descriptor offset"); + builder.AppendLine(value.NextOffset, " Next offset"); } builder.AppendLine(); } @@ -344,34 +344,34 @@ namespace BinaryObjectScanner.Printing builder.AppendLine($" File Group {i}:"); if (fileGroup == null) { - builder.AppendLine($" Unassigned file group"); + builder.AppendLine(" Unassigned file group"); continue; } - builder.AppendLine($" Name offset: {fileGroup.NameOffset} (0x{fileGroup.NameOffset:X})"); - builder.AppendLine($" Name: {fileGroup.Name ?? "[NULL]"}"); - builder.AppendLine($" Expanded size: {fileGroup.ExpandedSize} (0x{fileGroup.ExpandedSize:X})"); - builder.AppendLine($" Reserved 0: {(fileGroup.Reserved0 == null ? "[NULL]" : BitConverter.ToString(fileGroup.Reserved0).Replace('-', ' '))}"); - builder.AppendLine($" Compressed size: {fileGroup.CompressedSize} (0x{fileGroup.CompressedSize:X})"); - builder.AppendLine($" Reserved 1: {(fileGroup.Reserved1 == null ? "[NULL]" : BitConverter.ToString(fileGroup.Reserved1).Replace('-', ' '))}"); - builder.AppendLine($" Reserved 2: {(fileGroup.Reserved2 == null ? "[NULL]" : BitConverter.ToString(fileGroup.Reserved2).Replace('-', ' '))}"); - builder.AppendLine($" Attribute 1: {fileGroup.Attribute1} (0x{fileGroup.Attribute1:X})"); - builder.AppendLine($" Attribute 2: {fileGroup.Attribute2} (0x{fileGroup.Attribute2:X})"); - builder.AppendLine($" First file: {fileGroup.FirstFile} (0x{fileGroup.FirstFile:X})"); - builder.AppendLine($" Last file: {fileGroup.LastFile} (0x{fileGroup.LastFile:X})"); - builder.AppendLine($" Unknown offset: {fileGroup.UnknownOffset} (0x{fileGroup.UnknownOffset:X})"); - builder.AppendLine($" Var 4 offset: {fileGroup.Var4Offset} (0x{fileGroup.Var4Offset:X})"); - builder.AppendLine($" Var 1 offset: {fileGroup.Var1Offset} (0x{fileGroup.Var1Offset:X})"); - builder.AppendLine($" HTTP location offset: {fileGroup.HTTPLocationOffset} (0x{fileGroup.HTTPLocationOffset:X})"); - builder.AppendLine($" FTP location offset: {fileGroup.FTPLocationOffset} (0x{fileGroup.FTPLocationOffset:X})"); - builder.AppendLine($" Misc. offset: {fileGroup.MiscOffset} (0x{fileGroup.MiscOffset:X})"); - builder.AppendLine($" Var 2 offset: {fileGroup.Var2Offset} (0x{fileGroup.Var2Offset:X})"); - builder.AppendLine($" Target directory offset: {fileGroup.TargetDirectoryOffset} (0x{fileGroup.TargetDirectoryOffset:X})"); - builder.AppendLine($" Reserved 3: {(fileGroup.Reserved3 == null ? "[NULL]" : BitConverter.ToString(fileGroup.Reserved3).Replace('-', ' '))}"); - builder.AppendLine($" Reserved 4: {(fileGroup.Reserved4 == null ? "[NULL]" : BitConverter.ToString(fileGroup.Reserved4).Replace('-', ' '))}"); - builder.AppendLine($" Reserved 5: {(fileGroup.Reserved5 == null ? "[NULL]" : BitConverter.ToString(fileGroup.Reserved5).Replace('-', ' '))}"); - builder.AppendLine($" Reserved 6: {(fileGroup.Reserved6 == null ? "[NULL]" : BitConverter.ToString(fileGroup.Reserved6).Replace('-', ' '))}"); - builder.AppendLine($" Reserved 7: {(fileGroup.Reserved7 == null ? "[NULL]" : BitConverter.ToString(fileGroup.Reserved7).Replace('-', ' '))}"); + builder.AppendLine(fileGroup.NameOffset, " Name offset"); + builder.AppendLine(fileGroup.Name, " Name"); + builder.AppendLine(fileGroup.ExpandedSize, " Expanded size"); + builder.AppendLine(fileGroup.Reserved0, " Reserved 0"); + builder.AppendLine(fileGroup.CompressedSize, " Compressed size"); + builder.AppendLine(fileGroup.Reserved1, " Reserved 1"); + builder.AppendLine(fileGroup.Reserved2, " Reserved 2"); + builder.AppendLine(fileGroup.Attribute1, " Attribute 1"); + builder.AppendLine(fileGroup.Attribute2, " Attribute 2"); + builder.AppendLine(fileGroup.FirstFile, " First file"); + builder.AppendLine(fileGroup.LastFile, " Last file"); + builder.AppendLine(fileGroup.UnknownOffset, " Unknown offset"); + builder.AppendLine(fileGroup.Var4Offset, " Var 4 offset"); + builder.AppendLine(fileGroup.Var1Offset, " Var 1 offset"); + builder.AppendLine(fileGroup.HTTPLocationOffset, " HTTP location offset"); + builder.AppendLine(fileGroup.FTPLocationOffset, " FTP location offset"); + builder.AppendLine(fileGroup.MiscOffset, " Misc. offset"); + builder.AppendLine(fileGroup.Var2Offset, " Var 2 offset"); + builder.AppendLine(fileGroup.TargetDirectoryOffset, " Target directory offset"); + builder.AppendLine(fileGroup.Reserved3, " Reserved 3"); + builder.AppendLine(fileGroup.Reserved4, " Reserved 4"); + builder.AppendLine(fileGroup.Reserved5, " Reserved 5"); + builder.AppendLine(fileGroup.Reserved6, " Reserved 6"); + builder.AppendLine(fileGroup.Reserved7, " Reserved 7"); } builder.AppendLine(); } @@ -397,36 +397,36 @@ namespace BinaryObjectScanner.Printing builder.AppendLine($" Component {i}:"); if (component == null) { - builder.AppendLine($" Unassigned component"); + builder.AppendLine(" Unassigned component"); continue; } - builder.AppendLine($" Identifier offset: {component.IdentifierOffset} (0x{component.IdentifierOffset:X})"); - builder.AppendLine($" Identifier: {component.Identifier ?? "[NULL]"}"); - builder.AppendLine($" Descriptor offset: {component.DescriptorOffset} (0x{component.DescriptorOffset:X})"); - builder.AppendLine($" Display name offset: {component.DisplayNameOffset} (0x{component.DisplayNameOffset:X})"); - builder.AppendLine($" Display name: {component.DisplayName ?? "[NULL]"}"); - builder.AppendLine($" Reserved 0: {(component.Reserved0 == null ? "[NULL]" : BitConverter.ToString(component.Reserved0).Replace('-', ' '))}"); - builder.AppendLine($" Reserved offset 0: {component.ReservedOffset0} (0x{component.ReservedOffset0:X})"); - builder.AppendLine($" Reserved offset 1: {component.ReservedOffset1} (0x{component.ReservedOffset1:X})"); - builder.AppendLine($" Component index: {component.ComponentIndex} (0x{component.ComponentIndex:X})"); - builder.AppendLine($" Name offset: {component.NameOffset} (0x{component.NameOffset:X})"); - builder.AppendLine($" Name: {component.Name ?? "[NULL]"}"); - builder.AppendLine($" Reserved offset 2: {component.ReservedOffset2} (0x{component.ReservedOffset2:X})"); - builder.AppendLine($" Reserved offset 3: {component.ReservedOffset3} (0x{component.ReservedOffset3:X})"); - builder.AppendLine($" Reserved offset 4: {component.ReservedOffset4} (0x{component.ReservedOffset4:X})"); - builder.AppendLine($" Reserved 1: {(component.Reserved1 == null ? "[NULL]" : BitConverter.ToString(component.Reserved1).Replace('-', ' '))}"); - builder.AppendLine($" CLSID offset: {component.CLSIDOffset} (0x{component.CLSIDOffset:X})"); - builder.AppendLine($" CLSID: {component.CLSID}"); - builder.AppendLine($" Reserved 2: {(component.Reserved2 == null ? "[NULL]" : BitConverter.ToString(component.Reserved2).Replace('-', ' '))}"); - builder.AppendLine($" Reserved 3: {(component.Reserved3 == null ? "[NULL]" : BitConverter.ToString(component.Reserved3).Replace('-', ' '))}"); - builder.AppendLine($" Depends count: {component.DependsCount} (0x{component.DependsCount:X})"); - builder.AppendLine($" Depends offset: {component.DependsOffset} (0x{component.DependsOffset:X})"); - builder.AppendLine($" File group count: {component.FileGroupCount} (0x{component.FileGroupCount:X})"); - builder.AppendLine($" File group names offset: {component.FileGroupNamesOffset} (0x{component.FileGroupNamesOffset:X})"); + builder.AppendLine(component.IdentifierOffset, " Identifier offset"); + builder.AppendLine(component.Identifier, " Identifier"); + builder.AppendLine(component.DescriptorOffset, " Descriptor offset"); + builder.AppendLine(component.DisplayNameOffset, " Display name offset"); + builder.AppendLine(component.DisplayName, " Display name"); + builder.AppendLine(component.Reserved0, " Reserved 0"); + builder.AppendLine(component.ReservedOffset0, " Reserved offset 0"); + builder.AppendLine(component.ReservedOffset1, " Reserved offset 1"); + builder.AppendLine(component.ComponentIndex, " Component index"); + builder.AppendLine(component.NameOffset, " Name offset"); + builder.AppendLine(component.Name, " Name"); + builder.AppendLine(component.ReservedOffset2, " Reserved offset 2"); + builder.AppendLine(component.ReservedOffset3, " Reserved offset 3"); + builder.AppendLine(component.ReservedOffset4, " Reserved offset 4"); + builder.AppendLine(component.Reserved1, " Reserved 1"); + builder.AppendLine(component.CLSIDOffset, " CLSID offset"); + builder.AppendLine(component.CLSID, " CLSID"); + builder.AppendLine(component.Reserved2, " Reserved 2"); + builder.AppendLine(component.Reserved3, " Reserved 3"); + builder.AppendLine(component.DependsCount, " Depends count"); + builder.AppendLine(component.DependsOffset, " Depends offset"); + builder.AppendLine(component.FileGroupCount, " File group count"); + builder.AppendLine(component.FileGroupNamesOffset, " File group names offset"); builder.AppendLine(); - builder.AppendLine($" File group names:"); + builder.AppendLine(" File group names:"); builder.AppendLine(" -------------------------"); if (component.FileGroupNames == null || component.FileGroupNames.Length == 0) { @@ -436,20 +436,20 @@ namespace BinaryObjectScanner.Printing { for (int j = 0; j < component.FileGroupNames.Length; j++) { - builder.AppendLine($" File Group Name {j}: {component.FileGroupNames[j] ?? "[NULL]"}"); + builder.AppendLine(component.FileGroupNames[j], $" File Group Name {j}"); } } builder.AppendLine(); - builder.AppendLine($" X3 count: {component.X3Count} (0x{component.X3Count:X})"); - builder.AppendLine($" X3 offset: {component.X3Offset} (0x{component.X3Offset:X})"); - builder.AppendLine($" Sub-components count: {component.SubComponentsCount} (0x{component.SubComponentsCount:X})"); - builder.AppendLine($" Sub-components offset: {component.SubComponentsOffset} (0x{component.SubComponentsOffset:X})"); - builder.AppendLine($" Next component offset: {component.NextComponentOffset} (0x{component.NextComponentOffset:X})"); - builder.AppendLine($" Reserved offset 5: {component.ReservedOffset5} (0x{component.ReservedOffset5:X})"); - builder.AppendLine($" Reserved offset 6: {component.ReservedOffset6} (0x{component.ReservedOffset6:X})"); - builder.AppendLine($" Reserved offset 7: {component.ReservedOffset7} (0x{component.ReservedOffset7:X})"); - builder.AppendLine($" Reserved offset 8: {component.ReservedOffset8} (0x{component.ReservedOffset8:X})"); + builder.AppendLine(component.X3Count, " X3 count"); + builder.AppendLine(component.X3Offset, " X3 offset"); + builder.AppendLine(component.SubComponentsCount, " Sub-components count"); + builder.AppendLine(component.SubComponentsOffset, " Sub-components offset"); + builder.AppendLine(component.NextComponentOffset, " Next component offset"); + builder.AppendLine(component.ReservedOffset5, " Reserved offset 5"); + builder.AppendLine(component.ReservedOffset6, " Reserved offset 6"); + builder.AppendLine(component.ReservedOffset7, " Reserved offset 7"); + builder.AppendLine(component.ReservedOffset8, " Reserved offset 8"); } builder.AppendLine(); } diff --git a/BinaryObjectScanner.Printing/LinearExecutable.cs b/BinaryObjectScanner.Printing/LinearExecutable.cs index 589cbbc6..911b3b91 100644 --- a/BinaryObjectScanner.Printing/LinearExecutable.cs +++ b/BinaryObjectScanner.Printing/LinearExecutable.cs @@ -51,29 +51,29 @@ namespace BinaryObjectScanner.Printing return; } - builder.AppendLine($" Magic number: {header.Magic}"); - builder.AppendLine($" Last page bytes: {header.LastPageBytes} (0x{header.LastPageBytes:X})"); - builder.AppendLine($" Pages: {header.Pages} (0x{header.Pages:X})"); - builder.AppendLine($" Relocation items: {header.RelocationItems} (0x{header.RelocationItems:X})"); - builder.AppendLine($" Header paragraph size: {header.HeaderParagraphSize} (0x{header.HeaderParagraphSize:X})"); - builder.AppendLine($" Minimum extra paragraphs: {header.MinimumExtraParagraphs} (0x{header.MinimumExtraParagraphs:X})"); - builder.AppendLine($" Maximum extra paragraphs: {header.MaximumExtraParagraphs} (0x{header.MaximumExtraParagraphs:X})"); - builder.AppendLine($" Initial SS value: {header.InitialSSValue} (0x{header.InitialSSValue:X})"); - builder.AppendLine($" Initial SP value: {header.InitialSPValue} (0x{header.InitialSPValue:X})"); - builder.AppendLine($" Checksum: {header.Checksum} (0x{header.Checksum:X})"); - builder.AppendLine($" Initial IP value: {header.InitialIPValue} (0x{header.InitialIPValue:X})"); - builder.AppendLine($" Initial CS value: {header.InitialCSValue} (0x{header.InitialCSValue:X})"); - builder.AppendLine($" Relocation table address: {header.RelocationTableAddr} (0x{header.RelocationTableAddr:X})"); - builder.AppendLine($" Overlay number: {header.OverlayNumber} (0x{header.OverlayNumber:X})"); + builder.AppendLine(header.Magic, " Magic number"); + builder.AppendLine(header.LastPageBytes, " Last page bytes"); + builder.AppendLine(header.Pages, " Pages"); + builder.AppendLine(header.RelocationItems, " Relocation items"); + builder.AppendLine(header.HeaderParagraphSize, " Header paragraph size"); + builder.AppendLine(header.MinimumExtraParagraphs, " Minimum extra paragraphs"); + builder.AppendLine(header.MaximumExtraParagraphs, " Maximum extra paragraphs"); + builder.AppendLine(header.InitialSSValue, " Initial SS value"); + builder.AppendLine(header.InitialSPValue, " Initial SP value"); + builder.AppendLine(header.Checksum, " Checksum"); + builder.AppendLine(header.InitialIPValue, " Initial IP value"); + builder.AppendLine(header.InitialCSValue, " Initial CS value"); + builder.AppendLine(header.RelocationTableAddr, " Relocation table address"); + builder.AppendLine(header.OverlayNumber, " Overlay number"); builder.AppendLine(); builder.AppendLine(" MS-DOS Stub Extended Header Information:"); builder.AppendLine(" -------------------------"); - builder.AppendLine($" Reserved words: {(header.Reserved1 == null ? "[NULL]" : string.Join(", ", header.Reserved1))}"); - builder.AppendLine($" OEM identifier: {header.OEMIdentifier} (0x{header.OEMIdentifier:X})"); - builder.AppendLine($" OEM information: {header.OEMInformation} (0x{header.OEMInformation:X})"); - builder.AppendLine($" Reserved words: {(header.Reserved2 == null ? "[NULL]" : string.Join(", ", header.Reserved2))}"); - builder.AppendLine($" New EXE header address: {header.NewExeHeaderAddr} (0x{header.NewExeHeaderAddr:X})"); + builder.AppendLine(header.Reserved1, " Reserved words"); + builder.AppendLine(header.OEMIdentifier, " OEM identifier"); + builder.AppendLine(header.OEMInformation, " OEM information"); + builder.AppendLine(header.Reserved2, " Reserved words"); + builder.AppendLine(header.NewExeHeaderAddr, " New EXE header address"); builder.AppendLine(); } @@ -92,52 +92,52 @@ namespace BinaryObjectScanner.Printing return; } - builder.AppendLine($" Signature: {block.Signature}"); + builder.AppendLine(block.Signature, " Signature"); builder.AppendLine($" Byte order: {block.ByteOrder} (0x{block.ByteOrder:X})"); builder.AppendLine($" Word order: {block.WordOrder} (0x{block.WordOrder:X})"); - builder.AppendLine($" Executable format level: {block.ExecutableFormatLevel} (0x{block.ExecutableFormatLevel:X})"); + builder.AppendLine(block.ExecutableFormatLevel, " Executable format level"); builder.AppendLine($" CPU type: {block.CPUType} (0x{block.CPUType:X})"); builder.AppendLine($" Module OS: {block.ModuleOS} (0x{block.ModuleOS:X})"); - builder.AppendLine($" Module version: {block.ModuleVersion} (0x{block.ModuleVersion:X})"); + builder.AppendLine(block.ModuleVersion, " Module version"); builder.AppendLine($" Module type flags: {block.ModuleTypeFlags} (0x{block.ModuleTypeFlags:X})"); - builder.AppendLine($" Module number pages: {block.ModuleNumberPages} (0x{block.ModuleNumberPages:X})"); - builder.AppendLine($" Initial object CS: {block.InitialObjectCS} (0x{block.InitialObjectCS:X})"); - builder.AppendLine($" Initial EIP: {block.InitialEIP} (0x{block.InitialEIP:X})"); - builder.AppendLine($" Initial object SS: {block.InitialObjectSS} (0x{block.InitialObjectSS:X})"); - builder.AppendLine($" Initial ESP: {block.InitialESP} (0x{block.InitialESP:X})"); - builder.AppendLine($" Memory page size: {block.MemoryPageSize} (0x{block.MemoryPageSize:X})"); - builder.AppendLine($" Bytes on last page: {block.BytesOnLastPage} (0x{block.BytesOnLastPage:X})"); - builder.AppendLine($" Fix-up section size: {block.FixupSectionSize} (0x{block.FixupSectionSize:X})"); - builder.AppendLine($" Fix-up section checksum: {block.FixupSectionChecksum} (0x{block.FixupSectionChecksum:X})"); - builder.AppendLine($" Loader section size: {block.LoaderSectionSize} (0x{block.LoaderSectionSize:X})"); - builder.AppendLine($" Loader section checksum: {block.LoaderSectionChecksum} (0x{block.LoaderSectionChecksum:X})"); - builder.AppendLine($" Object table offset: {block.ObjectTableOffset} (0x{block.ObjectTableOffset:X})"); - builder.AppendLine($" Object table count: {block.ObjectTableCount} (0x{block.ObjectTableCount:X})"); - builder.AppendLine($" Object page map offset: {block.ObjectPageMapOffset} (0x{block.ObjectPageMapOffset:X})"); - builder.AppendLine($" Object iterate data map offset: {block.ObjectIterateDataMapOffset} (0x{block.ObjectIterateDataMapOffset:X})"); - builder.AppendLine($" Resource table offset: {block.ResourceTableOffset} (0x{block.ResourceTableOffset:X})"); - builder.AppendLine($" Resource table count: {block.ResourceTableCount} (0x{block.ResourceTableCount:X})"); - builder.AppendLine($" Resident names table offset: {block.ResidentNamesTableOffset} (0x{block.ResidentNamesTableOffset:X})"); - builder.AppendLine($" Entry table offset: {block.EntryTableOffset} (0x{block.EntryTableOffset:X})"); - builder.AppendLine($" Module directives table offset: {block.ModuleDirectivesTableOffset} (0x{block.ModuleDirectivesTableOffset:X})"); - builder.AppendLine($" Module directives table count: {block.ModuleDirectivesCount} (0x{block.ModuleDirectivesCount:X})"); - builder.AppendLine($" Fix-up page table offset: {block.FixupPageTableOffset} (0x{block.FixupPageTableOffset:X})"); - builder.AppendLine($" Fix-up record table offset: {block.FixupRecordTableOffset} (0x{block.FixupRecordTableOffset:X})"); - builder.AppendLine($" Imported modules name table offset: {block.ImportedModulesNameTableOffset} (0x{block.ImportedModulesNameTableOffset:X})"); - builder.AppendLine($" Imported modules count: {block.ImportedModulesCount} (0x{block.ImportedModulesCount:X})"); - builder.AppendLine($" Imported procedure name table count: {block.ImportProcedureNameTableOffset} (0x{block.ImportProcedureNameTableOffset:X})"); - builder.AppendLine($" Per-page checksum table offset: {block.PerPageChecksumTableOffset} (0x{block.PerPageChecksumTableOffset:X})"); - builder.AppendLine($" Data pages offset: {block.DataPagesOffset} (0x{block.DataPagesOffset:X})"); - builder.AppendLine($" Preload page count: {block.PreloadPageCount} (0x{block.PreloadPageCount:X})"); - builder.AppendLine($" Non-resident names table offset: {block.NonResidentNamesTableOffset} (0x{block.NonResidentNamesTableOffset:X})"); - builder.AppendLine($" Non-resident names table length: {block.NonResidentNamesTableLength} (0x{block.NonResidentNamesTableLength:X})"); - builder.AppendLine($" Non-resident names table checksum: {block.NonResidentNamesTableChecksum} (0x{block.NonResidentNamesTableChecksum:X})"); - builder.AppendLine($" Automatic data object: {block.AutomaticDataObject} (0x{block.AutomaticDataObject:X})"); - builder.AppendLine($" Debug information offset: {block.DebugInformationOffset} (0x{block.DebugInformationOffset:X})"); - builder.AppendLine($" Debug information length: {block.DebugInformationLength} (0x{block.DebugInformationLength:X})"); - builder.AppendLine($" Preload instance pages number: {block.PreloadInstancePagesNumber} (0x{block.PreloadInstancePagesNumber:X})"); - builder.AppendLine($" Demand instance pages number: {block.DemandInstancePagesNumber} (0x{block.DemandInstancePagesNumber:X})"); - builder.AppendLine($" Extra heap allocation: {block.ExtraHeapAllocation} (0x{block.ExtraHeapAllocation:X})"); + builder.AppendLine(block.ModuleNumberPages, " Module number pages"); + builder.AppendLine(block.InitialObjectCS, " Initial object CS"); + builder.AppendLine(block.InitialEIP, " Initial EIP"); + builder.AppendLine(block.InitialObjectSS, " Initial object SS"); + builder.AppendLine(block.InitialESP, " Initial ESP"); + builder.AppendLine(block.MemoryPageSize, " Memory page size"); + builder.AppendLine(block.BytesOnLastPage, " Bytes on last page"); + builder.AppendLine(block.FixupSectionSize, " Fix-up section size"); + builder.AppendLine(block.FixupSectionChecksum, " Fix-up section checksum"); + builder.AppendLine(block.LoaderSectionSize, " Loader section size"); + builder.AppendLine(block.LoaderSectionChecksum, " Loader section checksum"); + builder.AppendLine(block.ObjectTableOffset, " Object table offset"); + builder.AppendLine(block.ObjectTableCount, " Object table count"); + builder.AppendLine(block.ObjectPageMapOffset, " Object page map offset"); + builder.AppendLine(block.ObjectIterateDataMapOffset, " Object iterate data map offset"); + builder.AppendLine(block.ResourceTableOffset, " Resource table offset"); + builder.AppendLine(block.ResourceTableCount, " Resource table count"); + builder.AppendLine(block.ResidentNamesTableOffset, " Resident names table offset"); + builder.AppendLine(block.EntryTableOffset, " Entry table offset"); + builder.AppendLine(block.ModuleDirectivesTableOffset, " Module directives table offset"); + builder.AppendLine(block.ModuleDirectivesCount, " Module directives table count"); + builder.AppendLine(block.FixupPageTableOffset, " Fix-up page table offset"); + builder.AppendLine(block.FixupRecordTableOffset, " Fix-up record table offset"); + builder.AppendLine(block.ImportedModulesNameTableOffset, " Imported modules name table offset"); + builder.AppendLine(block.ImportedModulesCount, " Imported modules count"); + builder.AppendLine(block.ImportProcedureNameTableOffset, " Imported procedure name table count"); + builder.AppendLine(block.PerPageChecksumTableOffset, " Per-page checksum table offset"); + builder.AppendLine(block.DataPagesOffset, " Data pages offset"); + builder.AppendLine(block.PreloadPageCount, " Preload page count"); + builder.AppendLine(block.NonResidentNamesTableOffset, " Non-resident names table offset"); + builder.AppendLine(block.NonResidentNamesTableLength, " Non-resident names table length"); + builder.AppendLine(block.NonResidentNamesTableChecksum, " Non-resident names table checksum"); + builder.AppendLine(block.AutomaticDataObject, " Automatic data object"); + builder.AppendLine(block.DebugInformationOffset, " Debug information offset"); + builder.AppendLine(block.DebugInformationLength, " Debug information length"); + builder.AppendLine(block.PreloadInstancePagesNumber, " Preload instance pages number"); + builder.AppendLine(block.DemandInstancePagesNumber, " Demand instance pages number"); + builder.AppendLine(block.ExtraHeapAllocation, " Extra heap allocation"); builder.AppendLine(); } @@ -166,12 +166,12 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Virtual segment size: {entry.VirtualSegmentSize} (0x{entry.VirtualSegmentSize:X})"); - builder.AppendLine($" Relocation base address: {entry.RelocationBaseAddress} (0x{entry.RelocationBaseAddress:X})"); + builder.AppendLine(entry.VirtualSegmentSize, " Virtual segment size"); + builder.AppendLine(entry.RelocationBaseAddress, " Relocation base address"); builder.AppendLine($" Object flags: {entry.ObjectFlags} (0x{entry.ObjectFlags:X})"); - builder.AppendLine($" Page table index: {entry.PageTableIndex} (0x{entry.PageTableIndex:X})"); - builder.AppendLine($" Page table entries: {entry.PageTableEntries} (0x{entry.PageTableEntries:X})"); - builder.AppendLine($" Reserved: {entry.Reserved} (0x{entry.Reserved:X})"); + builder.AppendLine(entry.PageTableIndex, " Page table index"); + builder.AppendLine(entry.PageTableEntries, " Page table entries"); + builder.AppendLine(entry.Reserved, " Reserved"); } builder.AppendLine(); } @@ -201,8 +201,8 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Page data offset: {entry.PageDataOffset} (0x{entry.PageDataOffset:X})"); - builder.AppendLine($" Data size: {entry.DataSize} (0x{entry.DataSize:X})"); + builder.AppendLine(entry.PageDataOffset, " Page data offset"); + builder.AppendLine(entry.DataSize, " Data size"); builder.AppendLine($" Flags: {entry.Flags} (0x{entry.Flags:X})"); } builder.AppendLine(); @@ -234,10 +234,10 @@ namespace BinaryObjectScanner.Printing } builder.AppendLine($" Type ID: {entry.TypeID} (0x{entry.TypeID:X})"); - builder.AppendLine($" Name ID: {entry.NameID} (0x{entry.NameID:X})"); - builder.AppendLine($" Resource size: {entry.ResourceSize} (0x{entry.ResourceSize:X})"); - builder.AppendLine($" Object number: {entry.ObjectNumber} (0x{entry.ObjectNumber:X})"); - builder.AppendLine($" Offset: {entry.Offset} (0x{entry.Offset:X})"); + builder.AppendLine(entry.NameID, " Name ID"); + builder.AppendLine(entry.ResourceSize, " Resource size"); + builder.AppendLine(entry.ObjectNumber, " Object number"); + builder.AppendLine(entry.Offset, " Offset"); } builder.AppendLine(); } @@ -267,9 +267,9 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Length: {entry.Length} (0x{entry.Length:X})"); - builder.AppendLine($" Name: {entry.Name ?? "[NULL]"}"); - builder.AppendLine($" Ordinal number: {entry.OrdinalNumber} (0x{entry.OrdinalNumber:X})"); + builder.AppendLine(entry.Length, " Length"); + builder.AppendLine(entry.Name, " Name"); + builder.AppendLine(entry.OrdinalNumber, " Ordinal number"); } builder.AppendLine(); } @@ -299,11 +299,11 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Entries: {bundle.Entries} (0x{bundle.Entries:X})"); + builder.AppendLine(bundle.Entries, " Entries"); builder.AppendLine($" Bundle type: {bundle.BundleType} (0x{bundle.BundleType:X})"); builder.AppendLine(); - builder.AppendLine($" Entry Table Entries:"); + builder.AppendLine(" Entry Table Entries:"); builder.AppendLine(" -------------------------"); if (bundle.TableEntries == null || bundle.TableEntries.Length == 0) { @@ -325,34 +325,34 @@ namespace BinaryObjectScanner.Printing switch (bundle.BundleType & ~BundleType.ParameterTypingInformationPresent) { case BundleType.UnusedEntry: - builder.AppendLine($" Unused, empty entry"); + builder.AppendLine(" Unused, empty entry"); break; case BundleType.SixteenBitEntry: - builder.AppendLine($" Object number: {entry.SixteenBitObjectNumber} (0x{entry.SixteenBitObjectNumber:X})"); + builder.AppendLine(entry.SixteenBitObjectNumber, " Object number"); builder.AppendLine($" Entry flags: {entry.SixteenBitEntryFlags} (0x{entry.SixteenBitEntryFlags:X})"); - builder.AppendLine($" Offset: {entry.SixteenBitOffset} (0x{entry.SixteenBitOffset:X})"); + builder.AppendLine(entry.SixteenBitOffset, " Offset"); break; case BundleType.TwoEightySixCallGateEntry: - builder.AppendLine($" Object number: {entry.TwoEightySixObjectNumber} (0x{entry.TwoEightySixObjectNumber:X})"); + builder.AppendLine(entry.TwoEightySixObjectNumber, " Object number"); builder.AppendLine($" Entry flags: {entry.TwoEightySixEntryFlags} (0x{entry.TwoEightySixEntryFlags:X})"); - builder.AppendLine($" Offset: {entry.TwoEightySixOffset} (0x{entry.TwoEightySixOffset:X})"); - builder.AppendLine($" Callgate: {entry.TwoEightySixCallgate} (0x{entry.TwoEightySixCallgate:X})"); + builder.AppendLine(entry.TwoEightySixOffset, " Offset"); + builder.AppendLine(entry.TwoEightySixCallgate, " Callgate"); break; case BundleType.ThirtyTwoBitEntry: - builder.AppendLine($" Object number: {entry.ThirtyTwoBitObjectNumber} (0x{entry.ThirtyTwoBitObjectNumber:X})"); + builder.AppendLine(entry.ThirtyTwoBitObjectNumber, " Object number"); builder.AppendLine($" Entry flags: {entry.ThirtyTwoBitEntryFlags} (0x{entry.ThirtyTwoBitEntryFlags:X})"); - builder.AppendLine($" Offset: {entry.ThirtyTwoBitOffset} (0x{entry.ThirtyTwoBitOffset:X})"); + builder.AppendLine(entry.ThirtyTwoBitOffset, " Offset"); break; case BundleType.ForwarderEntry: - builder.AppendLine($" Reserved: {entry.ForwarderReserved} (0x{entry.ForwarderReserved:X})"); + builder.AppendLine(entry.ForwarderReserved, " Reserved"); builder.AppendLine($" Forwarder flags: {entry.ForwarderFlags} (0x{entry.ForwarderFlags:X})"); - builder.AppendLine($" Module ordinal number: {entry.ForwarderModuleOrdinalNumber} (0x{entry.ForwarderModuleOrdinalNumber:X})"); - builder.AppendLine($" Procedure name offset: {entry.ProcedureNameOffset} (0x{entry.ProcedureNameOffset:X})"); - builder.AppendLine($" Import ordinal number: {entry.ImportOrdinalNumber} (0x{entry.ImportOrdinalNumber:X})"); + builder.AppendLine(entry.ForwarderModuleOrdinalNumber, " Module ordinal number"); + builder.AppendLine(entry.ProcedureNameOffset, " Procedure name offset"); + builder.AppendLine(entry.ImportOrdinalNumber, " Import ordinal number"); break; default: @@ -390,8 +390,8 @@ namespace BinaryObjectScanner.Printing } builder.AppendLine($" Directive number: {entry.DirectiveNumber} (0x{entry.DirectiveNumber:X})"); - builder.AppendLine($" Directive data length: {entry.DirectiveDataLength} (0x{entry.DirectiveDataLength:X})"); - builder.AppendLine($" Directive data offset: {entry.DirectiveDataOffset} (0x{entry.DirectiveDataOffset:X})"); + builder.AppendLine(entry.DirectiveDataLength, " Directive data length"); + builder.AppendLine(entry.DirectiveDataOffset, " Directive data offset"); } builder.AppendLine(); } @@ -421,13 +421,13 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Entry count: {entry.EntryCount} (0x{entry.EntryCount:X})"); - builder.AppendLine($" Ordinal index: {entry.OrdinalIndex} (0x{entry.OrdinalIndex:X})"); - builder.AppendLine($" Version: {entry.Version} (0x{entry.Version:X})"); - builder.AppendLine($" Object entries count: {entry.ObjectEntriesCount} (0x{entry.ObjectEntriesCount:X})"); - builder.AppendLine($" Object number in module: {entry.ObjectNumberInModule} (0x{entry.ObjectNumberInModule:X})"); - builder.AppendLine($" Object load base address: {entry.ObjectLoadBaseAddress} (0x{entry.ObjectLoadBaseAddress:X})"); - builder.AppendLine($" Object virtual address size: {entry.ObjectVirtualAddressSize} (0x{entry.ObjectVirtualAddressSize:X})"); + builder.AppendLine(entry.EntryCount, " Entry count"); + builder.AppendLine(entry.OrdinalIndex, " Ordinal index"); + builder.AppendLine(entry.Version, " Version"); + builder.AppendLine(entry.ObjectEntriesCount, " Object entries count"); + builder.AppendLine(entry.ObjectNumberInModule, " Object number in module"); + builder.AppendLine(entry.ObjectLoadBaseAddress, " Object load base address"); + builder.AppendLine(entry.ObjectVirtualAddressSize, " Object virtual address size"); } builder.AppendLine(); } @@ -457,7 +457,7 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Offset: {entry.Offset} (0x{entry.Offset:X})"); + builder.AppendLine(entry.Offset, " Offset"); } builder.AppendLine(); } @@ -492,27 +492,27 @@ namespace BinaryObjectScanner.Printing // Source list flag if (entry.SourceType.HasFlag(FixupRecordSourceType.SourceListFlag)) - builder.AppendLine($" Source offset list count: {entry.SourceOffsetListCount} (0x{entry.SourceOffsetListCount:X})"); + builder.AppendLine(entry.SourceOffsetListCount, " Source offset list count"); else - builder.AppendLine($" Source offset: {entry.SourceOffset} (0x{entry.SourceOffset:X})"); + builder.AppendLine(entry.SourceOffset, " Source offset"); // OBJECT / TRGOFF if (entry.TargetFlags.HasFlag(FixupRecordTargetFlags.InternalReference)) { // 16-bit Object Number/Module Ordinal Flag if (entry.TargetFlags.HasFlag(FixupRecordTargetFlags.SixteenBitObjectNumberModuleOrdinalFlag)) - builder.AppendLine($" Target object number: {entry.TargetObjectNumberWORD} (0x{entry.TargetObjectNumberWORD:X})"); + builder.AppendLine(entry.TargetObjectNumberWORD, " Target object number"); else - builder.AppendLine($" Target object number: {entry.TargetObjectNumberByte} (0x{entry.TargetObjectNumberByte:X})"); + builder.AppendLine(entry.TargetObjectNumberByte, " Target object number"); // 16-bit Selector fixup if (!entry.SourceType.HasFlag(FixupRecordSourceType.SixteenBitSelectorFixup)) { // 32-bit Target Offset Flag if (entry.TargetFlags.HasFlag(FixupRecordTargetFlags.ThirtyTwoBitTargetOffsetFlag)) - builder.AppendLine($" Target offset: {entry.TargetOffsetDWORD} (0x{entry.TargetOffsetDWORD:X})"); + builder.AppendLine(entry.TargetOffsetDWORD, " Target offset"); else - builder.AppendLine($" Target offset: {entry.TargetOffsetWORD} (0x{entry.TargetOffsetWORD:X})"); + builder.AppendLine(entry.TargetOffsetWORD, " Target offset"); } } @@ -521,26 +521,26 @@ namespace BinaryObjectScanner.Printing { // 16-bit Object Number/Module Ordinal Flag if (entry.TargetFlags.HasFlag(FixupRecordTargetFlags.SixteenBitObjectNumberModuleOrdinalFlag)) - builder.AppendLine($" Ordinal index import module name table: {entry.OrdinalIndexImportModuleNameTableWORD} (0x{entry.OrdinalIndexImportModuleNameTableWORD:X})"); + builder.AppendLine(entry.OrdinalIndexImportModuleNameTableWORD, " Ordinal index import module name table"); else - builder.AppendLine($" Ordinal index import module name table: {entry.OrdinalIndexImportModuleNameTableByte} (0x{entry.OrdinalIndexImportModuleNameTableByte:X})"); + builder.AppendLine(entry.OrdinalIndexImportModuleNameTableByte, " Ordinal index import module name table"); // 8-bit Ordinal Flag & 32-bit Target Offset Flag if (entry.TargetFlags.HasFlag(FixupRecordTargetFlags.EightBitOrdinalFlag)) - builder.AppendLine($" Imported ordinal number: {entry.ImportedOrdinalNumberByte} (0x{entry.ImportedOrdinalNumberByte:X})"); + builder.AppendLine(entry.ImportedOrdinalNumberByte, " Imported ordinal number"); else if (entry.TargetFlags.HasFlag(FixupRecordTargetFlags.ThirtyTwoBitTargetOffsetFlag)) - builder.AppendLine($" Imported ordinal number: {entry.ImportedOrdinalNumberDWORD} (0x{entry.ImportedOrdinalNumberDWORD:X})"); + builder.AppendLine(entry.ImportedOrdinalNumberDWORD, " Imported ordinal number"); else - builder.AppendLine($" Imported ordinal number: {entry.ImportedOrdinalNumberWORD} (0x{entry.ImportedOrdinalNumberWORD:X})"); + builder.AppendLine(entry.ImportedOrdinalNumberWORD, " Imported ordinal number"); // Additive Fixup Flag if (entry.TargetFlags.HasFlag(FixupRecordTargetFlags.AdditiveFixupFlag)) { // 32-bit Additive Flag if (entry.TargetFlags.HasFlag(FixupRecordTargetFlags.ThirtyTwoBitAdditiveFixupFlag)) - builder.AppendLine($" Additive fixup value: {entry.AdditiveFixupValueDWORD} (0x{entry.AdditiveFixupValueDWORD:X})"); + builder.AppendLine(entry.AdditiveFixupValueDWORD, " Additive fixup value"); else - builder.AppendLine($" Additive fixup value: {entry.AdditiveFixupValueWORD} (0x{entry.AdditiveFixupValueWORD:X})"); + builder.AppendLine(entry.AdditiveFixupValueWORD, " Additive fixup value"); } } @@ -549,24 +549,24 @@ namespace BinaryObjectScanner.Printing { // 16-bit Object Number/Module Ordinal Flag if (entry.TargetFlags.HasFlag(FixupRecordTargetFlags.SixteenBitObjectNumberModuleOrdinalFlag)) - builder.AppendLine($" Ordinal index import module name table: {entry.OrdinalIndexImportModuleNameTableWORD} (0x{entry.OrdinalIndexImportModuleNameTableWORD:X})"); + builder.AppendLine(entry.OrdinalIndexImportModuleNameTableWORD, " Ordinal index import module name table"); else - builder.AppendLine($" Ordinal index import module name table: {entry.OrdinalIndexImportModuleNameTableByte} (0x{entry.OrdinalIndexImportModuleNameTableByte:X})"); + builder.AppendLine(entry.OrdinalIndexImportModuleNameTableByte, " Ordinal index import module name table"); // 32-bit Target Offset Flag if (entry.TargetFlags.HasFlag(FixupRecordTargetFlags.ThirtyTwoBitTargetOffsetFlag)) - builder.AppendLine($" Offset import procedure name table: {entry.OffsetImportProcedureNameTableDWORD} (0x{entry.OffsetImportProcedureNameTableDWORD:X})"); + builder.AppendLine(entry.OffsetImportProcedureNameTableDWORD, " Offset import procedure name table"); else - builder.AppendLine($" Offset import procedure name table: {entry.OffsetImportProcedureNameTableWORD} (0x{entry.OffsetImportProcedureNameTableWORD:X})"); + builder.AppendLine(entry.OffsetImportProcedureNameTableWORD, " Offset import procedure name table"); // Additive Fixup Flag if (entry.TargetFlags.HasFlag(FixupRecordTargetFlags.AdditiveFixupFlag)) { // 32-bit Additive Flag if (entry.TargetFlags.HasFlag(FixupRecordTargetFlags.ThirtyTwoBitAdditiveFixupFlag)) - builder.AppendLine($" Additive fixup value: {entry.AdditiveFixupValueDWORD} (0x{entry.AdditiveFixupValueDWORD:X})"); + builder.AppendLine(entry.AdditiveFixupValueDWORD, " Additive fixup value"); else - builder.AppendLine($" Additive fixup value: {entry.AdditiveFixupValueWORD} (0x{entry.AdditiveFixupValueWORD:X})"); + builder.AppendLine(entry.AdditiveFixupValueWORD, " Additive fixup value"); } } @@ -575,39 +575,39 @@ namespace BinaryObjectScanner.Printing { // 16-bit Object Number/Module Ordinal Flag if (entry.TargetFlags.HasFlag(FixupRecordTargetFlags.SixteenBitObjectNumberModuleOrdinalFlag)) - builder.AppendLine($" Target object number: {entry.TargetObjectNumberWORD} (0x{entry.TargetObjectNumberWORD:X})"); + builder.AppendLine(entry.TargetObjectNumberWORD, " Target object number"); else - builder.AppendLine($" Target object number: {entry.TargetObjectNumberByte} (0x{entry.TargetObjectNumberByte:X})"); + builder.AppendLine(entry.TargetObjectNumberByte, " Target object number"); // Additive Fixup Flag if (entry.TargetFlags.HasFlag(FixupRecordTargetFlags.AdditiveFixupFlag)) { // 32-bit Additive Flag if (entry.TargetFlags.HasFlag(FixupRecordTargetFlags.ThirtyTwoBitAdditiveFixupFlag)) - builder.AppendLine($" Additive fixup value: {entry.AdditiveFixupValueDWORD} (0x{entry.AdditiveFixupValueDWORD:X})"); + builder.AppendLine(entry.AdditiveFixupValueDWORD, " Additive fixup value"); else - builder.AppendLine($" Additive fixup value: {entry.AdditiveFixupValueWORD} (0x{entry.AdditiveFixupValueWORD:X})"); + builder.AppendLine(entry.AdditiveFixupValueWORD, " Additive fixup value"); } } // No other top-level flags recognized else { - builder.AppendLine($" Unknown entry format"); + builder.AppendLine(" Unknown entry format"); } builder.AppendLine(); - builder.AppendLine($" Source Offset List:"); + builder.AppendLine(" Source Offset List:"); builder.AppendLine(" -------------------------"); if (entry.SourceOffsetList == null || entry.SourceOffsetList.Length == 0) { - builder.AppendLine($" No source offset list entries"); + builder.AppendLine(" No source offset list entries"); } else { for (int j = 0; j < entry.SourceOffsetList.Length; j++) { - builder.AppendLine($" Source Offset List Entry {j}: {entry.SourceOffsetList[j]} (0x{entry.SourceOffsetList[j]:X})"); + builder.AppendLine(entry.SourceOffsetList[j], $" Source Offset List Entry {j}"); } } builder.AppendLine(); @@ -639,8 +639,8 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Length: {entry.Length} (0x{entry.Length:X})"); - builder.AppendLine($" Name: {entry.Name ?? "[NULL]"}"); + builder.AppendLine(entry.Length, " Length"); + builder.AppendLine(entry.Name, " Name"); } builder.AppendLine(); } @@ -670,8 +670,8 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Length: {entry.Length} (0x{entry.Length:X})"); - builder.AppendLine($" Name: {entry.Name ?? "[NULL]"}"); + builder.AppendLine(entry.Length, " Length"); + builder.AppendLine(entry.Name, " Name"); } builder.AppendLine(); } @@ -701,7 +701,7 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Checksum: {entry.Checksum} (0x{entry.Checksum:X})"); + builder.AppendLine(entry.Checksum, " Checksum"); } builder.AppendLine(); } @@ -731,9 +731,9 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Length: {entry.Length} (0x{entry.Length:X})"); - builder.AppendLine($" Name: {entry.Name ?? "[NULL]"}"); - builder.AppendLine($" Ordinal number: {entry.OrdinalNumber} (0x{entry.OrdinalNumber:X})"); + builder.AppendLine(entry.Length, " Length"); + builder.AppendLine(entry.Name, " Name"); + builder.AppendLine(entry.OrdinalNumber, " Ordinal number"); } builder.AppendLine(); } @@ -753,7 +753,7 @@ namespace BinaryObjectScanner.Printing return; } - builder.AppendLine($" Signature: {di.Signature ?? "[NULL]"}"); + builder.AppendLine(di.Signature, " Signature"); builder.AppendLine($" Format type: {di.FormatType} (0x{di.FormatType:X})"); // Debugger data builder.AppendLine(); diff --git a/BinaryObjectScanner.Printing/MSDOS.cs b/BinaryObjectScanner.Printing/MSDOS.cs index 0e09911f..b37b1b5b 100644 --- a/BinaryObjectScanner.Printing/MSDOS.cs +++ b/BinaryObjectScanner.Printing/MSDOS.cs @@ -30,20 +30,20 @@ namespace BinaryObjectScanner.Printing return; } - builder.AppendLine($" Magic number: {header.Magic}"); - builder.AppendLine($" Last page bytes: {header.LastPageBytes} (0x{header.LastPageBytes:X})"); - builder.AppendLine($" Pages: {header.Pages} (0x{header.Pages:X})"); - builder.AppendLine($" Relocation items: {header.RelocationItems} (0x{header.RelocationItems:X})"); - builder.AppendLine($" Header paragraph size: {header.HeaderParagraphSize} (0x{header.HeaderParagraphSize:X})"); - builder.AppendLine($" Minimum extra paragraphs: {header.MinimumExtraParagraphs} (0x{header.MinimumExtraParagraphs:X})"); - builder.AppendLine($" Maximum extra paragraphs: {header.MaximumExtraParagraphs} (0x{header.MaximumExtraParagraphs:X})"); - builder.AppendLine($" Initial SS value: {header.InitialSSValue} (0x{header.InitialSSValue:X})"); - builder.AppendLine($" Initial SP value: {header.InitialSPValue} (0x{header.InitialSPValue:X})"); - builder.AppendLine($" Checksum: {header.Checksum} (0x{header.Checksum:X})"); - builder.AppendLine($" Initial IP value: {header.InitialIPValue} (0x{header.InitialIPValue:X})"); - builder.AppendLine($" Initial CS value: {header.InitialCSValue} (0x{header.InitialCSValue:X})"); - builder.AppendLine($" Relocation table address: {header.RelocationTableAddr} (0x{header.RelocationTableAddr:X})"); - builder.AppendLine($" Overlay number: {header.OverlayNumber} (0x{header.OverlayNumber:X})"); + builder.AppendLine(header.Magic, " Magic number"); + builder.AppendLine(header.LastPageBytes, " Last page bytes"); + builder.AppendLine(header.Pages, " Pages"); + builder.AppendLine(header.RelocationItems, " Relocation items"); + builder.AppendLine(header.HeaderParagraphSize, " Header paragraph size"); + builder.AppendLine(header.MinimumExtraParagraphs, " Minimum extra paragraphs"); + builder.AppendLine(header.MaximumExtraParagraphs, " Maximum extra paragraphs"); + builder.AppendLine(header.InitialSSValue, " Initial SS value"); + builder.AppendLine(header.InitialSPValue, " Initial SP value"); + builder.AppendLine(header.Checksum, " Checksum"); + builder.AppendLine(header.InitialIPValue, " Initial IP value"); + builder.AppendLine(header.InitialCSValue, " Initial CS value"); + builder.AppendLine(header.RelocationTableAddr, " Relocation table address"); + builder.AppendLine(header.OverlayNumber, " Overlay number"); builder.AppendLine(); } @@ -68,12 +68,12 @@ namespace BinaryObjectScanner.Printing builder.AppendLine($" Relocation Table Entry {i}"); if (entry == null) { - builder.AppendLine($" [NULL]"); + builder.AppendLine(" [NULL]"); continue; } - builder.AppendLine($" Offset: {entry.Offset} (0x{entry.Offset:X})"); - builder.AppendLine($" Segment: {entry.Segment} (0x{entry.Segment:X})"); + builder.AppendLine(entry.Offset, " Offset"); + builder.AppendLine(entry.Segment, " Segment"); } builder.AppendLine(); } diff --git a/BinaryObjectScanner.Printing/MicrosoftCabinet.cs b/BinaryObjectScanner.Printing/MicrosoftCabinet.cs index b481df54..6dae9c9f 100644 --- a/BinaryObjectScanner.Printing/MicrosoftCabinet.cs +++ b/BinaryObjectScanner.Printing/MicrosoftCabinet.cs @@ -32,38 +32,38 @@ namespace BinaryObjectScanner.Printing return; } - builder.AppendLine($" Signature: {header.Signature}"); - builder.AppendLine($" Reserved 1: {header.Reserved1} (0x{header.Reserved1:X})"); - builder.AppendLine($" Cabinet size: {header.CabinetSize} (0x{header.CabinetSize:X})"); - builder.AppendLine($" Reserved 2: {header.Reserved2} (0x{header.Reserved2:X})"); - builder.AppendLine($" Files offset: {header.FilesOffset} (0x{header.FilesOffset:X})"); - builder.AppendLine($" Reserved 3: {header.Reserved3} (0x{header.Reserved3:X})"); - builder.AppendLine($" Minor version: {header.VersionMinor} (0x{header.VersionMinor:X})"); - builder.AppendLine($" Major version: {header.VersionMajor} (0x{header.VersionMajor:X})"); - builder.AppendLine($" Folder count: {header.FolderCount} (0x{header.FolderCount:X})"); - builder.AppendLine($" File count: {header.FileCount} (0x{header.FileCount:X})"); + builder.AppendLine(header.Signature, " Signature"); + builder.AppendLine(header.Reserved1, " Reserved 1"); + builder.AppendLine(header.CabinetSize, " Cabinet size"); + builder.AppendLine(header.Reserved2, " Reserved 2"); + builder.AppendLine(header.FilesOffset, " Files offset"); + builder.AppendLine(header.Reserved3, " Reserved 3"); + builder.AppendLine(header.VersionMinor, " Minor version"); + builder.AppendLine(header.VersionMajor, " Major version"); + builder.AppendLine(header.FolderCount, " Folder count"); + builder.AppendLine(header.FileCount, " File count"); builder.AppendLine($" Flags: {header.Flags} (0x{header.Flags:X})"); - builder.AppendLine($" Set ID: {header.SetID} (0x{header.SetID:X})"); - builder.AppendLine($" Cabinet index: {header.CabinetIndex} (0x{header.CabinetIndex:X})"); + builder.AppendLine(header.SetID, " Set ID"); + builder.AppendLine(header.CabinetIndex, " Cabinet index"); if (header.Flags.HasFlag(HeaderFlags.RESERVE_PRESENT)) { - builder.AppendLine($" Header reserved size: {header.HeaderReservedSize} (0x{header.HeaderReservedSize:X})"); - builder.AppendLine($" Folder reserved size: {header.FolderReservedSize} (0x{header.FolderReservedSize:X})"); - builder.AppendLine($" Data reserved size: {header.DataReservedSize} (0x{header.DataReservedSize:X})"); - builder.AppendLine($" Reserved data = {(header.ReservedData == null ? "[NULL]" : BitConverter.ToString(header.ReservedData).Replace(" - ", " "))}"); + builder.AppendLine(header.HeaderReservedSize, " Header reserved size"); + builder.AppendLine(header.FolderReservedSize, " Folder reserved size"); + builder.AppendLine(header.DataReservedSize, " Data reserved size"); + builder.AppendLine(header.ReservedData, " Reserved data"); } if (header.Flags.HasFlag(HeaderFlags.PREV_CABINET)) { - builder.AppendLine($" Previous cabinet: {header.CabinetPrev}"); - builder.AppendLine($" Previous disk: {header.DiskPrev}"); + builder.AppendLine(header.CabinetPrev, " Previous cabinet"); + builder.AppendLine(header.DiskPrev, " Previous disk"); } if (header.Flags.HasFlag(HeaderFlags.NEXT_CABINET)) { - builder.AppendLine($" Next cabinet: {header.CabinetNext}"); - builder.AppendLine($" Next disk: {header.DiskNext}"); + builder.AppendLine(header.CabinetNext, " Next cabinet"); + builder.AppendLine(header.DiskNext, " Next disk"); } builder.AppendLine(); @@ -94,11 +94,11 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Cab start offset = {entry.CabStartOffset} (0x{entry.CabStartOffset:X})"); - builder.AppendLine($" Data count = {entry.DataCount} (0x{entry.DataCount:X})"); - builder.AppendLine($" Compression type = {entry.CompressionType} (0x{entry.CompressionType:X})"); - builder.AppendLine($" Masked compression type = {entry.CompressionType & CompressionType.MASK_TYPE}"); - builder.AppendLine($" Reserved data = {(entry.ReservedData == null ? "[NULL]" : BitConverter.ToString(entry.ReservedData).Replace("-", " "))}"); + builder.AppendLine(entry.CabStartOffset, " Cab start offset"); + builder.AppendLine(entry.DataCount, " Data count"); + builder.AppendLine($" Compression type: {entry.CompressionType} (0x{entry.CompressionType:X})"); + builder.AppendLine($" Masked compression type: {entry.CompressionType & CompressionType.MASK_TYPE}"); + builder.AppendLine(entry.ReservedData, " Reserved data"); builder.AppendLine(); builder.AppendLine(" Data Blocks"); @@ -119,11 +119,11 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" Checksum = {dataBlock.Checksum} (0x{dataBlock.Checksum:X})"); - builder.AppendLine($" Compressed size = {dataBlock.CompressedSize} (0x{dataBlock.CompressedSize:X})"); - builder.AppendLine($" Uncompressed size = {dataBlock.UncompressedSize} (0x{dataBlock.UncompressedSize:X})"); - builder.AppendLine($" Reserved data = {(dataBlock.ReservedData == null ? "[NULL]" : BitConverter.ToString(dataBlock.ReservedData).Replace("-", " "))}"); - //builder.AppendLine($" Compressed data = {BitConverter.ToString(dataBlock.CompressedData).Replace("-", " ")}"); + builder.AppendLine(dataBlock.Checksum, " Checksum"); + builder.AppendLine(dataBlock.CompressedSize, " Compressed size"); + builder.AppendLine(dataBlock.UncompressedSize, " Uncompressed size"); + builder.AppendLine(dataBlock.ReservedData, " Reserved data"); + //builder.AppendLine(dataBlock.CompressedData, " Compressed data"); } } builder.AppendLine(); @@ -154,13 +154,13 @@ namespace BinaryObjectScanner.Printing continue; } - builder.AppendLine($" File size = {entry.FileSize} (0x{entry.FileSize:X})"); - builder.AppendLine($" Folder start offset = {entry.FolderStartOffset} (0x{entry.FolderStartOffset:X})"); - builder.AppendLine($" Folder index = {entry.FolderIndex} (0x{entry.FolderIndex:X})"); - builder.AppendLine($" Date = {entry.Date} (0x{entry.Date:X})"); - builder.AppendLine($" Time = {entry.Time} (0x{entry.Time:X})"); - builder.AppendLine($" Attributes = {entry.Attributes} (0x{entry.Attributes:X})"); - builder.AppendLine($" Name = {entry.Name ?? "[NULL]"}"); + builder.AppendLine(entry.FileSize, " File size"); + builder.AppendLine(entry.FolderStartOffset, " Folder start offset"); + builder.AppendLine($" Folder index: {entry.FolderIndex} (0x{entry.FolderIndex:X})"); + builder.AppendLine(entry.Date, " Date"); + builder.AppendLine(entry.Time, " Time"); + builder.AppendLine($" Attributes: {entry.Attributes} (0x{entry.Attributes:X})"); + builder.AppendLine(entry.Name, " Name"); } builder.AppendLine(); }