Header Trailer Fields - krcenov/RNS510-Map-Viewer GitHub Wiki
NOT_COMPRESSED Header Trailer Fields
Status: ✅ Cracked — a cross-cutting finding that applies to every
NOT_COMPRESSED file on the disc, not just one. Found while investigating
eeu.aff, then verified against all 22
NOT_COMPRESSED files present on the reference disc.
Background
Every NOT_COMPRESSED file (eeu.rd,
.il,
.iof,
.typ,
.ctr, .cty,
.abc, .aff, ...) shares the same
94-byte SIEMENS/(C) SIEMENS AG header. Only the literal ASCII version
strings near the front were previously decoded — this session found 3
more meaningful fields in the header's own tail.
The fields
| Bytes | Type | Field | Status |
|---|---|---|---|
[84:86] |
uint16 LE | file_type |
A small per-logical-file-type code, unique per file (e.g. eeu.rd=4, eeu.cty=3, eeu.typ=1) |
[86:88] |
uint16 LE | record_count_lo16 |
That file's own record count, truncated to 16 bits for files whose real count exceeds 65,536 |
[90:94] |
uint32 LE | total_size |
The file's total size in bytes — for most files |
Validation
record_count_lo16 checked exactly against every already-known real
record count on the disc:
eeu.typ(2,574 records) — matches exactly.eeu.ctr(35 records) — matches exactly.eeu.rd(8,809,081 records, exceeds a uint16):8,809,081 mod 65,536 = 27,257— matches the header exactly.eeu.cty(939,351 records, exceeds a uint16):939,351 mod 65,536 = 21,847— matches the header exactly.
Practical use: for a not-yet-examined file, dividing (filesize - 94)
by this field (trying field + 65536*k for small k if the plain field
doesn't divide evenly) is a fast way to GUESS a real fixed record size
before reverse-engineering the body at all.
total_size matches the real file size exactly on 18 of 22
NOT_COMPRESSED files checked. Known exceptions:
eeu.iofandeeu.modstore the body size instead (off from the real total by exactly 94 — the header's own size).eeu.cal's value (24,778) matches neither convention against its real size (23,326) — unexplained.
Derived record-size candidates for 5 still-unexamined files
Using record_count_lo16 against each file's own real body size — not
independently verified against real content, but an exact-integer
division at k=0 for all 5 is a strong structural signal, not a guess:
| File | Records | Record size | Body size |
|---|---|---|---|
eeu.cal |
484 | 48 bytes | 23,232 |
eeu.cny |
2,326 | 176 bytes | 409,376 |
eeu.si |
24,353 | 8 bytes | 194,824 |
eeu.stt |
691 | 114 bytes | 78,774 |
eeu.ti |
17 | 23 bytes | 391 |
eeu.pmc/eeu.pmm (record_count_lo16 = 20,872 each) do not divide
their own body sizes evenly at k=0..4 — either their real record size
isn't fixed, the true count needs a larger wraparound multiple, or they
don't use this convention at all. eeu.mod/eeu.tmc both show
record_count_lo16 == 0 — consistent with either a genuinely
variable-length body (like eeu.il, which also doesn't fit a clean
fixed-record model) or a real count that happens to be an exact multiple
of 65,536 (implausible for files this size).
See Unexamined Files for the full remaining list.
Reader code
research/aff_reader.py — decode_not_compressed_header() (works on any
NOT_COMPRESSED file's header, not just eeu.aff).