Windows Executable Header and Data Handler¶
[1]:
from byteclasses.handlers.executables.pe import DOSHdr, NTHdr32
from byteclasses.print import byteclass_info, byteclass_inspect
[2]:
with open("../../../tests/data/hello_world.pe", "rb") as file:
data = file.read()
dos_hdr = DOSHdr()
dos_hdr.attach(memoryview(data))
[3]:
byteclass_info(dos_hdr)
Byteclass Info ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Property ┃ Value ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ type() │ DOSHdr │ │ is_byteclass() │ True │ │ is_collection_instance() │ True │ │ is_primitive_instance() │ False │ │ mro │ DOSHdr -> object │ │ len() │ 64 │ │ str() │ DOSHdr(e_magic=Word(data=b'MZ', byte_order=b'@'), e_cblp=UInt16(144), │ │ │ e_cp=UInt16(3), e_crlc=UInt16(0), e_cparhdr=UInt16(4), e_minalloc=UInt16(0), │ │ │ e_maxalloc=UInt16(65535), e_ss=UInt16(0), e_sp=UInt16(184), e_csum=UInt16(0), │ │ │ e_ip=UInt16(0), e_cs=UInt16(0), e_lfarlc=UInt16(64), e_ovno=UInt16(0), │ │ │ e_res=ByteArray(4, UInt16), e_oemid=UInt16(0), e_oeminfo=UInt16(0), │ │ │ e_res2=ByteArray(10, UInt16), e_lfanew=Ptr32(0xe8)) │ │ repr() │ DOSHdr(byte_order=b'@',data=bytearray(b'MZ\x90\x00\x03\x00\x00\x00\x04\x00\x00\x00\… │ │ .data │ bytearray(b'MZ\x90\x00\x03\x00\x00\x00\x04\x00\x00\x00\xff\xff\x00\x00\xb8\x00\x00\… │ └──────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────┘
[4]:
byteclass_inspect(dos_hdr)
╭────────────────── Byteclass Inspect ──────────────────╮ │ 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f │ │ ----------------------------------------------------- │ │ 0x0 |4d 5a|90 00|03 00|00 00|04 00|00 00|ff ff|00 00 │ │ 0x10 |b8 00|00 00|00 00|00 00|40 00|00 00|00 00 00 00 │ │ 0x20 00 00 00 00|00 00|00 00|00 00 00 00 00 00 00 00 │ │ 0x30 00 00 00 00 00 00 00 00 00 00 00 00|e8 00 00 00 │ │ 0x40 │ ╰───────────────────────────────────────────────────────╯
Legend ┏━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Member ┃ Value ┃ ┡━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ e_magic │ b'MZ' │ │ e_cblp │ 144 │ │ e_cp │ 3 │ │ e_crlc │ 0 │ │ e_cparhdr │ 4 │ │ e_minalloc │ 0 │ │ e_maxalloc │ 65535 │ │ e_ss │ 0 │ │ e_sp │ 184 │ │ e_csum │ 0 │ │ e_ip │ 0 │ │ e_cs │ 0 │ │ e_lfarlc │ 64 │ │ e_ovno │ 0 │ │ e_res │ (UInt16(0), UInt16(0), UInt16(0), UInt16(0)) │ │ e_oemid │ 0 │ │ e_oeminfo │ 0 │ │ e_res2 │ (UInt16(0), UInt16(0), UInt16(0), UInt16(0), UInt16(0), UInt16(0), UInt16(0), UInt16(0), │ │ │ UInt16(0), UInt16(0)) │ │ e_lfanew │ 0x000000e8 │ └────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────┘
[5]:
nt32_hdr = NTHdr32()
nt32_hdr.attach(data[dos_hdr.e_lfanew.value :])
[6]:
byteclass_info(nt32_hdr)
Byteclass Info ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Property ┃ Value ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ type() │ NTHdr32 │ │ is_byteclass() │ True │ │ is_collection_instance() │ True │ │ is_primitive_instance() │ False │ │ mro │ NTHdr32 -> object │ │ len() │ 248 │ │ str() │ NTHdr32(signature=DWord(data=b'PE\x00\x00', byte_order=b'@'), │ │ │ file_hdr=FileHdr(byte_order=b'@',data=bytearray(b'L\x01\t\x00\xb3\xed\x15c\x00\x00\… │ │ │ opt_hdr=OptHdr32(byte_order=b'@',data=bytearray(b'\x0b\x01\x0e\x1d\x00V\x00\x00\x00… │ │ repr() │ NTHdr32(byte_order=b'@',data=bytearray(b'PE\x00\x00L\x01\t\x00\xb3\xed\x15c\x00\x00… │ │ .data │ bytearray(b'PE\x00\x00L\x01\t\x00\xb3\xed\x15c\x00\x00\x00\x00\x00\x00\x00\x00\xe0\… │ └──────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────┘
[7]:
byteclass_inspect(nt32_hdr)
╭────────────────── Byteclass Inspect ──────────────────╮ │ 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f │ │ ----------------------------------------------------- │ │ 0x0 |50 45 00 00|4c 01 09 00 b3 ed 15 63 00 00 00 00 │ │ 0x10 00 00 00 00 e0 00 02 01|0b 01 0e 1d 00 56 00 00 │ │ 0xf0 00 46 00 00 00 00 00 00 23 10 01 00 00 10 00 00 │ │ 00 10 00 00 00 00 40 00 00 10 00 00 00 02 00 00 06 00 │ │ 00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 02 00 │ │ 00 04 00 00 00 00 00 00 03 00 40 81 00 00 10 00 00 10 │ │ 00 00 00 00 10 00 00 10 00 00 00 00 00 00 10 00 00 00 │ │ 00 00 00 00 00 00 00 00 c4 b1 01 00 50 00 00 00 00 e0 │ │ 01 00 3c 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ │ 00 00 00 00 00 f0 01 00 9c 03 00 00 f8 84 01 00 38 00 │ │ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ │ 00 00 00 00 00 00 00 00 30 85 01 00 40 00 00 00 00 00 │ │ 00 00 00 00 00 00 00 b0 01 00 c4 01 00 00 00 00 00 00 │ │ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ │ 00 00 │ ╰───────────────────────────────────────────────────────╯
Legend ┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Member ┃ Value ┃ ┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ signature │ b'PE\x00\x00' │ │ file_hdr │ FileHdr(machine=UInt16(332), number_of_sections=UInt16(9), time_datestamp=UInt32(1662381491), │ │ │ ptr_to_sym_tbl=Ptr32(0x0), num_of_sym=UInt32(0), size_of_opt_hdr=UInt16(224), │ │ │ characteristics=UInt16(258)) │ │ opt_hdr │ OptHdr32(magic=Word(data=b'\x0b\x01', byte_order=b'@'), major_linker_ver=UInt8(14), │ │ │ minor_linker_ver=UInt8(29), size_of_code=UInt32(22016), size_of_init_data=UInt32(17920), │ │ │ size_of_uninit_data=UInt32(0), addr_of_entrypoint=Ptr32(0x11023), base_of_code=Ptr32(0x1000), │ │ │ base_of_data=Ptr32(0x1000), image_base=Ptr32(0x400000), section_alignment=UInt32(4096), │ │ │ file_alignment=UInt32(512), major_os_ver=UInt16(6), minor_os_ver=UInt16(0), │ │ │ major_img_ver=UInt16(0), minor_img_ver=UInt16(0), major_subsys_ver=UInt16(6), │ │ │ minor_subsys_ver=UInt16(0), win32_ver_val=UInt32(0), size_of_img=UInt32(131072), │ │ │ size_of_hdrs=UInt32(1024), checksum=UInt32(0), subsystem=UInt16(3), │ │ │ dll_characteristics=BitField16(data=b'@\x81'), size_of_stack_reserve=UInt32(1048576), │ │ │ size_of_stack_commit=UInt32(4096), size_of_heap_reserve=UInt32(1048576), │ │ │ size_of_heap_commit=UInt32(4096), loader_flags=BitField32(data=b'\x00\x00\x00\x00'), │ │ │ num_of_rva_and_sizes=UInt32(16), data_directory=ByteArray(16, DataDir)) │ └───────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────┘
[8]:
byteclass_info(nt32_hdr.file_hdr)
Byteclass Info ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Property ┃ Value ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ type() │ FileHdr │ │ is_byteclass() │ True │ │ is_collection_instance() │ True │ │ is_primitive_instance() │ False │ │ mro │ FileHdr -> object │ │ len() │ 20 │ │ str() │ FileHdr(machine=UInt16(332), number_of_sections=UInt16(9), │ │ │ time_datestamp=UInt32(1662381491), ptr_to_sym_tbl=Ptr32(0x0), num_of_sym=UInt32(0), │ │ │ size_of_opt_hdr=UInt16(224), characteristics=UInt16(258)) │ │ repr() │ FileHdr(byte_order=b'@',data=bytearray(b'L\x01\t\x00\xb3\xed\x15c\x00\x00\x00\x00\x… │ │ .data │ bytearray(b'L\x01\t\x00\xb3\xed\x15c\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\x02\x0… │ └──────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────┘
[9]:
byteclass_inspect(nt32_hdr.file_hdr)
╭────────────────── Byteclass Inspect ──────────────────╮ │ 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f │ │ ----------------------------------------------------- │ │ 0x0 |4c 01|09 00|b3 ed 15 63|00 00 00 00|00 00 00 00 │ │ 0x10 |e0 00|02 01 │ ╰───────────────────────────────────────────────────────╯
Legend ┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓ ┃ Member ┃ Value ┃ ┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩ │ machine │ 332 │ │ number_of_sections │ 9 │ │ time_datestamp │ 1662381491 │ │ ptr_to_sym_tbl │ 0x00000000 │ │ num_of_sym │ 0 │ │ size_of_opt_hdr │ 224 │ │ characteristics │ 258 │ └────────────────────┴────────────┘
[10]:
byteclass_info(nt32_hdr.opt_hdr)
Byteclass Info ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Property ┃ Value ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ type() │ OptHdr32 │ │ is_byteclass() │ True │ │ is_collection_instance() │ True │ │ is_primitive_instance() │ False │ │ mro │ OptHdr32 -> object │ │ len() │ 224 │ │ str() │ OptHdr32(magic=Word(data=b'\x0b\x01', byte_order=b'@'), major_linker_ver=UInt8(14), │ │ │ minor_linker_ver=UInt8(29), size_of_code=UInt32(22016), │ │ │ size_of_init_data=UInt32(17920), size_of_uninit_data=UInt32(0), │ │ │ addr_of_entrypoint=Ptr32(0x11023), base_of_code=Ptr32(0x1000), │ │ │ base_of_data=Ptr32(0x1000), image_base=Ptr32(0x400000), │ │ │ section_alignment=UInt32(4096), file_alignment=UInt32(512), major_os_ver=UInt16(6), │ │ │ minor_os_ver=UInt16(0), major_img_ver=UInt16(0), minor_img_ver=UInt16(0), │ │ │ major_subsys_ver=UInt16(6), minor_subsys_ver=UInt16(0), win32_ver_val=UInt32(0), │ │ │ size_of_img=UInt32(131072), size_of_hdrs=UInt32(1024), checksum=UInt32(0), │ │ │ subsystem=UInt16(3), dll_characteristics=BitField16(data=b'@\x81'), │ │ │ size_of_stack_reserve=UInt32(1048576), size_of_stack_commit=UInt32(4096), │ │ │ size_of_heap_reserve=UInt32(1048576), size_of_heap_commit=UInt32(4096), │ │ │ loader_flags=BitField32(data=b'\x00\x00\x00\x00'), num_of_rva_and_sizes=UInt32(16), │ │ │ data_directory=ByteArray(16, DataDir)) │ │ repr() │ OptHdr32(byte_order=b'@',data=bytearray(b'\x0b\x01\x0e\x1d\x00V\x00\x00\x00F\x00\x0… │ │ .data │ bytearray(b'\x0b\x01\x0e\x1d\x00V\x00\x00\x00F\x00\x00\x00\x00\x00\x00#\x10\x01\x00… │ └──────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────┘
[11]:
byteclass_inspect(nt32_hdr.opt_hdr)
╭────────────────── Byteclass Inspect ──────────────────╮ │ 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f │ │ ----------------------------------------------------- │ │ 0x0 |0b 01|0e|1d|00 56 00 00|00 46 00 00|00 00 00 00 │ │ 0x10 |23 10 01 00|00 10 00 00|00 10 00 00|00 00 40 00 │ │ 0x20 |00 10 00 00|00 02 00 00|06 00|00 00|00 00|00 00 │ │ 0x30 |06 00|00 00|00 00 00 00|00 00 02 00|00 04 00 00 │ │ 0x40 |00 00 00 00|03 00|40 81|00 00 10 00|00 10 00 00 │ │ 0x50 |00 00 10 00|00 10 00 00|00 00 00 00|10 00 00 00 │ │ 0x60 |00 00 00 00 00 00 00 00 c4 b1 01 00 50 00 00 00 │ │ 0xe0 00 e0 01 00 3c 04 00 00 00 00 00 00 00 00 00 00 │ │ 00 00 00 00 00 00 00 00 00 f0 01 00 9c 03 00 00 f8 84 │ │ 01 00 38 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ │ 00 00 00 00 00 00 00 00 00 00 00 00 30 85 01 00 40 00 │ │ 00 00 00 00 00 00 00 00 00 00 00 b0 01 00 c4 01 00 00 │ │ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ │ 00 00 00 00 00 00 │ ╰───────────────────────────────────────────────────────╯
Legend ┏━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Member ┃ Value ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ magic │ b'\x0b\x01' │ │ major_linker_ver │ 14 │ │ minor_linker_ver │ 29 │ │ size_of_code │ 22016 │ │ size_of_init_data │ 17920 │ │ size_of_uninit_data │ 0 │ │ addr_of_entrypoint │ 0x00011023 │ │ base_of_code │ 0x00001000 │ │ base_of_data │ 0x00001000 │ │ image_base │ 0x00400000 │ │ section_alignment │ 4096 │ │ file_alignment │ 512 │ │ major_os_ver │ 6 │ │ minor_os_ver │ 0 │ │ major_img_ver │ 0 │ │ minor_img_ver │ 0 │ │ major_subsys_ver │ 6 │ │ minor_subsys_ver │ 0 │ │ win32_ver_val │ 0 │ │ size_of_img │ 131072 │ │ size_of_hdrs │ 1024 │ │ checksum │ 0 │ │ subsystem │ 3 │ │ dll_characteristics │ BitField16(0000001010000001, flags={}) │ │ size_of_stack_reserve │ 1048576 │ │ size_of_stack_commit │ 4096 │ │ size_of_heap_reserve │ 1048576 │ │ size_of_heap_commit │ 4096 │ │ loader_flags │ BitField32(00000000000000000000000000000000, flags={}) │ │ num_of_rva_and_sizes │ 16 │ │ data_directory │ (DataDir(byte_order=b'@',data=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\xc4\xb1\x01\x00P\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\xe0\x01\x00<\x04\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\xf0\x01\x00\x9c\x03\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\xf8\x84\x01\x008\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'0\x85\x01\x00@\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\xb0\x01\x00\xc4\x01\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00'))) │ └───────────────────────┴─────────────────────────────────────────────────────────────────────────────────────────┘
[12]:
byteclass_info(nt32_hdr.opt_hdr.data_directory)
Byteclass Info ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Property ┃ Value ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ type() │ ByteArray │ │ is_byteclass() │ True │ │ is_collection_instance() │ True │ │ is_primitive_instance() │ False │ │ mro │ ByteArray -> object │ │ len() │ 128 │ │ str() │ (DataDir(byte_order=b'@',data=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\xc4\xb1\x01\x00P\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\xe0\x01\x00<\x04\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\xf0\x01\x00\x9c\x03\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\xf8\x84\x01\x008\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'0\x85\x01\x00@\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\xb0\x01\x00\xc4\x01\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')), │ │ │ DataDir(byte_order=b'@',data=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00'))) │ │ repr() │ ByteArray(16, DataDir) │ │ .data │ b'\x00\x00\x00\x00\x00\x00\x00\x00\xc4\xb1\x01\x00P\x00\x00\x00\x00\xe0\x01\x00<\x0… │ └──────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────┘
[13]:
byteclass_inspect(nt32_hdr.opt_hdr.data_directory)
╭────────────────── Byteclass Inspect ──────────────────╮ │ 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f │ │ ----------------------------------------------------- │ │ 0x0 |00 00 00 00 00 00 00 00|c4 b1 01 00 50 00 00 00 │ │ 0x10 |00 e0 01 00 3c 04 00 00|00 00 00 00 00 00 00 00 │ │ 0x20 |00 00 00 00 00 00 00 00|00 f0 01 00 9c 03 00 00 │ │ 0x30 |f8 84 01 00 38 00 00 00|00 00 00 00 00 00 00 00 │ │ 0x40 |00 00 00 00 00 00 00 00|00 00 00 00 00 00 00 00 │ │ 0x50 |30 85 01 00 40 00 00 00|00 00 00 00 00 00 00 00 │ │ 0x60 |00 b0 01 00 c4 01 00 00|00 00 00 00 00 00 00 00 │ │ 0x70 |00 00 00 00 00 00 00 00|00 00 00 00 00 00 00 00 │ │ 0x80 │ ╰───────────────────────────────────────────────────────╯
Legend ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Member ┃ Value ┃ ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ 0 │ DataDir(vaddr=Ptr32(0x0), size=UInt32(0)) │ │ 1 │ DataDir(vaddr=Ptr32(0x1b1c4), size=UInt32(80)) │ │ 2 │ DataDir(vaddr=Ptr32(0x1e000), size=UInt32(1084)) │ │ 3 │ DataDir(vaddr=Ptr32(0x0), size=UInt32(0)) │ │ 4 │ DataDir(vaddr=Ptr32(0x0), size=UInt32(0)) │ │ 5 │ DataDir(vaddr=Ptr32(0x1f000), size=UInt32(924)) │ │ 6 │ DataDir(vaddr=Ptr32(0x184f8), size=UInt32(56)) │ │ 7 │ DataDir(vaddr=Ptr32(0x0), size=UInt32(0)) │ │ 8 │ DataDir(vaddr=Ptr32(0x0), size=UInt32(0)) │ │ 9 │ DataDir(vaddr=Ptr32(0x0), size=UInt32(0)) │ │ 10 │ DataDir(vaddr=Ptr32(0x18530), size=UInt32(64)) │ │ 11 │ DataDir(vaddr=Ptr32(0x0), size=UInt32(0)) │ │ 12 │ DataDir(vaddr=Ptr32(0x1b000), size=UInt32(452)) │ │ 13 │ DataDir(vaddr=Ptr32(0x0), size=UInt32(0)) │ │ 14 │ DataDir(vaddr=Ptr32(0x0), size=UInt32(0)) │ │ 15 │ DataDir(vaddr=Ptr32(0x0), size=UInt32(0)) │ └────────┴──────────────────────────────────────────────────┘