Skip to content

Add native Berla iVe .iVa input - #173

Merged
abrignoni merged 3 commits into
mainfrom
feat/iva-input
Aug 31, 2026
Merged

Add native Berla iVe .iVa input#173
abrignoni merged 3 commits into
mainfrom
feat/iva-input

Conversation

@abrignoni

Copy link
Copy Markdown
Owner

Adds -t iva, so a Berla iVe .iVa export runs directly. Before this the export had to be unwrapped by hand and a direct run produced an empty report.

FileSeekerIva reaches through the nested zips. When the export carries a raw disk image it reads that with the vendored qnxprobe, the more complete route: on the tested export it reaches a fourth QNX6 volume the vendor's extracted file set does not include. Vehicle.json is staged at the root so the acquisition record reports beside the vehicle data.

The validator maps .iVa by extension and takes raw only from an entry-level input_type field, never guessed from .bin.

Measured against the evidence export: ten artifacts, same row counts as the raw image run, no database errors; -t zip and -t raw unchanged.

abrignoni and others added 3 commits August 30, 2026 22:18
-t iva takes an iVe export directly. A .iVa is a ZIP holding another ZIP, and
the seekers do not descend into nested archives, so before this the export had
to be unwrapped by hand and a direct run produced an empty report.

FileSeekerIva reaches through the nesting itself. When the export carries a raw
disk image, that image is read with the vendored qnxprobe, which is the more
complete route: on the tested export it reaches a fourth QNX6 volume the
vendor's own extracted file set does not include. When no raw image is present
the extracted file set is used as it stands. Either way Vehicle.json is staged
at the root, so the export's acquisition record is reported beside the vehicle
data. Everything intermediate lands in a temporary directory and cleanup()
removes it; the unwrap script remains the way to keep the intermediate zip for
cheap re-runs on a large export.

The qnxprobe runner moves out of FileSeekerRaw into a module helper both
seekers share. The GUI needs only a file picker entry: it derives the input
type from the suffix, and .iVa lowercases to the new type on its own.

Measured against the evidence .iVa: all nine vehicle artifacts return the same
row counts as the raw image run, plus the export record's four rows, with no
database errors, and -t zip and -t raw runs are unchanged after the refactor.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
input_type_for learns .iva, which is unambiguous, and honours an entry-level
input_type field, which wins outright. A raw disk image is never guessed from
its extension: the registry holds .bin files that are readable images and .bin
files that are chip-level LUN dumps no walker opens, so raw is opt-in per
entry, and an unknown declared type maps to nothing rather than something.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The unwrap script's docstring and both artifacts' notes described unwrapping as
the only way to reach a .iVa's vehicle data, which -t iva makes untrue. The
script remains the way to keep the intermediate zip for cheap re-runs, and the
notes now say so instead.

The Bluetooth artifacts' sample_data moves from the derived corpus entry to the
evidence .iVa itself, re-measured through -t iva at the same 507, 126 and 2
rows, so the derived copy of the export's inner zip no longer needs to exist in
the corpus.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@abrignoni
abrignoni merged commit 7d71d0b into main Aug 31, 2026
10 checks passed
@abrignoni
abrignoni deleted the feat/iva-input branch August 31, 2026 02:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant