- Rust 100%
| src | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| README.md | ||
MSGLISTL Reader
A read-only command-line viewer for a Sony recorder's exported
MSGLISTL.MSF recording index. It displays the index update time, folder
paths, recording names and dates, and each entry's location in the file.
Build and run
On Linux or macOS, use Rust 1.85 or newer with Cargo.
cargo build --release --locked
./target/release/msglistl-reader /path/to/MSGLISTL.MSF
Example with fictional entries
MSGLISTL · 1 folder, 2 recordings
Index metadata
Updated 2024-01-01 11:00:00
Header bytes 4d 53 47 4c 00 05 20 80
File size 2260480 bytes
Record table 0x8020 · 0x220 bytes per slot
Slots 3 used / 4095 total · 4092 empty
Folders
└── A:\VOICE\EXAMPLE [slot 0 @ 0x8020]
Recordings (slot order)
├── 2024-01-01 09:00:00 240101_001 [slot 1 @ 0x8240]
└── 2024-01-01 10:30:00 240101_002 [slot 2 @ 0x8460]
Supported layout
The reader recognizes the observed MSGL 00 05 20 80 header and
2,260,480-byte file layout. There are 4,095 fixed-size slots of 0x220
bytes starting at 0x8020. Each populated slot begins with F for a folder
or M for a recording. Names begin at slot offset 0x20 and use UTF-16LE.
Recording dates occupy six bytes at slot offset 0x0a, with the year stored
as an offset from 1980. The index update time starts at file offset 0x08
with a 16-bit little-endian year followed by one byte each for the month,
day, hour, minute, and second.
Timestamps reflect the device clock, with invalid or unset values shown as
unknown. Folders and recordings appear in separate sections in slot order.
Folder links and playback order remain undecoded.
MSGLISTS.MSF and other layouts are outside the supported format.