-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathHeader.cpp
More file actions
47 lines (37 loc) · 1.16 KB
/
Header.cpp
File metadata and controls
47 lines (37 loc) · 1.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include "Header.h"
namespace Evtx {
const char Header::MAGIC[Header::MAGIC_LENGTH] = "ElfFile";
Header::Header(void)
{
}
Header::Header(FILE* stream) {
Header();
fseek(stream, 0, SEEK_SET);
// TODO: check whether file signature is correct
fseek(stream, CurrentChunkNumOffset, SEEK_SET);
fread(&CurrentChunkNum, sizeof int64, 1, stream);
fread(&NextRecordNum, sizeof int64, 1, stream);
fseek(stream, sizeof uint32, SEEK_CUR); // pass HeaderPart1Len
fread(&MinorVersion, sizeof uint16, 1, stream);
fread(&MajorVersion, sizeof uint16, 1, stream);
fseek(stream, sizeof uint16, SEEK_CUR); // pass HeaderSize
fread(&ChunkCount, sizeof uint16, 1, stream);
fseek(stream, (sizeof (char)) * UnknownBlock2Size, SEEK_CUR); // pass unknown block #2
fread(&Flags, sizeof uint32, 1, stream);
fread(&Checksum, sizeof uint32, 1, stream);
}
Header::~Header(void)
{
}
bool Header::isDirty(void) {
return (Flags & DIRTY) != 0;
}
bool Header::isFull(void) {
return (Flags & FULL) != 0;
}
bool Header::hasValidCRC(void) {
// TODO: calculate header CRC
// and compare it to the value given in the file
return true;
}
}