SINTRAN III System-Segment Carver¶
Full path: tools/sintran-segment-carver/
Carves the individual system segments out of a SINTRAN III SMD disk image so
each can be loaded into Ghidra (or nd100-dis) at its correct load address for
reverse engineering — the file system, command processor, monitor-call handlers,
XMSG, ND-500 monitor, etc. Works for any SINTRAN version; the L/VSX-500 (L07) set
is included as the worked example.
Start here¶
| Document | What it covers |
|---|---|
| EXTRACTING-SEGMENTS.md | The full procedure: page/carve model, fact sources, reconcile.py -> carve.py pipeline, loading each segment into Ghidra, nd100-dis byte order. Read this first. |
| EXTRACTING-RESIDENT-CODE.md | The memory-resident code/data the carver skips: resident common code/data, RT-loader area, level-14 MON dispatch, and why the resident data cells are runtime-only. |
| versions/L-VSX-500/re/README.md | The L07 reverse-engineering tree: monitor-call analysis (incl. the full MON 60B / N500M carve) and the byte-verified ND-500 system-monitor carve (the ND-100 <-> ND-500 interface, end to end). |
| versions/L-VSX-500/re/HANDOFF-fold-live-capture.md | Open RE task: capture the password fold live via DAP (the fold's runtime values are not in any static carve). |
The pipeline in one line¶
ndtool -x SEGFIL0:DATA -> reconcile.py (facts) -> carve.py (big-endian .bin per segment) -> Ghidra
A SINTRAN page is 1024 words = 2048 bytes; a segment occupies
SEGFIL0[MADR*2048 : MADR*2048 + SEGLE*2048]; load each .bin at
(LOGAD*1024) & 0xFFFF. Full detail and the verification behind it are in
EXTRACTING-SEGMENTS.md.
Carved sets (per version)¶
| Version | Catalog |
|---|---|
| L-VSX-500 (L07) | versions/L-VSX-500/segments/README.md |
| K-VSX-500 (K05) | versions/K-VSX-500/segments/README.md |
| M-VSX-500 (M06) | versions/M-VSX-500/segments/README.md |
Files¶
| Path | Purpose |
|---|---|
reconcile.py |
merge live LIST-SEGMENT + manual + memory Segment Table into segment-facts.json |
carve.py |
carve one big-endian .bin per segment from the extracted SEGFIL0 (SECTOR=2048) |
ghidra_scripts/LoadSintranSegments.py |
Ghidra label-import helper |
ghidra-tasks/ |
self-contained Ghidra RE task handoffs (password/login, MON dispatch, ND-500 monitor, filesystem) |
versions/<VER>/inputs/ |
per-version inputs (listings + segment-table dump) |
versions/<VER>/segment-facts.json |
canonical reconciled facts |
versions/<VER>/segments/ |
carved .bin + manifest.json + per-version catalog |