btparser/cparser/ISOTemplate.bt

109 lines
2.4 KiB
Plaintext

//--------------------------------------
//--- 010 Editor v5.0 Binary Template
//
// File: ISOTemplate.bt
// Author: Anton Kochkov
// Revision: 0.1
// Purpose: Show contents of the ISO headers
//--------------------------------------
BitfieldRightToLeft();
BitfieldDisablePadding();
#define BLOCK_SIZE 2048
#define BOOT_RECORD_OFFSET 2048 * 16
typedef struct _BOOT_RECORD
{
ubyte BootIndicator;
char IsoId[5];
ubyte Version;
char Identifier[32];
ubyte Unused[32];
uint32 BootCatalog;
ubyte Unused2[5];
uint32 VolSpaceSize[2];
} BOOT_RECORD_DESC;
typedef struct {
ubyte VolDescType;
byte StdId[5];
ubyte VolDescVer;
} VOLUME_DESCRIPTOR_HEADER;
typedef struct {
uint32 Year;
uint16 Month;
uint16 Day;
uint16 Hour;
uint16 Minute;
uint16 Second;
uint16 HSecond;
byte Offset;
} CD_DATE_TIME;
typedef struct {
ubyte Year;
ubyte Month;
ubyte Day;
ubyte Hour;
ubyte Minute;
ubyte Second;
byte Offset;
} FILE_DATE_TIME;
typedef struct {
ubyte RecordLength;
ubyte ExtAttrRecLength;
uint64 StartLba;
uint64 DataLength;
FILE_DATE_TIME RecTime;
ubyte Flags;
ubyte FileUnitSize;
ubyte InterleaveGap;
uint32 VolSeqNum;
ubyte FileIdLength;
ubyte FileId[1];
} ROOT_DIR_HEADER;
typedef struct {
VOLUME_DESCRIPTOR_HEADER Header;
ubyte Flags;
byte SysId[32];
byte VolId[32];
uint64 Unused;
uint64 VolSpaceSize;
byte EscSeq[32];
uint32 VolSetSize;
uint32 VolSeqNum;
uint32 LBlockSize;
uint64 PathTblSize;
uint32 LPathTbl1;
uint32 LPathTbl2;
uint32 MPathTbl1;
uint32 MPathTbl2;
ROOT_DIR_HEADER Root;
byte VolSetId[128];
byte PublisherId[128];
byte DataPrepId[128];
byte ApplicationId[128];
byte CopyrightFileId[37];
byte AbstractFileId[37];
byte BiblioFileId[37];
CD_DATE_TIME CreationTime;
CD_DATE_TIME ModifyTime;
CD_DATE_TIME ExpireTime;
CD_DATE_TIME EffectiveTime;
ubyte FileStrucVer;
ubyte Unused1;
} PRIMARY_VOLUME_DESC_HEADER;
LittleEndian();
FSeek(BOOT_RECORD_OFFSET);
union {
BOOT_RECORD_DESC boot_record;
PRIMARY_VOLUME_DESC_HEADER primary_volume;
} disk_header;