Digital forensics · operator guide

From exhibit to certificate, without a wrong turn.

Every forensic feature - the examination workbench, ingest, the viewers, gallery, geo, timeline and memory, the media enhancement lab and metrology, authenticity, steganalysis, plate reading, the DVR recorders registry, the case workbench and the report - each with the exact steps, the options and what to choose, the modals, and ten real situations.

CASE-UCO court exportS.63(4) BSA-2023 certificatePRNU + ALPR in one tool
Feature 1 · Examination workbench

Open a case, verify it, and work the investigator loop

The forensic core: a sealed case, hashed exhibits, verification before analysis, the examiner's reading sealed before any AI observation, and a court-ready report.

1How to get there

Home opens on the case workbench. The examination itself spans several workspaces; this is where it starts and ends.

HomeForensic examinationOpen or create a case
The forensic examination workbench with a case open
  1. 1Add an exhibit add an exhibit - it is hashed on the way in.
  2. 2What's next the guided next step through the investigator loop.
  3. 3The checklist the standing-order checklist for the whole examination.
  4. 4Print sheet print the intake sheet for the paper file.
app-mf-forensics-home.webp - a case with an exhibit added (real capture)

2AI: which mode, and when

Deterministic mode
No AI. Every result is a reproducible measurement. The default evidentiary path.
Choose this when the output may be relied on in proceedings - always start here.
Local model pack
Runs offline models on the machine; results are labelled AI observations, never findings.
Choose this when you want an investigative lead and can keep it clearly separate from the sealed reading.
Cloud AI
Per-agency switch, off by default; sends only frame digests, logs every one that leaves.
Choose this when your agency has authorised it and a transfer manifest is acceptable.

The rule that keeps it admissible. The examiner's own reading is sealed BEFORE any AI answer is shown, and an AI response is an “AI observation” - model, version, prompt and input hashes recorded - never a finding, and never promoted except by a typed reviewer decision. This is the discipline that keeps the work admissible.

3The options that seal the case

OptionWhat it doesWhat to choose
mode forensicSets the bench to hash every item and write the chain-of-custody manifest.Always, before the first acquisition or scan on a case.
validateRuns the shipping engine against images whose contents are known and writes a dated report.Before the tool is used on a case, or when a quality process asks for evidence it performs as claimed.
audit <case>Verifies the hash-chained trail and names the first break, if any.At the close of a case, and again before disclosure.
audit --manifestAdds the sealed receipt so truncation at the end of the trail is caught too.For evidential work: treat the manifest as required, or a cut-short trail still verifies.

4Step by step

  1. Set the bench to forensic mode
    This hashes every item and writes the manifest. Do it before any acquisition or scan.
  2. Open or create the case
    A case seals its exhibits and records who did what, when.
  3. Add the exhibit
    The image or extraction is hashed on the way in; the hash is the anchor for everything after.
  4. Verify before you analyse
    Verification sits between acquisition and analysis so every finding rests on a checked copy.
  5. Work the loop
    Timeline, memory, artefacts, keyword search - each writes to the case, not to a scratchpad.
  6. Seal your reading, then reveal any AI
    The examiner's own conclusion is recorded first; only then is an AI observation shown, and it stays an observation.
  7. Report
    The CASE-UCO export and the S.63(4) BSA-2023 certificate, generated from what the case actually holds.

Do not do this. Do not examine the original machine. Work from a verified image, or every finding rests on something that has since changed. And do not rely on one artefact - corroborate across several, because that is what makes a finding hold up.

5Ten situations, and exactly what to do

1 of 10

What happened, and when

You need an ordered account of activity on a seized disk, not the content of one file.

What to choose

Deterministic mode. Fold every dated artefact into one super-timeline.

Steps
  1. mode forensic
  2. Add and verify the disk image
  3. Run the super-timeline
  4. Export the ordered events to CSV
recoveryantra timeline E:/Case/Ex1/artefacts --out E:/Case/Ex1/timeline.csv
2 of 10

Prove nothing changed

The handling of the exhibit will be examined as closely as the findings.

What to choose

The hash-chained audit trail and the write-block report - both measured, not asserted.

Steps
  1. Add the exhibit (hashed in)
  2. Run validate on this bench
  3. Verify the audit chain with the manifest
  4. Attach both to the report
recoveryantra audit E:/Case/Ex1/audit_trail.jsonl --manifest E:/Case/Ex1/recovery_manifest.json
3 of 10

What was run on this machine

Whether a program executed, and when, has to be answered from several artefacts.

What to choose

Windows execution artefacts - Prefetch, AmCache, ShellBags - folded onto one timeline.

Steps
  1. Recover the artefact files from the image
  2. Timeline, narrowed to prefetch
  3. Corroborate across several artefacts
  4. Cite each in the report
recoveryantra timeline E:/Case/Ex1/Out --kind prefetch --out E:/Case/Ex1/exec.csv
4 of 10

A memory image to examine

Memory was captured while the machine ran; it answers what the disk cannot.

What to choose

Deterministic memory analysis - name the OS first, then run the plugin.

Steps
  1. Identify the OS and symbols
  2. Run pslist through Volatility 3
  3. Record a process row as a finding
  4. Keep the JSON with the case
recoveryantra memory info E:/Case/Ex1/memory.raw
5 of 10

The tool has to be validated first

An accreditation or a client requires evidence the tool performs as claimed at this version.

What to choose

The validation harness against images whose ground truth is known, written to a dated report.

Steps
  1. Run every group
  2. Or run selected groups
  3. Add the federated conformance report
  4. File the dated report with the quality record
recoveryantra validate --out E:/Quality/2026-08
6 of 10

A recovery turns into an investigation

Part way through a routine recovery something changes the nature of the job.

What to choose

Switch the bench to forensic mode before the next action, then re-run in the forensic profile.

Steps
  1. mode forensic before touching anything else
  2. Re-run recovery in the forensic profile with a report
  3. Verify the trail before disclosure
  4. Keep the manifest
recoveryantra recover --image E:/case.dd -o E:/Case/Out --profile forensic --include-intact --report
7 of 10

A departing employee denied copying

You need to show whether a USB device connected and files left with it.

What to choose

The change journal, shortcut files and ShellBags together, on one timeline, corroborated.

Steps
  1. Examine a verified image, never the original machine
  2. Timeline the artefacts
  3. Filter to the device and the window
  4. Corroborate across artefacts before concluding
recoveryantra timeline E:/Case/Ex1/Out --text USB --out E:/Case/Ex1/usb.csv
8 of 10

Injected code in one process

A memory image shows a process you want to test for injection.

What to choose

Deterministic malfind on the one PID, as structured output.

Steps
  1. Identify the OS
  2. Run malfind on the process id
  3. Read the injected regions
  4. Record the row as a finding
recoveryantra memory run E:/Case/Ex1/memory.raw --plugin malfind --pid 4188 --symbols E:/symbols --json
9 of 10

No Volatility 3 on the bench

You have a memory image but the machine has no Volatility 3 installed.

What to choose

The in-house reader, which needs no symbol file, for processes including terminated ones.

Steps
  1. Run the in-house scan action
  2. Read the process table
  3. Note the honest limit against a full Volatility run
  4. Record the finding
recoveryantra memory scan E:/Case/Ex1/memory.raw --action psscan --limit 200
10 of 10

References to one binary

You need to find where a specific executable is mentioned, separating deleted from present.

What to choose

A case search on the binary name, with the deleted state kept distinct.

Steps
  1. Recover the artefacts and content
  2. Search the case for the binary
  3. Separate deleted from present
  4. Cite the artefact, not the search
recoveryantra search E:/Case/Ex1/Out "tool.exe" --state deleted

6The same job at the command line

recoveryantra mode forensic && recoveryantra audit E:/Case/Ex1/audit_trail.jsonl --manifest E:/Case/Ex1/recovery_manifest.json
Feature 2 · Ingest dashboard

Bring evidence into a case through one pipeline

Add a source, hash it on entry, and run every processing stage with a live dashboard - stopping only at clean stage boundaries.

1How to get there

HomeIngestAdd a source → Run
The ingest dashboard with an exhibit's pipeline stages
  1. 1Source path the source to add to the case queue.
  2. 2Add enqueue the source for the pipeline.
  3. 3Run queued stages run the pipeline stages with live progress.
  4. 4Stop halt at a stage boundary, cleanly.
app-mf-ingest.webp - the six-stage pipeline, run to completion (real capture)

2The commands, and when to use them

OptionWhat it doesWhat to choose
ingest addEnqueues a source into the case pipeline, hashing it on entry.First, for every exhibit before any analysis.
ingest runRuns the queued stages in order with a live dashboard.Once the queue holds everything for this pass.
ingest statusPrints the dashboard: the queue and its live progress.To check where a long ingest has reached without stopping it.
ingest stopHalts at a stage boundary, never inside a stage.When you must pause; nothing is left half-processed.
ingest retryRe-queues a failed stage.After a stage failed for a reason you have fixed, such as a full destination.

3Step by step

  1. Add the source
    Point at the image, folder or extraction. It is hashed as it enters the case.
  2. Run the queued stages
    The pipeline processes each stage in order, writing progress to the dashboard.
  3. Watch the dashboard
    The queue and its live progress are on one screen; a stalled figure is a display fault, never silent.
  4. Stop at a boundary if you must
    A stop lands between stages, so the case never holds a partly processed exhibit.
  5. Retry a failed stage
    Fix the cause, then re-queue only the stage that failed.

Stop cleanly. A stop halts at a stage boundary and never inside a stage, so the case never holds a partly processed exhibit. Do not kill the process to stop it; use the stop control, or a resumed ingest cannot trust where it left off.

4Ten situations, and exactly what to do

1 of 10

First look at a new exhibit

A fresh disk image has arrived and nothing has been done with it yet.

What to choose

ingest add then run - the pipeline hashes it in and processes every stage.

Steps
  1. Add the image as a source
  2. Run the queued stages
  3. Watch the dashboard to completion
  4. Move to the gallery or timeline
recoveryantra ingest add E:/Case/Ex1/disk.E01 --case E:/Case/Ex1
2 of 10

Several exhibits at once

A case has three images to process in one pass.

What to choose

Queue all three, then run once - the dashboard shows each in turn.

Steps
  1. Add each source
  2. Run the queue
  3. Watch each exhibit progress
  4. Check the tally per exhibit
recoveryantra ingest add E:/Case/Ex2/disk.E01 --case E:/Case/Ex1
3 of 10

A stage failed on a full disk

One stage stopped because the destination ran out of room.

What to choose

Free space, then ingest retry the one stage - not the whole exhibit again.

Steps
  1. Read the dashboard for the failed stage
  2. Free space on the destination
  3. Retry the failed stage
  4. Confirm it completes
recoveryantra ingest retry --case E:/Case/Ex1 --stage carve
4 of 10

Need to pause overnight

A long ingest must stop so the bench can be used, then resume.

What to choose

ingest stop lands at a stage boundary; resume the queue in the morning.

Steps
  1. Stop at the next boundary
  2. Confirm nothing is mid-stage
  3. Resume with run
  4. Watch it finish
recoveryantra ingest stop --case E:/Case/Ex1
5 of 10

How far has it reached

You need to report progress without disturbing the run.

What to choose

ingest status prints the live dashboard read-only.

Steps
  1. Run status
  2. Read the per-stage progress
  3. Report the figure
  4. Leave the run untouched
recoveryantra ingest status --case E:/Case/Ex1
6 of 10

A folder of loose files

The exhibit is a folder of extracted files rather than a disk image.

What to choose

Add the folder as the source; the pipeline treats each file as an item.

Steps
  1. Add the folder
  2. Run the queue
  3. Watch the item count climb
  4. Move to keyword or hash-set classify
recoveryantra ingest add E:/Case/Ex1/extracted --case E:/Case/Ex1
7 of 10

A phone extraction

A logical extraction from a phone needs to enter the case.

What to choose

Add the extraction folder; it is hashed in like any other source.

Steps
  1. Add the extraction as a source
  2. Run the queue
  3. Confirm the hash on entry
  4. Proceed to gallery and link analysis
recoveryantra ingest add E:/Case/Ex1/phone --case E:/Case/Ex1
8 of 10

Re-processing after a rule change

You imported new YARA rules and want the exhibit scanned again.

What to choose

Retry the scan stage rather than re-adding the exhibit.

Steps
  1. Import the new rules
  2. Retry the scan stage
  3. Read the new hits
  4. Tag what matters
recoveryantra ingest retry --case E:/Case/Ex1 --stage scan
9 of 10

Confirm every exhibit is in

Before analysis you want to be sure nothing is still queued.

What to choose

Read the dashboard; the queue must be empty and each stage complete.

Steps
  1. Run status
  2. Confirm the queue is empty
  3. Confirm each stage complete
  4. Begin the analysis loop
recoveryantra ingest status --case E:/Case/Ex1
10 of 10

A source that will not read

One source errors on entry rather than during a stage.

What to choose

The add is refused with the reason; fix the source, then add again - nothing enters half-hashed.

Steps
  1. Read the refusal reason
  2. Fix or re-copy the source
  3. Add it again
  4. Run the queue
recoveryantra ingest add E:/Case/Ex1/disk.E01 --case E:/Case/Ex1

5The same job at the command line

recoveryantra ingest add E:/Case/Ex1/disk.E01 --case E:/Case/Ex1 && recoveryantra ingest run --case E:/Case/Ex1
Feature 3 · Forensic viewers

Open a hive, a plist, a database or raw bytes inside the case

Structured viewers for the artefacts an examination turns on - registry, plist, SQLite with its deleted rows, and hex - each printing JSON and each able to bookmark the exact bytes a finding rests on.

1How to get there

HomeViewersPick a kind → Open
The forensic viewers: registry, plist, SQLite, hex
  1. 1Viewer kind choose the viewer for the artefact in hand.
  2. 2Path the artefact file to open.
  3. 3A hive key the registry key to open, for the hive viewer.
  4. 4Open open the artefact in the structured viewer.
app-mf-view.webp - the structured viewers, no case data loaded (real capture)

2The viewers, and what each is for

OptionWhat it doesWhat to choose
view registryBrowses a registry hive by key.For SOFTWARE, SYSTEM, NTUSER and the rest - execution, devices, mounted volumes.
view plistShows an Apple property list, binary or XML.For macOS and iOS settings, recents and state files.
view sqliteBrowses a database and its deleted rows.For chat stores, browser history, app data - and to see rows a delete left behind.
view hexPages raw bytes.When the structure is unknown, or to confirm a header byte for byte.
view interpretDecodes the bytes at an offset as a chosen type.To turn a field at a known offset into a timestamp, an integer or a string.
view bookmarkMarks bytes on the case.To record the exact offset a finding rests on, into the case.

3Step by step

  1. Pick the viewer for the artefact
    Registry, plist, SQLite, hex - the kind follows what the file is, not what it is named.
  2. Open the file
    It opens structured, inside the case, and every view prints JSON so a result can travel.
  3. Read the structure
    Keys, rows, property pairs - and for SQLite, the deleted rows a normal reader would not show.
  4. Interpret a field if you must
    Decode the bytes at an offset as a timestamp or integer rather than guessing.
  5. Bookmark what a finding rests on
    Mark the exact bytes into the case so the report can cite the offset, not a screenshot.

Good to know. The SQLite viewer shows deleted rows recovered from free pages and the write-ahead log. A row a normal reader cannot see is still evidence; record where it came from with a bookmark rather than trusting a screenshot.

4Ten situations, and exactly what to do

1 of 10

Which USB devices connected

You need the mounted and connected device history from a Windows disk.

What to choose

view registry on SYSTEM - USBSTOR and MountedDevices carry it.

Steps
  1. Pick the registry viewer
  2. Open the SYSTEM hive
  3. Walk USBSTOR
  4. Bookmark the device entry
recoveryantra view registry E:/Case/Ex1/Out/SYSTEM --key USBSTOR
2 of 10

A deleted chat message

A chat app's SQLite store may still hold a deleted message.

What to choose

view sqlite - the viewer surfaces deleted rows from free pages and the WAL.

Steps
  1. Pick the SQLite viewer
  2. Open the chat store
  3. Read the deleted rows
  4. Bookmark the message
recoveryantra view sqlite E:/Case/Ex1/Out/msgstore.db --deleted
3 of 10

An iOS recents list

A binary plist on an iPhone extraction holds recent activity.

What to choose

view plist decodes binary and XML property lists alike.

Steps
  1. Pick the plist viewer
  2. Open the plist
  3. Read the pairs
  4. Record what matters
recoveryantra view plist E:/Case/Ex1/phone/recents.plist
4 of 10

Confirm a file header

You want to prove a file's first bytes are what a format demands.

What to choose

view hex pages the raw bytes so the header can be read byte for byte.

Steps
  1. Pick the hex viewer
  2. Open the file
  3. Read the first bytes
  4. Bookmark the header offset
recoveryantra view hex E:/Case/Ex1/Out/suspect.bin --offset 0
5 of 10

A timestamp at a known offset

A record holds a date at a fixed offset you must decode.

What to choose

view interpret turns the bytes at that offset into a timestamp.

Steps
  1. Open the file in hex
  2. Interpret the offset as a filetime
  3. Read the decoded date
  4. Bookmark it
recoveryantra view interpret E:/Case/Ex1/Out/record.bin --offset 32 --as filetime
6 of 10

Program execution from AmCache

AmCache in a hive records programs that ran.

What to choose

view registry on the AmCache hive, at InventoryApplicationFile.

Steps
  1. Open the AmCache hive
  2. Walk InventoryApplicationFile
  3. Read the execution entries
  4. Bookmark the program
recoveryantra view registry E:/Case/Ex1/Out/Amcache.hve --key InventoryApplicationFile
7 of 10

Browser history rows

Chrome or Firefox history sits in a SQLite database.

What to choose

view sqlite reads the visits table and any deleted rows.

Steps
  1. Open the history database
  2. Read the visits
  3. Include deleted rows
  4. Bookmark a visit
recoveryantra view sqlite E:/Case/Ex1/Out/History --deleted
8 of 10

A ShellBags tree

ShellBags in NTUSER shows folders a user browsed.

What to choose

view registry on NTUSER, at the BagMRU tree.

Steps
  1. Open NTUSER
  2. Walk BagMRU
  3. Read the folder items
  4. Bookmark the path
recoveryantra view registry E:/Case/Ex1/Out/NTUSER.DAT --key BagMRU
9 of 10

Record the exact bytes for a finding

A finding rests on a specific field, and a screenshot is not enough.

What to choose

view bookmark marks the exact bytes into the case.

Steps
  1. Open the artefact
  2. Locate the field
  3. Bookmark the byte range
  4. Cite the offset in the report
recoveryantra view bookmark E:/Case/Ex1/Out/record.bin --offset 32 --len 8 --case E:/Case/Ex1
10 of 10

Hand a viewer result to another tool

You need the parsed structure as data, not a picture.

What to choose

Every viewer prints JSON, so the result can be scripted or attached.

Steps
  1. Open the artefact
  2. Read the JSON output
  3. Feed it to the report generator
  4. Keep the raw with the case
recoveryantra view sqlite E:/Case/Ex1/Out/msgstore.db --json

5The same job at the command line

recoveryantra view registry E:/Case/Ex1/Out/SYSTEM --key USBSTOR --json
Feature 5 · Geo map

Put the located photos and videos on a map

The case's EXIF-GPS points plotted and, where timestamps allow, joined into a track, exported as GeoJSON or KML - and only ever from real location data.

1How to get there

HomeMapPlot → Export
The map of located photos and videos
  1. 1Media kind choose which media to map.
  2. 2Date range bound the points by date.
  3. 3GeoJSON export as GeoJSON for QGIS or a web map.
  4. 4KML export as KML for Google Earth.
app-geo.webp - the map view; this corpus carries no EXIF GPS, so the honest empty state is shown

2The commands, and what each is for

OptionWhat it doesWhat to choose
geo pointsPrints the located points and the track as JSON.To read the case's locations, or feed them to another tool.
geo points --typeNarrows the points to images or videos.When only one medium's locations are in scope.
geo export --format geojsonWrites GeoJSON (RFC 7946).For QGIS, a web map, or a report that ingests GeoJSON.
geo export --format kmlWrites KML.To open the points in Google Earth or share them widely.

3Step by step

  1. Plot the points
    The map shows only files carrying real EXIF GPS; nothing is guessed from a name or a network.
  2. Narrow if needed
    By media kind or date, to the locations that matter to the case.
  3. Read the track
    Ordered points become a track where the timestamps allow it.
  4. Export for the report
    GeoJSON for a mapping tool, KML for Google Earth.

Only real GPS is plotted. Only files carrying real EXIF GPS appear on the map. Nothing is guessed from a filename, a network or a nearby cell; an empty map means no exhibit carried a location, not that the tool failed.

4Ten situations, and exactly what to do

1 of 10

Where were these photos taken

A set of images may carry GPS from the camera.

What to choose

geo points plots only files with real EXIF GPS.

Steps
  1. Open the map on the case
  2. Read the plotted points
  3. Confirm each has real EXIF GPS
  4. Export for the report
recoveryantra geo points
2 of 10

A movement track

Images across an afternoon may form a path.

What to choose

The ordered points become a track where timestamps allow.

Steps
  1. Plot the points
  2. Read the ordered track
  3. Bound to the afternoon
  4. Export as KML
recoveryantra geo export --format kml -o E:/Case/Ex1/track.kml
3 of 10

Only video locations

You want where the videos were taken, not the photos.

What to choose

Narrow --type video.

Steps
  1. Plot the points
  2. Filter to videos
  3. Read the locations
  4. Export
recoveryantra geo points --type video
4 of 10

Into QGIS

An analyst will work the points in QGIS.

What to choose

Export GeoJSON (RFC 7946).

Steps
  1. Plot the points
  2. Export GeoJSON
  3. Open in QGIS
  4. Keep the file with the case
recoveryantra geo export --format geojson -o E:/Case/Ex1/points.geojson
5 of 10

Into Google Earth

The report will show the points in Google Earth.

What to choose

Export KML.

Steps
  1. Plot the points
  2. Export KML
  3. Open in Google Earth
  4. Attach to the report
recoveryantra geo export --format kml -o E:/Case/Ex1/points.kml
6 of 10

No locations appear

The map is empty and you need to know why.

What to choose

The corpus carries no EXIF GPS; an empty map is the honest answer, not a fault.

Steps
  1. Plot the points
  2. Read the empty result
  3. Confirm no file carries EXIF GPS
  4. Record that plainly
recoveryantra geo points
7 of 10

Bound to a day

Only one day's locations are relevant.

What to choose

Filter the points by date.

Steps
  1. Plot the points
  2. Set the date range
  3. Read the bounded set
  4. Export
recoveryantra geo points --from 2026-03-01 --to 2026-03-01
8 of 10

Hand the points to a script

A case script consumes the locations.

What to choose

geo points prints JSON.

Steps
  1. Plot the points
  2. Read the JSON
  3. Feed it to the script
  4. Keep the raw
recoveryantra geo points --type image
9 of 10

Corroborate a claimed location

A subject claims to have been somewhere; photos may say otherwise.

What to choose

Plot the located photos and compare with the claim - state only what the EXIF supports.

Steps
  1. Plot the points
  2. Find the relevant image
  3. Read its EXIF location
  4. Report what the data supports, not more
recoveryantra geo points --type image
10 of 10

Locations for the certificate

The report needs the mapped points attached.

What to choose

Export the format the report ingests and keep it with the case.

Steps
  1. Plot the points
  2. Export GeoJSON or KML
  3. Attach to the report
  4. Cite the source exhibits
recoveryantra geo export --format geojson -o E:/Case/Ex1/points.geojson

5The same job at the command line

recoveryantra geo export --format kml -o E:/Case/Ex1/points.kml
Feature 6 · Super-timeline

Fold every dated artefact into one ordered account

The change journal, event logs, prefetch, registry, shortcuts and the rest on a single timeline, bounded to the incident window and exported as the l2tcsv every timeline tool reads.

1How to get there

HomeTimelineBuild → Filter → Export
The super-timeline filter and plot
  1. 1Start / end bound the timeline to the period in question.
  2. 2Kind filter narrow to one artefact type when testing a hypothesis.
  3. 3Text filter filter to a filename, a user or a device.
  4. 4Export CSV export the log2timeline/Timesketch CSV.
app-mf-timeline.webp - the timeline; the synthetic corpus has no dated OS artefacts, so the honest empty state is shown

2The options, and when to use them

OptionWhat it doesWhat to choose
--start / --endBounds the timeline to a period.On a busy machine, always - the unbounded timeline is too large to read.
--kindNarrows to one artefact type.When testing a specific hypothesis; establish the sequence on the full timeline first.
--textFilters to rows mentioning a filename, user or device.To follow one object through the events.
--histogramPrints event counts per time bucket instead of rows.To find the window worth zooming into before reading individual events.
--l2tFolds an existing log2timeline/psort export in beside the native events.When a full plaso run and the built-in artefact parsers should share one timeline.

3Step by step

  1. Build the full timeline first
    Point at the artefact files or the folder holding them; establish the sequence before you filter it.
  2. Find the window with the histogram
    The event count per bucket shows the shape of activity and the period to zoom into.
  3. Bound to the incident window
    Set start and end once the period is known, so the view is readable.
  4. Test a hypothesis by kind
    Narrow to execution evidence, or logins, only after the sequence is understood.
  5. Export for the report
    Write the l2tcsv every timeline tool reads; remove any row cap before the run that produces the report.

Full first, then filter. Narrowing hides context, and a capped timeline is a sample, not the record. Establish the sequence on the full timeline before filtering, and remove any row cap before the run that produces the report.

4Ten situations, and exactly what to do

1 of 10

One combined account of events

Many artefacts have to become one ordered story.

What to choose

Build the combined super-timeline and write it to CSV.

Steps
  1. Point at the artefacts folder
  2. Build the full timeline
  3. Read it in order
  4. Export to CSV
recoveryantra timeline E:/Case/Ex1/artefacts --out E:/Case/Ex1/timeline.csv
2 of 10

Bound to the incident

Only a one-week window matters.

What to choose

Set --start and --end to the window.

Steps
  1. Build the full timeline
  2. Bound it to the window
  3. Read the bounded events
  4. Export the window
recoveryantra timeline E:/Case/Ex1/artefacts --start 2026-03-01 --end 2026-03-08 --out E:/Case/Ex1/window.csv
3 of 10

Execution evidence only

You are testing whether a program ran.

What to choose

Narrow --kind prefetch, after the full sequence is understood.

Steps
  1. Build the full timeline first
  2. Narrow to prefetch
  3. Cap while exploring
  4. Remove the cap for the report
recoveryantra timeline E:/Case/Ex1/artefacts --kind prefetch --limit 200
4 of 10

Where is the activity

The machine was busy and you need the dense periods.

What to choose

The --histogram shows counts per bucket.

Steps
  1. Build the timeline
  2. Print the histogram
  3. Read the busy buckets
  4. Zoom into the window
recoveryantra timeline E:/Case/Ex1/artefacts --histogram day
5 of 10

Follow one file

You want every event mentioning a specific file.

What to choose

Filter --text to the filename.

Steps
  1. Build the timeline
  2. Filter to the filename
  3. Read the events
  4. Export
recoveryantra timeline E:/Case/Ex1/artefacts --text "payroll.xlsx"
6 of 10

Event logs only

The question is about logins recorded in the event log.

What to choose

Narrow --kind evtx.

Steps
  1. Build the timeline
  2. Narrow to evtx
  3. Filter to the account
  4. Export the logins
recoveryantra timeline E:/Case/Ex1/artefacts --kind evtx --out E:/Case/Ex1/logins.csv
7 of 10

Share a plaso run

A colleague produced a plaso l2tcsv you want folded in.

What to choose

--l2t merges it beside the native events.

Steps
  1. Build the native timeline
  2. Fold in the l2t export
  3. Read one merged view
  4. Export
recoveryantra timeline E:/Case/Ex1/artefacts --l2t E:/Case/Ex1/plaso.csv --out E:/Case/Ex1/merged.csv
8 of 10

One evidence source

The case has several exhibits and you want one exhibit's events.

What to choose

Narrow --source to that object.

Steps
  1. Build the timeline
  2. Narrow to the source
  3. Read its events
  4. Export
recoveryantra timeline E:/Case/Ex1/artefacts --source Ex1 --out E:/Case/Ex1/ex1.csv
9 of 10

Machine-readable output

A report generator will ingest the timeline.

What to choose

Emit JSON with --json rather than the human summary.

Steps
  1. Build the timeline
  2. Emit JSON
  3. Feed the generator
  4. Keep the raw
recoveryantra timeline E:/Case/Ex1/artefacts --json
10 of 10

Empty because no dated artefacts

The timeline is empty and you must explain it.

What to choose

A synthetic or wiped image with no dated OS artefacts yields an empty timeline honestly.

Steps
  1. Build the timeline
  2. Read the empty result
  3. Confirm no dated artefacts exist
  4. Record that plainly
recoveryantra timeline E:/Case/Ex1/artefacts

5The same job at the command line

recoveryantra timeline E:/Case/Ex1/artefacts --start 2026-03-01 --end 2026-03-08 --out E:/Case/Ex1/window.csv
Feature 7 · Memory

Read what was running from a captured memory image

Processes, injected code, network connections and command lines through Volatility 3, or the in-house reader where it is absent - each result saveable as a case finding.

1How to get there

HomeMemoryIdentify → Run → Finding
The memory workspace: the Volatility 3 plugin picker
  1. 1Image path the captured memory image.
  2. 2Browse choose the memory image file.
  3. 3Identify the OS identify the OS and the symbols it needs.
  4. 4Run run one plugin and read its table.
app-mf-memory.webp - the plugin picker; no memory image is loaded on this bench, so the honest needs-data state is shown

2The commands, and what each is for

OptionWhat it doesWhat to choose
memory pluginsLists what can run and whether Volatility 3 is installed.First, to see the plugins available on this bench.
memory infoIdentifies the operating system and kernel.Before any plugin - a plugin needs the right OS and symbols.
memory runRuns one Volatility 3 plugin and prints its table.For processes, network, injected code and the rest, with symbols supplied.
memory findingAdds a row of a saved result to the case.To record one process or connection exactly as returned.
memory scanThe in-house reader that needs no Volatility 3.Where Volatility 3 is not installed - processes, including terminated ones.

3Step by step

  1. See what can run
    List the plugins and whether Volatility 3 is present on this bench.
  2. Identify the operating system
    Name the OS and kernel, and the symbols the plugins will need.
  3. Run a plugin
    pslist for processes, malfind for injection, netscan for connections - saved so a row can become a finding.
  4. Record a row as a finding
    One process or connection, exactly as returned, into the case.
  5. Fall back to the in-house reader
    Where Volatility 3 is absent, the in-house scan reads processes without a symbol file.

Deterministic by design. Memory analysis is deterministic: pick a plugin, run it, read the table. Where Volatility 3 is not installed the in-house reader still returns processes, and it says so rather than pretending a plugin ran.

4Ten situations, and exactly what to do

1 of 10

Name the operating system

A memory image arrived and you must identify it before anything else.

What to choose

memory info names the OS, the kernel and the symbols.

Steps
  1. Point at the image
  2. Run info
  3. Read the OS and kernel
  4. Note the symbols needed
recoveryantra memory info E:/Case/Ex1/memory.raw
2 of 10

List the processes

You need the running processes at capture time.

What to choose

memory run pslist, saved so a row can become a finding.

Steps
  1. Identify the OS
  2. Run pslist with symbols
  3. Save the output
  4. Record a process as a finding
recoveryantra memory run E:/Case/Ex1/memory.raw --plugin pslist --os windows --symbols E:/symbols --out E:/Case/Ex1/pslist.json
3 of 10

Injected code in a process

One process is suspected of holding injected code.

What to choose

memory run malfind on the PID, as structured output.

Steps
  1. Identify the OS
  2. Run malfind on the PID
  3. Read the injected regions
  4. Record the finding
recoveryantra memory run E:/Case/Ex1/memory.raw --plugin malfind --pid 4188 --symbols E:/symbols --json
4 of 10

Record a process row

A specific process is evidence and must enter the case.

What to choose

memory finding records the row exactly as returned.

Steps
  1. Save the pslist output
  2. Pick the row
  3. Record it as a finding
  4. Cite the plugin and version
recoveryantra memory finding E:/Case/Ex1/pslist.json --row 12 --case E:/Case/Ex1
5 of 10

No Volatility 3 installed

The bench has no Volatility 3 and you still need processes.

What to choose

The in-house memory scan needs no symbols and finds terminated processes too.

Steps
  1. Run the in-house psscan
  2. Read the process table
  3. Note the honest limit
  4. Record the finding
recoveryantra memory scan E:/Case/Ex1/memory.raw --action psscan --limit 200
6 of 10

Network connections

You want the connections open at capture time.

What to choose

memory run netscan with symbols.

Steps
  1. Identify the OS
  2. Run netscan
  3. Read the connections
  4. Record the relevant ones
recoveryantra memory run E:/Case/Ex1/memory.raw --plugin netscan --os windows --symbols E:/symbols --out E:/Case/Ex1/net.json
7 of 10

What plugins are available

You are unsure which plugins this bench can run.

What to choose

memory plugins lists them and whether Volatility 3 is installed.

Steps
  1. Run plugins
  2. Read the list
  3. Confirm Volatility 3 status
  4. Choose the plugin
recoveryantra memory plugins
8 of 10

Command lines of processes

You need the command lines the processes were launched with.

What to choose

memory run cmdline with symbols.

Steps
  1. Identify the OS
  2. Run cmdline
  3. Read the command lines
  4. Record the suspicious ones
recoveryantra memory run E:/Case/Ex1/memory.raw --plugin cmdline --os windows --symbols E:/symbols --json
9 of 10

Loaded DLLs of one process

A process may have loaded a malicious module.

What to choose

memory run dlllist on the PID.

Steps
  1. Identify the OS
  2. Run dlllist on the PID
  3. Read the modules
  4. Record the finding
recoveryantra memory run E:/Case/Ex1/memory.raw --plugin dlllist --pid 4188 --symbols E:/symbols --json
10 of 10

Terminated processes

You need processes that had already exited.

What to choose

The in-house psscan finds terminated processes the live list misses.

Steps
  1. Run the in-house psscan
  2. Read terminated entries
  3. Corroborate with other artefacts
  4. Record the finding
recoveryantra memory scan E:/Case/Ex1/memory.raw --action psscan --limit 200

5The same job at the command line

recoveryantra memory run E:/Case/Ex1/memory.raw --plugin pslist --os windows --symbols E:/symbols --out E:/Case/Ex1/pslist.json
Feature 8 · Keyword search

Search a case with reusable named lists

Named keyword lists of words and patterns, shared across cases as plain text, run against the ingested case with every hit shown and taggable into evidence.

1How to get there

HomeKeywordBuild a list → Run
The keyword lists manager
  1. 1List name name the keyword list.
  2. 2Terms and patterns the words and patterns to search for.
  3. 3Create list create and save the named list.
  4. 4Run selected run the list against the case.
app-mf-keyword.webp - the lists manager; no lists exist yet, so the honest empty state is shown

2The commands, and what each is for

OptionWhat it doesWhat to choose
keyword createBuilds a new named list.First, for a reusable set of terms such as wallet and seed-phrase words.
keyword addAdds terms to an existing list.To extend a list as the case suggests new terms.
keyword import / exportMoves a list as plain text.To share a standard list between benches or cases.
keyword runSearches the case and prints the hits.Once the list is ready and the case is ingested.
keyword tagMarks a hit on the case.To record a hit that matters as case evidence.

3Step by step

  1. Build a named list
    Plain words or a /regex/. A reusable list beats re-typing terms each case.
  2. Add or import terms
    Extend it as the case suggests, or import a standard list as plain text.
  3. Run it against the case
    Every hit is shown with where it was found.
  4. Tag the hits that matter
    A hit becomes case evidence through the case's own door.
  5. Export the list for reuse
    Keep the list as plain text so the next case starts from it.

Good to know. A keyword list is reusable. Build it once, export it as plain text, and the next case starts from it rather than from a blank box.

4Ten situations, and exactly what to do

1 of 10

Wallet and seed-phrase words

A case may involve cryptocurrency and you want the tell-tale terms.

What to choose

Build a list with wallet, seed phrase and a /bitcoin/i pattern, then run it.

Steps
  1. Create the list
  2. Add the terms and pattern
  3. Run against the case
  4. Tag the hits
recoveryantra keyword create crypto --term wallet --term "seed phrase" --term /bitcoin/i
2 of 10

A person's name

You need every mention of a named individual.

What to choose

A one-term list, run across the case.

Steps
  1. Create the list
  2. Add the name
  3. Run it
  4. Tag the relevant hits
recoveryantra keyword run --list people --case E:/Case/Ex1
3 of 10

A standard fraud list

Your unit keeps a standard list of fraud terms.

What to choose

keyword import the plain-text list, then run it.

Steps
  1. Import the list
  2. Confirm the terms
  3. Run it
  4. Tag the hits
recoveryantra keyword import fraud E:/lists/fraud.txt
4 of 10

Record one hit

A single keyword hit is central to the case.

What to choose

keyword tag marks it as case evidence.

Steps
  1. Run the list
  2. Find the hit
  3. Tag it
  4. Cite it in the report
recoveryantra keyword tag --case E:/Case/Ex1 --hit kwh_0007
5 of 10

Extend a list mid-case

The case surfaces a new term to search for.

What to choose

keyword add the term, then re-run.

Steps
  1. Add the term to the list
  2. Re-run the list
  3. Read the new hits
  4. Tag them
recoveryantra keyword add crypto --term monero
6 of 10

A regular expression

You need a pattern, not a fixed word, such as a card number shape.

What to choose

Add a /regex/ term to the list.

Steps
  1. Create the list
  2. Add the regex term
  3. Run it
  4. Review the pattern hits
recoveryantra keyword create cards --term "/[0-9]{16}/"
7 of 10

See the lists you have

You are unsure which lists already exist on this bench.

What to choose

keyword lists shows them.

Steps
  1. Run lists
  2. Read the names
  3. Pick the one to run
  4. Run it
recoveryantra keyword lists
8 of 10

Share a list to another bench

A colleague needs the same list.

What to choose

keyword export writes it as plain text.

Steps
  1. Export the list
  2. Send the text file
  3. They import it
  4. Both run the same terms
recoveryantra keyword export crypto E:/lists/crypto.txt
9 of 10

Remove a stale list

An old list no longer applies.

What to choose

keyword remove deletes it.

Steps
  1. List the lists
  2. Remove the stale one
  3. Confirm it is gone
  4. Keep the case tidy
recoveryantra keyword remove oldterms
10 of 10

Run one list, not all

Several lists exist and only one is relevant now.

What to choose

keyword run the selected list against the case.

Steps
  1. List the lists
  2. Run the selected one
  3. Read the hits
  4. Tag what matters
recoveryantra keyword run --list crypto --case E:/Case/Ex1

5The same job at the command line

recoveryantra keyword create crypto --term wallet --term "seed phrase" && recoveryantra keyword run --list crypto --case E:/Case/Ex1
Feature 9 · Hash sets

Hide the standard files, flag the known-bad

Known-file hash sets - NSRL to recognise operating-system and application files, custom sets to flag known-bad - classifying the whole case so the unknowns are what remains.

1How to get there

HomeHash setsImport → Classify
The hash sets: installed sets and the classify tally
  1. 1Refresh refresh the installed sets and the classify tally.
app-mf-hashset.webp - the hash-set panel; no sets installed on this bench, so the honest empty state is shown

2The commands, and what each is for

OptionWhat it doesWhat to choose
hashset importLoads an NSRL RDS or a hash list.First, to install a known-good (NSRL) or known-bad set.
hashset listShows the installed sets.To confirm which sets this bench carries.
hashset lookupClassifies one hash or file.To check a single item against the installed sets.
hashset classifyRuns the whole case against the sets.To label every exhibit known-good, known-bad or unknown in one pass.
hashset removeDeletes a set.When a set is stale or was installed by mistake.

3Step by step

  1. Install a hash set
    An NSRL RDS to recognise operating-system and application files, or a known-bad list to flag them.
  2. Classify the case
    Every exhibit is labelled known-good, known-bad or unknown in one pass.
  3. Read the tally
    The panel shows how many fell into each class.
  4. Hide the known-good
    Filter the gallery and lists to the unknowns, so the noise of standard files is gone.
  5. Surface the known-bad
    A known-bad match is a lead; open each and corroborate before it becomes a finding.

A match is a lead. A hash set hides the files that are the same on every machine and flags files that match a known-bad set. A known-bad match is a lead, not a verdict; open it and corroborate before it becomes a finding.

4Ten situations, and exactly what to do

1 of 10

Hide the operating-system files

The case is drowning in standard Windows files.

What to choose

Import an NSRL set and classify, then work the unknowns.

Steps
  1. Import the NSRL set
  2. Classify the case
  3. Read the tally
  4. Filter to unknown elsewhere
recoveryantra hashset import E:/sets/nsrl.rds --kind known-good
2 of 10

Flag known-bad files

You hold a known-bad hash list for this class of case.

What to choose

Import it as known-bad and classify.

Steps
  1. Import the known-bad list
  2. Classify the case
  3. Read the known-bad tally
  4. Open each match
recoveryantra hashset import E:/sets/badhashes.txt --kind known-bad
3 of 10

Check one file

You want to know whether a single file is a known standard file.

What to choose

hashset lookup classifies it.

Steps
  1. Point at the file
  2. Look it up
  3. Read the class
  4. Record it
recoveryantra hashset lookup E:/Case/Ex1/Out/setup.exe
4 of 10

Classify the whole case

You want every exhibit labelled in one pass.

What to choose

hashset classify runs the case against all installed sets.

Steps
  1. Install the sets
  2. Classify the case
  3. Read the tally
  4. Move to the gallery
recoveryantra hashset classify --case E:/Case/Ex1
5 of 10

Confirm which sets are installed

You are unsure which sets this bench carries.

What to choose

hashset list shows them.

Steps
  1. Run list
  2. Read the installed sets
  3. Confirm coverage
  4. Classify
recoveryantra hashset list
6 of 10

Remove a stale set

An old set is out of date.

What to choose

hashset remove deletes it, then re-classify.

Steps
  1. List the sets
  2. Remove the stale one
  3. Re-classify
  4. Confirm the tally
recoveryantra hashset remove nsrl-2019
7 of 10

Check one hash value

You have a hash from another source to test against the sets.

What to choose

hashset lookup takes a hash directly.

Steps
  1. Have the hash
  2. Look it up
  3. Read the class
  4. Record it
recoveryantra hashset lookup --sha256 e3b0c44298fc1c149afbf4c8996fb924
8 of 10

Why the gallery shows unknown

Every gallery tile reads unknown and you need to explain it.

What to choose

The known column is unknown until a set is installed; install and classify to change it.

Steps
  1. Confirm no set installed
  2. Import a set
  3. Classify
  4. Re-read the gallery status
recoveryantra hashset list
9 of 10

A custom good set

Your unit maintains its own known-good list.

What to choose

Import it as known-good alongside NSRL.

Steps
  1. Import the custom set
  2. Classify
  3. Read the combined tally
  4. Filter to unknown
recoveryantra hashset import E:/sets/unit-good.txt --kind known-good
10 of 10

Refresh after ingest

New exhibits were ingested after the last classify.

What to choose

Refresh and re-classify so the tally covers everything.

Steps
  1. Refresh the panel
  2. Re-classify the case
  3. Read the updated tally
  4. Work the unknowns
recoveryantra hashset classify --case E:/Case/Ex1

5The same job at the command line

recoveryantra hashset import E:/sets/nsrl.rds --kind known-good && recoveryantra hashset classify --case E:/Case/Ex1
Feature 10 · YARA

Scan a case's evidence with YARA rules

Import or start from a rule set, enable what applies, and scan the ingested case - each hit named by its rule and taggable into evidence once corroborated.

1How to get there

HomeYARAImport rules → Scan
The YARA rule-set manager and engine chip
  1. 1Install starter set install a starter rule set.
  2. 2Name name the imported rule set.
  3. 3Path the rule file to import.
  4. 4Scan the case scan the case with the enabled rules.
app-mf-yara.webp - the rule-set manager; no rule sets imported, so the honest empty state is shown

2The commands, and what each is for

OptionWhat it doesWhat to choose
yara starterInstalls a starter rule set.To begin when you have no rules of your own yet.
yara importBrings a .yar / .yara rule set in.To add your unit's or a vendor's rules.
yara enable / disableTurns a rule set on or off for scanning.To scope a scan to the rules that apply to this case.
yara scanRuns the enabled rules across the case evidence.Once the rules you want are enabled and the case is ingested.
yara tagMarks a hit on the case.To record a rule hit that matters as evidence.

3Step by step

  1. Install or import rules
    A starter set to begin, or your own .yar files by name and path.
  2. Enable the ones that apply
    Scope the scan to the rules relevant to this case.
  3. Scan the case
    The enabled rules run across the evidence; every hit names its rule.
  4. Read and tag the hits
    A hit is a lead; corroborate, then tag the ones that matter.
  5. Manage the sets
    Disable or remove rule sets that no longer apply.

A hit is a lead. A YARA hit names the rule that fired; it is a lead, not a finding. Open the exhibit and corroborate before the hit becomes case evidence.

4Ten situations, and exactly what to do

1 of 10

Start with no rules

You have no YARA rules and want a baseline.

What to choose

yara starter installs a starter set to scan with.

Steps
  1. Install the starter set
  2. Enable it
  3. Scan the case
  4. Read the hits
recoveryantra yara starter
2 of 10

Import a vendor rule set

A vendor supplied .yar rules for a malware family.

What to choose

yara import by name and path.

Steps
  1. Import the rule set
  2. Enable it
  3. Scan the case
  4. Tag the hits
recoveryantra yara import --name emotet --path E:/rules/emotet.yar
3 of 10

Scan for one family

You only want a specific family's rules to run.

What to choose

Enable that set, disable the rest, then scan.

Steps
  1. Enable the family set
  2. Disable the others
  3. Scan the case
  4. Read the hits
recoveryantra yara scan --case E:/Case/Ex1
4 of 10

Record a rule hit

A rule hit is central to the case.

What to choose

yara tag records it as evidence.

Steps
  1. Scan the case
  2. Find the hit
  3. Tag it
  4. Cite the rule in the report
recoveryantra yara tag --case E:/Case/Ex1 --hit yh_0003
5 of 10

See the installed sets

You are unsure what rules this bench holds.

What to choose

yara list shows them and their state.

Steps
  1. Run list
  2. Read the sets
  3. Confirm which are enabled
  4. Enable what you need
recoveryantra yara list
6 of 10

Disable a noisy set

One rule set produces too many false hits.

What to choose

yara disable it, then re-scan.

Steps
  1. List the sets
  2. Disable the noisy one
  3. Re-scan
  4. Read the cleaner hits
recoveryantra yara disable generic-pack
7 of 10

Remove an obsolete set

An old rule set no longer applies.

What to choose

yara remove deletes it.

Steps
  1. List the sets
  2. Remove the obsolete one
  3. Confirm it is gone
  4. Re-scan
recoveryantra yara remove old2019
8 of 10

Scan a fresh ingest

New exhibits were added after the last scan.

What to choose

Re-run yara scan across the case.

Steps
  1. Confirm rules enabled
  2. Scan the case
  3. Read the new hits
  4. Tag what matters
recoveryantra yara scan --case E:/Case/Ex1
9 of 10

Combine your rules with a vendor's

You want your own rules and a vendor set to run together.

What to choose

Import both, enable both, scan once.

Steps
  1. Import both sets
  2. Enable both
  3. Scan the case
  4. Read the combined hits
recoveryantra yara import --name unit --path E:/rules/unit.yar
10 of 10

A hit needs corroboration

A rule fired but you must confirm before it is a finding.

What to choose

Open the exhibit, corroborate, then tag - a rule hit is a lead.

Steps
  1. Read the hit and its rule
  2. Open the exhibit
  3. Corroborate the match
  4. Tag only if it holds
recoveryantra yara scan --case E:/Case/Ex1

5The same job at the command line

recoveryantra yara import --name emotet --path E:/rules/emotet.yar && recoveryantra yara scan --case E:/Case/Ex1
Feature 12 · Footage decode

Read a recorder export a normal player gives up on

The decode ladder - container, then index, then raw stream - turning a DVR's own format into readable, hashed footage, recorded into the case with the examiner named and the recorder's own frames and clock kept.

1How to get there

HomeFootageSource → Decode → Result
The footage workspace: decode a recorder disk or export
  1. 1Source path the recorder export or video to decode.
  2. 2Choose file choose the source file.
  3. 3Why? read why a decode is needed.
  4. 4Make / Model check the recorder against the tested registry.
app-mf-footage.webp - the decode screen; no recorder disk fed, so the honest needs-data state is shown

2The commands, and what each is for

OptionWhat it doesWhat to choose
footage formatsLists what this build can read.First, before anything is promised - state the coverage.
footage registryLooks a recorder up by make and model.To see whether the recorder is in the tested registry.
footage acquireDecodes an export through the ladder to a folder.To turn a recorder's own container into a readable, hashed decode.
footage intakeRecords the intake, hashing and naming the examiner.To bring the decoded footage into the case with a chain of custody.
footage convertBatch-converts a folder of exports.When several exports must be decoded in one pass.

3Step by step

  1. State what can be read
    Check the formats this build handles before promising anything to a court.
  2. Look the recorder up
    The tested registry says whether the make and model are known.
  3. Decode through the ladder
    The ladder tries the container, then the index, then the raw stream, to a folder on another drive.
  4. Record the intake
    Copy and hash the export, and type the examiner's name into the case.
  5. Keep the recorder's own frames
    Do not re-encode with a converter first; the recorder's frames and its overlay clock are the evidence.

Do not do this. Do not re-encode a recorder export with a converter first. The converter's frames are not the recorder's frames, and the overlay clock burnt into the picture is the only clock the recorder gave you. Copy and hash before playing; the intake does both.

4Ten situations, and exactly what to do

1 of 10

A DVR export will not play

A station has a recorder export nobody can open, and it is evidence.

What to choose

Decode it through the ladder to another drive, then record the intake.

Steps
  1. Check the formats
  2. Decode through the ladder
  3. Record the intake with the examiner named
  4. Keep the recorder's own frames
recoveryantra footage acquire E:/Exhibits/E3/ch07.dav -o F:/Case-176/decoded
2 of 10

Is this recorder supported

You need to know whether the make and model are tested.

What to choose

footage registry looks it up.

Steps
  1. Note the make and model
  2. Look them up in the registry
  3. Read the coverage
  4. Decide the route
recoveryantra footage registry --make Hikvision --model DS-7608
3 of 10

State the coverage first

A court asks what the tool can read before you promise anything.

What to choose

footage formats lists exactly what this build handles.

Steps
  1. Run formats
  2. Read the coverage
  3. State it plainly
  4. Proceed only within it
recoveryantra footage formats
4 of 10

Record the intake

A decoded export must enter the case with a chain of custody.

What to choose

footage intake copies, hashes and names the examiner.

Steps
  1. Decode the export
  2. Record the intake
  3. Type the examiner's name
  4. Confirm the hash
recoveryantra footage intake F:/Case-176/decoded --case F:/Case-176 --examiner "S. Menon"
5 of 10

Several channels at once

A recorder disk holds several channels to decode.

What to choose

Batch-convert the folder of exports in one pass.

Steps
  1. Point at the folder
  2. Batch-convert
  3. Confirm each channel decoded
  4. Record the intake
recoveryantra footage convert E:/Exhibits/E3 -o F:/Case-176/decoded
6 of 10

One channel salvaged from the raw stream

The container and index fail on one channel.

What to choose

The ladder's last rung salvages it from the raw stream; the decode says so.

Steps
  1. Decode through the ladder
  2. Note which rung succeeded
  3. Record the salvage state
  4. Keep the intake
recoveryantra footage acquire E:/Exhibits/E3/ch03.dav -o F:/Case-176/decoded
7 of 10

Do not re-encode first

Someone suggests converting the export with a media tool first.

What to choose

Decode with the ladder instead; a converter's frames are not the recorder's frames.

Steps
  1. Refuse the pre-conversion
  2. Decode with the ladder
  3. Keep the recorder's frames
  4. Keep the overlay clock as text
recoveryantra footage acquire E:/Exhibits/E3/ch07.dav -o F:/Case-176/decoded
8 of 10

Copy and hash before playing

The export is on the pen drive it arrived on.

What to choose

The intake copies and hashes it; do not play from the pen drive.

Steps
  1. Copy off the pen drive
  2. Decode to another drive
  3. Record the intake (copy and hash)
  4. Work from the decoded copy
recoveryantra footage intake F:/Case-176/decoded --case F:/Case-176 --examiner "S. Menon"
9 of 10

What can this machine handle

You want to know the media worker's capability on this bench.

What to choose

footage formats reports what the worker can decode here.

Steps
  1. Run formats
  2. Read the worker capability
  3. Note any gap
  4. Decide the route
recoveryantra footage formats
10 of 10

Hand the decode to review

The decoded footage is ready for frame-exact review.

What to choose

Pass the decoded asset to the review workspace for a frame pack.

Steps
  1. Decode the export
  2. Record the intake
  3. Open it in review
  4. Build the frame pack there
recoveryantra review open F:/Case-176/decoded/ch07.mp4

5The same job at the command line

recoveryantra footage acquire E:/Exhibits/E3/ch07.dav -o F:/Case-176/decoded && recoveryantra footage intake F:/Case-176/decoded --case F:/Case-176 --examiner "S. Menon"
Feature 13 · Frame-pack review

Take the frames that matter, with their provenance

Frame-exact review of decoded footage, building a small frame pack - each frame carrying its ticks, index, overlay clock as text, source hash and its own SHA-256 - which is the only unit that leaves the machine.

1How to get there

HomeReviewOpen → Frames → Frame pack
Frame-exact review of footage
  1. 1Asset path the decoded footage to review.
  2. 2Choose file choose the asset to open.
app-mf-review.webp - the review screen; no footage opened, so the honest needs-data state is shown

2The commands, and what each is for

OptionWhat it doesWhat to choose
review openOpens the asset's timeline: frames, keyframes, gaps, the time base.First, to see the structure before choosing frames.
review bookmarkRecords a bookmark at one frame ordinal, into the case.To mark the exact frame that shows the event.
review framesBuilds a frame pack from a range, at an interval.To produce the few frames that leave the machine for a report.
review verifyRe-hashes every frame and the manifest of a pack.Before the pack leaves, and again on receipt, to prove it is unchanged.

3Step by step

  1. Open the asset's timeline
    Frames, keyframes, gaps and the time base - the structure you choose frames from.
  2. Bookmark the key frame
    Record the exact ordinal that shows the event, into the case.
  3. Build a frame pack
    A range at an interval becomes a small pack - each frame with its ticks, index, overlay clock as text, source hash and its own SHA-256.
  4. Verify the pack
    Re-hash every frame and the manifest before it leaves and again on receipt.
  5. Keep the three times separate
    The presentation ticks, the overlay clock as text, and the case time are three fields, never merged.

The frame pack, and the three times. The frame pack is the only unit that leaves the machine - a few captured frames, each with its presentation ticks, decoded index, the overlay clock as text, the source hash and its own SHA-256, plus a hashed manifest. Never the video. And the three times - the ticks, the overlay clock, the case time - are never merged.

4Ten situations, and exactly what to do

1 of 10

The frames that show the vehicle

A court wants the frames showing a vehicle, with their times.

What to choose

Build a frame pack from the range; the video itself never leaves.

Steps
  1. Open the asset timeline
  2. Bookmark the key frame
  3. Build the pack over the range
  4. Verify it before it leaves
recoveryantra review frames F:/Case-176/decoded/ch07.mp4 --from 1410 --to 1416 --interval 2 -o F:/Case-176/packs
2 of 10

See the structure first

Before choosing frames you need the timeline of the footage.

What to choose

review open shows frames, keyframes, gaps and the time base.

Steps
  1. Open the asset
  2. Read the frames and gaps
  3. Note the time base
  4. Choose the range
recoveryantra review open F:/Case-176/decoded/ch07.mp4
3 of 10

Mark one frame

A single frame is the evidence.

What to choose

review bookmark records the ordinal into the case.

Steps
  1. Open the asset
  2. Find the frame ordinal
  3. Bookmark it in the case
  4. Note why it matters
recoveryantra review bookmark F:/Case-176/decoded/ch07.mp4 --ordinal 1412 --case F:/Case-176
4 of 10

Prove the pack is unchanged

The defence will check the frames you sent.

What to choose

review verify re-hashes every frame and the manifest.

Steps
  1. Build the pack
  2. Verify it before sending
  3. Send with the manifest
  4. Verify again on receipt
recoveryantra review verify F:/Case-176/packs/pack_001.zip
5 of 10

One frame per second

A long event needs a frame every second, not every frame.

What to choose

Set the interval on the frame pack.

Steps
  1. Open the asset
  2. Choose the range
  3. Set the interval
  4. Build and verify
recoveryantra review frames F:/Case-176/decoded/ch07.mp4 --from 1400 --to 1520 --interval 25 -o F:/Case-176/packs
6 of 10

Do not send a screenshot

Someone offers a player snapshot as the still.

What to choose

Build a frame pack instead; a screenshot has no time base, no hash and no chain.

Steps
  1. Refuse the screenshot
  2. Open the asset
  3. Build the frame pack
  4. Verify it
recoveryantra review frames F:/Case-176/decoded/ch07.mp4 --from 1412 --to 1412 -o F:/Case-176/packs
7 of 10

The overlay clock is not the case time

The recorder shows a time burnt into the picture.

What to choose

Keep it as text in its own field; the case time is separate with its own uncertainty.

Steps
  1. Read the overlay clock as text
  2. Record it in its field
  3. Set the case time separately
  4. Never merge the two
recoveryantra review open F:/Case-176/decoded/ch07.mp4
8 of 10

Bookmark several frames

A sequence of frames each matters.

What to choose

Bookmark each ordinal into the case, then build the pack over the range.

Steps
  1. Open the asset
  2. Bookmark each key ordinal
  3. Build the pack over the span
  4. Verify
recoveryantra review bookmark F:/Case-176/decoded/ch07.mp4 --ordinal 1414 --case F:/Case-176
9 of 10

Only a few frames leave

The whole recording must not leave the machine.

What to choose

The frame pack is the only unit that leaves; the video stays.

Steps
  1. Open the asset
  2. Build the small pack
  3. Confirm only frames are in it
  4. Send the pack, not the video
recoveryantra review frames F:/Case-176/decoded/ch07.mp4 --from 1410 --to 1416 --interval 2 -o F:/Case-176/packs
10 of 10

Hand the pack to the report

The frames are ready to attach to the certificate.

What to choose

Verify the pack, then attach it to the export and certificate.

Steps
  1. Build the pack
  2. Verify it
  3. Attach to the report
  4. Cite the source asset and hashes
recoveryantra review verify F:/Case-176/packs/pack_001.zip

5The same job at the command line

recoveryantra review frames F:/Case-176/decoded/ch07.mp4 --from 1410 --to 1416 --interval 2 -o F:/Case-176/packs && recoveryantra review verify F:/Case-176/packs/pack_001.zip
Feature 14 · Redaction

Mask what must not be disclosed, under a typed review

Mask a fixed or moving region across a range, have a named person approve it in a typed decision, and export a redacted copy - which is refused until that approval exists, with the original untouched.

1How to get there

HomeRedactionMask → Review → Export
Redaction under typed review
  1. 1Asset path the footage or image to redact.
  2. 2Region x,y,w,h the region to mask.
  3. 3Frame range the frame range to mask across.
  4. 4Open or create the case, and the typed examiner.
app-mf-redact.webp - the redaction screen; no footage opened, so the honest needs-data state is shown

2The commands, and what each is for

OptionWhat it doesWhat to choose
redact maskMasks a region on one frame or asset, into the case.For a fixed region on a still or a single frame.
redact trackMasks a region and follows it across a frame range.For a moving subject - the mask holds on every frame in the range.
redact reviewRecords the examiner's typed decision.A named person must approve before export; the decision is typed and recorded.
redact exportWrites the redacted copy.Last, and only after an approve decision exists - it is refused otherwise.

3Step by step

  1. Mask the region
    A rectangle in pixels on the frame, recorded against the case. The original is never touched.
  2. Track it across the range
    For a moving subject, the mask follows the region from the first frame to the last.
  3. Have a named person review
    The decision is typed - who checked, what they decided, and a note - into the case.
  4. Export only after approval
    The redacted copy is refused until an approve decision exists.
  5. Keep the original untouched
    Redaction produces a copy; the exhibit stays as it was.

Do not do this. Export is refused until a named person has recorded an approve decision, and the original is never touched - redaction produces a copy. A mask that no one checked, or one applied to the original, is not a disclosure this tool will produce.

4Ten situations, and exactly what to do

1 of 10

Mask a bystander's face

Footage must go to a party who may not see everyone in it.

What to choose

redact track the face across the range, have it reviewed, then export.

Steps
  1. Track the region across the frames
  2. Have a named person approve
  3. Export the redacted copy
  4. Keep the original untouched
recoveryantra redact track F:/Case-176/decoded/ch07.mp4 --region 412,88,96,120 --from 1400 --to 1520 --case F:/Case-176
2 of 10

A fixed sign in shot

A number plate sits still in the corner of a still.

What to choose

redact mask the fixed region.

Steps
  1. Open the asset
  2. Mask the fixed region
  3. Have it reviewed
  4. Export
recoveryantra redact mask F:/Case-176/decoded/frame_1412.png --region 300,220,140,60 --case F:/Case-176
3 of 10

The reviewer approves

A named person has checked every masked frame.

What to choose

redact review records the typed approve decision.

Steps
  1. Complete the masking
  2. The reviewer checks every frame
  3. Record the typed approve
  4. Then export
recoveryantra redact review --case F:/Case-176 --decision approve --reviewer "A. Rao" --note "checked every frame"
4 of 10

Export is refused

You try to export before anyone reviewed.

What to choose

Export is refused until an approve decision exists; record the review first.

Steps
  1. Attempt export
  2. Read the refusal
  3. Record the review decision
  4. Export again
recoveryantra redact export --case F:/Case-176 -o F:/Disclosure
5 of 10

A moving subject

The subject to mask moves across the frame.

What to choose

redact track follows the region across the range.

Steps
  1. Set the region on the first frame
  2. Track it to the last
  3. Review every frame
  4. Export
recoveryantra redact track F:/Case-176/decoded/ch07.mp4 --region 500,140,80,100 --from 900 --to 1100 --case F:/Case-176
6 of 10

The original must not change

The exhibit has to stay exactly as it was.

What to choose

Redaction writes a copy; the original is never touched.

Steps
  1. Mask on the copy
  2. Confirm the original is untouched
  3. Review
  4. Export the copy
recoveryantra redact mask F:/Case-176/decoded/ch07.mp4 --region 412,88,96,120 --case F:/Case-176
7 of 10

Two regions in one frame

Two people must both be masked.

What to choose

Mask each region; both are recorded against the case.

Steps
  1. Mask the first region
  2. Mask the second
  3. Review both
  4. Export
recoveryantra redact mask F:/Case-176/decoded/ch07.mp4 --region 200,100,90,110 --case F:/Case-176
8 of 10

Record who checked

The disclosure must show a named person approved.

What to choose

The review decision names the reviewer and carries a note.

Steps
  1. Complete the masking
  2. Reviewer checks the frames
  3. Record reviewer and note
  4. Export
recoveryantra redact review --case F:/Case-176 --decision approve --reviewer "A. Rao" --note "faces masked every frame"
9 of 10

A reviewer rejects

The reviewer finds a frame where the mask slipped.

What to choose

Record a reject decision; fix the mask before any export.

Steps
  1. Reviewer finds the gap
  2. Record the reject with a note
  3. Re-track the region
  4. Review again
recoveryantra redact review --case F:/Case-176 --decision reject --reviewer "A. Rao" --note "mask slips at 1490"
10 of 10

Hand the redacted copy over

The approved redaction is ready for disclosure.

What to choose

redact export writes the redacted copy to the disclosure folder.

Steps
  1. Confirm the approve decision
  2. Export the copy
  3. Keep the review record
  4. Disclose the copy only
recoveryantra redact export --case F:/Case-176 -o F:/Disclosure

5The same job at the command line

recoveryantra redact track F:/Case-176/decoded/ch07.mp4 --region 412,88,96,120 --from 1400 --to 1520 --case F:/Case-176 && recoveryantra redact review --case F:/Case-176 --decision approve --reviewer "A. Rao"
Feature 15 · Enhancement lab

Enhance a frame two ways, and keep them apart

Deterministic classical recipes for an evidentiary result another examiner can repeat, and a separate, labelled AI hypothesis track - the enhanced image always beside the original, the chain printed beneath.

1How to get there

HomeEnhancement labFrames → Recipe → Result
The enhancement lab: classical recipes and the AI track
  1. 1Asset path the case asset to work on.
  2. 2Choose choose the asset.
  3. 3What a recipe is read what a recipe is, and the two tracks.
app-mf-medialab.webp - the lab, two tracks (real capture)

2Two tracks: which to use, and when

Classical recipes (evidentiary)
Deterministic, reproducible operations - deblur, contrast, sharpen, stabilise - that another examiner can repeat exactly.
Choose this when the enhanced image may be relied on in proceedings. The chain is printed beneath and both images are kept.
AI hypothesis track
Model-based enhancement that may add detail not in the source; its output is a hypothesis, never a measurement.
Choose this when you want an investigative lead, clearly labelled and kept separate from the evidentiary track.

3The recipe cards

The classical recipe cards with the evidentiary and hypothesis framing
  1. 1Recipe cards the recipe cards and their two-track framing.
app-mf-medialab-modal-recipes.webp - the recipe cards on a loaded image (real capture)

4The commands, and what each is for

OptionWhat it doesWhat to choose
medialab recipe listLists the saved classical recipes.First, to see the deterministic operations available.
medialab runRuns a recipe on frames and writes the result to a folder.To apply a classical recipe to a frame pack or asset.
medialab saveSaves an operation as a named recipe.To make an operation repeatable across cases.
medialab measureTakes a calibrated 2-D measurement (see Metrology).When the question is a length, a height or a distance, not a clearer picture.

5Step by step

  1. Take frames into the lab
    The lab works on a case asset - a frame pack from review, or an ingested exhibit.
  2. Choose the track
    Classical for an evidentiary result another examiner can repeat; the AI track for a labelled hypothesis.
  3. Run the recipe
    A deterministic recipe writes an enhanced copy; the chain of operations is printed beneath it.
  4. Keep both images
    The enhanced image is shown beside the original, never instead of it, and both are exported.
  5. Label a hypothesis as a hypothesis
    An AI-enhanced result is an observation, kept apart from the evidentiary track and never presented as the original.

Beside, never instead. The enhanced image is never shown instead of the original: it is placed beside it with the chain of operations printed beneath, and both are exported. A classical recipe is evidentiary because it is reproducible; an AI enhancement is a labelled hypothesis and stays one.

6Ten situations, and exactly what to do

1 of 10

A dark frame of the vehicle

The frame that shows the vehicle is underexposed.

What to choose

A classical contrast recipe - deterministic and repeatable.

Steps
  1. Take the frame pack into the lab
  2. List the recipes
  3. Run the contrast recipe
  4. Keep both images
recoveryantra medialab run contrast F:/Case-176/packs/pack_001.zip -o F:/Case-176/enh
2 of 10

A motion-blurred plate

The plate is blurred by motion.

What to choose

A classical deblur recipe; the chain is printed beneath.

Steps
  1. Take the frames in
  2. Run the deblur recipe
  3. Read the printed chain
  4. Keep original and enhanced
recoveryantra medialab run deblur F:/Case-176/packs/pack_001.zip -o F:/Case-176/enh
3 of 10

See the recipes available

You want to know which classical operations exist.

What to choose

medialab recipe list shows the saved recipes.

Steps
  1. Open the lab
  2. List the recipes
  3. Read what each does
  4. Choose one
recoveryantra medialab recipe list
4 of 10

An AI upscale as a lead

You want a model to suggest detail, understanding it is a lead.

What to choose

The AI hypothesis track - labelled, kept apart from the evidentiary result.

Steps
  1. Take the frame in
  2. Run the AI track
  3. Label it a hypothesis
  4. Do not present it as the original
recoveryantra medialab run ai-upscale F:/Case-176/packs/pack_001.zip -o F:/Case-176/hyp
5 of 10

Repeat an operation across cases

You apply the same operation often.

What to choose

medialab save makes it a named recipe.

Steps
  1. Perform the operation
  2. Save it as a recipe
  3. Reuse it next case
  4. Keep the chain printed
recoveryantra medialab save my-deblur --from deblur
6 of 10

The enhanced must not replace the original

A reviewer worries the original was overwritten.

What to choose

The enhanced image is shown beside the original and both are exported.

Steps
  1. Run the recipe
  2. Confirm both images kept
  3. Export both
  4. Print the chain beneath
recoveryantra medialab run sharpen F:/Case-176/packs/pack_001.zip -o F:/Case-176/enh
7 of 10

Stabilise a shaky clip's frames

The captured frames jitter.

What to choose

A classical stabilise recipe on the frame pack.

Steps
  1. Take the frames in
  2. Run the stabilise recipe
  3. Read the chain
  4. Keep both
recoveryantra medialab run stabilise F:/Case-176/packs/pack_001.zip -o F:/Case-176/enh
8 of 10

Prove the enhancement is repeatable

The defence must be able to repeat your steps.

What to choose

A classical recipe's chain is printed; another examiner runs the same recipe.

Steps
  1. Run the classical recipe
  2. Print the chain
  3. Attach it to the report
  4. State it is reproducible
recoveryantra medialab run contrast F:/Case-176/packs/pack_001.zip -o F:/Case-176/enh
9 of 10

Keep the two tracks separate

You have both a classical result and an AI lead.

What to choose

Write them to separate folders; the AI output stays a labelled hypothesis.

Steps
  1. Run the classical recipe to /enh
  2. Run the AI track to /hyp
  3. Label the hypothesis
  4. Never merge the two
recoveryantra medialab run deblur F:/Case-176/packs/pack_001.zip -o F:/Case-176/enh
10 of 10

A measurement, not a clearer picture

The question is a real dimension in the frame.

What to choose

That is metrology - a calibrated measurement, not an enhancement.

Steps
  1. Recognise it as a measurement
  2. Use medialab measure
  3. Calibrate against a known length
  4. Report the value with its uncertainty
recoveryantra medialab measure F:/Case-176/packs/pack_001.zip --case F:/Case-176

7The same job at the command line

recoveryantra medialab recipe list && recoveryantra medialab run deblur F:/Case-176/packs/pack_001.zip -o F:/Case-176/enh
Feature 16 · Metrology

Measure height, speed and distance from the footage

Calibrated 2-D and 3-D measurement - length, height, speed, camera pose and distance - against a known reference in the scene, every figure reported with its assumptions and uncertainty.

1How to get there

HomeEnhancement labAsset → Measure
The metrology op picker with the graph open, original beside enhanced
  1. 1Case asset the ingested case asset the graph opens on.
  2. 2The operation the measurement operation to run.
app-mf-medialab-modal-op.webp - the measurement op on a case asset; the graph opens on an ingested exhibit, the honest step-2 state

2The measurements, and what each is for

OptionWhat it doesWhat to choose
Length (2-D)A calibrated distance in the image plane against a known reference length.For a measurement that lies flat in the scene, such as a marking on the ground.
HeightAn object or person's height using scene geometry and a reference.To estimate a subject's height from footage with a known reference in frame.
SpeedDistance travelled over known frame timing.For a vehicle's speed across a measured distance and the frame time base.
Camera poseThe camera's position and orientation from scene points.When later measurements depend on where the camera stood.
3-D distanceA distance recovered with a calibrated scene, not a flat plane.For a measurement that is not in a single image plane.

3Step by step

  1. Open the case asset
    The measurement runs on an ingested exhibit, not a loose file path, so the result is anchored to the case.
  2. Choose the measurement
    Length, height, speed, camera pose or 3-D distance - the question decides which.
  3. Calibrate against a known reference
    A measurement needs a known length or scene geometry in the frame; without it, it is a guess.
  4. Read the value with its uncertainty
    The result carries the assumptions and the uncertainty; a single number without them is not a measurement.
  5. Record it against the case
    The measurement, the reference and the assumptions go into the case together.

Calibration, and honest uncertainty. A measurement needs a known reference or a calibrated scene; without one it is a guess, not a metrology result. Every figure carries its assumptions and its uncertainty, and a number reported without them is not a measurement.

4Ten situations, and exactly what to do

1 of 10

How tall is the subject

Footage shows a person beside a door of known height.

What to choose

A height measurement using the door as the reference.

Steps
  1. Open the case asset
  2. Choose the height measurement
  3. Calibrate on the door height
  4. Report the range with its uncertainty
recoveryantra medialab measure F:/Case-176/packs/pack_001.zip --case F:/Case-176
2 of 10

How fast was the vehicle

A vehicle crosses a measured distance over known frames.

What to choose

A speed measurement from the distance and the frame time base.

Steps
  1. Open the asset
  2. Choose speed
  3. Enter the measured distance and frames
  4. Report the speed with its uncertainty
recoveryantra medialab measure F:/Case-176/packs/pack_001.zip --case F:/Case-176
3 of 10

The length of a marking

A ground marking's length is in question.

What to choose

A 2-D length against a known reference in the plane.

Steps
  1. Open the asset
  2. Choose length
  3. Calibrate on a known length
  4. Report the value
recoveryantra medialab measure F:/Case-176/packs/pack_001.zip --case F:/Case-176
4 of 10

Where did the camera stand

Later measurements depend on the camera position.

What to choose

A camera pose from scene points.

Steps
  1. Open the asset
  2. Choose camera pose
  3. Mark the scene points
  4. Record the pose for later use
recoveryantra medialab measure F:/Case-176/packs/pack_001.zip --case F:/Case-176
5 of 10

A distance out of the plane

The distance is not in a single flat plane.

What to choose

A 3-D distance with a calibrated scene.

Steps
  1. Open the asset
  2. Calibrate the scene
  3. Choose 3-D distance
  4. Report with uncertainty
recoveryantra medialab measure F:/Case-176/packs/pack_001.zip --case F:/Case-176
6 of 10

No reference in frame

There is nothing of known size to calibrate against.

What to choose

State the limit honestly - without a reference the measurement cannot be made.

Steps
  1. Open the asset
  2. Look for a reference
  3. Find none
  4. Record that a measurement is not possible
recoveryantra medialab measure F:/Case-176/packs/pack_001.zip --case F:/Case-176
7 of 10

Report the uncertainty

The court needs the confidence in the figure.

What to choose

The measurement carries its assumptions and uncertainty; report them with the value.

Steps
  1. Take the measurement
  2. Read the uncertainty
  3. State the assumptions
  4. Report value and range together
recoveryantra medialab measure F:/Case-176/packs/pack_001.zip --case F:/Case-176
8 of 10

Measure on a case asset

You have a loose file, not a case asset.

What to choose

Ingest it first - the graph opens on an ingested exhibit, not a loose path.

Steps
  1. Ingest the file into the case
  2. Open the case asset
  3. Run the measurement
  4. Record it
recoveryantra medialab measure F:/Case-176/packs/pack_001.zip --case F:/Case-176
9 of 10

Two independent measurements agree

One figure alone is thin.

What to choose

Take two independent measurements and report their agreement.

Steps
  1. Measure one way
  2. Measure another
  3. Compare the two
  4. Report the agreement and the range
recoveryantra medialab measure F:/Case-176/packs/pack_001.zip --case F:/Case-176
10 of 10

Attach the measurement to the report

The figure has to go into the certificate.

What to choose

Record it against the case with its reference and assumptions.

Steps
  1. Take the measurement
  2. Record it against the case
  3. Attach the reference
  4. Cite it in the report
recoveryantra medialab measure F:/Case-176/packs/pack_001.zip --case F:/Case-176

5The same job at the command line

recoveryantra medialab measure F:/Case-176/packs/pack_001.zip --case F:/Case-176
Feature 17 · Authenticity + PRNU

Say what a file's structure and statistics support

Every authenticity method - structure, codec history, double compression, frame statistics and PRNU sensor-noise - run together and ranked, reported as evidence rather than a score, with any model pack kept as a labelled observation.

1How to get there

HomeAuthenticityFile → Methods → Hypotheses
The authenticity workbench with method cards
  1. 1File the file to examine.
  2. 2Choose file choose the exhibit.
  3. 3Case folder the case to record against.
  4. 4Model packs optional signed model packs.
app-mf-authenticity.webp - the authenticity workbench (real capture)

2Methods, and the optional model pack

Every method (deterministic)
Runs structure, codec history, double-compression, frame statistics and PRNU, and ranks what each supports.
Choose this when always - the finding rests on the methods and the examiner, not on any one score.
Add a signed model pack
Adds an offline model's opinion as an AI observation alongside the methods.
Choose this when you want an extra labelled lead; its output is an observation, never quoted as the finding.

3The examine wizard and its method cards

The authenticity examine wizard: File, Methods, Hypotheses
  1. 1File the queued image.
  2. 2Case folder the case the method cards are recorded to.
app-mf-authenticity-modal-methods.webp - Examine produces the ELA, noise and PRNU method cards (real capture)

4The options, and what to set them to

OptionWhat it doesWhat to choose
authenticate <file>Runs every method, ranks them, and records the result in the case.As the standard examination when authenticity is challenged.
--caseRecords the examination against a case.Always, so the ranking and the methods are part of the case record.
--modelsAdds a signed local model pack to the method set.For an extra labelled opinion, kept as an AI observation.
-oWrites the report data to a folder.When the method output has to travel with the case.

5Step by step

  1. Hash and copy the exhibit
    Examine the copy, never the only original.
  2. Run every method
    Structure, codec history, double compression, frame statistics and PRNU - reported together, not as one score.
  3. Read the method cards
    Each method's result is a card - ELA, noise, PRNU - and the workbench ranks what each supports.
  4. Weigh the model pack as an observation
    A model's opinion is labelled and never quoted as the finding; the methods and the examiner make the finding.
  5. Record the ranked result
    The methods, the ranking and the examiner's reading go into the case.

Methods make the finding. One score convinces nobody, and a model's verdict is an observation, not the finding. The workbench runs every method - structure, codec history, double compression, frame statistics, PRNU - and reports what each supports; the methods and the examiner make the finding. Examine the copy, never the only original.

6Ten situations, and exactly what to do

1 of 10

The clip was said to be cut

The other side says the clip was cut, re-encoded or generated.

What to choose

Run every method; the finding rests on the methods and the examiner, not a score.

Steps
  1. Hash and copy the clip
  2. Run every method
  3. Read the ranked cards
  4. Record the result in the case
recoveryantra authenticate E:/Exhibits/E5/clip.mp4 --case F:/Case-176
2 of 10

Double compression

You suspect the image was saved twice.

What to choose

The double-compression method reports whether the statistics support it.

Steps
  1. Run the examination
  2. Read the double-compression card
  3. Corroborate with codec history
  4. Record the finding
recoveryantra authenticate E:/Exhibits/E5/photo.jpg --case F:/Case-176
3 of 10

A container from the wrong editor

The container may have been written by editing software.

What to choose

The structure method reports the container's writer against the recorder.

Steps
  1. Run the examination
  2. Read the structure card
  3. Compare writer with the recorder
  4. Record it
recoveryantra authenticate E:/Exhibits/E5/clip.mp4 --case F:/Case-176
4 of 10

PRNU sensor match

You want to test whether an image came from a specific camera sensor.

What to choose

The PRNU method compares the sensor-noise fingerprint.

Steps
  1. Run the examination
  2. Read the PRNU card
  3. Weigh the match strength
  4. Record what it supports
recoveryantra authenticate E:/Exhibits/E5/photo.jpg --case F:/Case-176
5 of 10

Add a deepfake model pack

You want a model's labelled opinion alongside the methods.

What to choose

Add a signed pack with --models; its output is an observation.

Steps
  1. Run every method
  2. Add the signed model pack
  3. Label its output an observation
  4. Keep the methods as the finding
recoveryantra authenticate E:/Exhibits/E5/clip.mp4 --models deepfake-v3 -o F:/Case-176/auth
6 of 10

Do not quote the model

The model returned a confident verdict.

What to choose

A model output is an observation; the methods and the examiner make the finding.

Steps
  1. Read the model observation
  2. Do not quote it as the finding
  3. Rely on the ranked methods
  4. Record the examiner's reading
recoveryantra authenticate E:/Exhibits/E5/clip.mp4 --case F:/Case-176
7 of 10

Examine the copy, not the original

There is only one copy of the exhibit.

What to choose

Hash it, copy it, examine the copy.

Steps
  1. Hash the exhibit
  2. Copy it
  3. Examine the copy
  4. Keep the original untouched
recoveryantra authenticate E:/Exhibits/E5/clip_copy.mp4 --case F:/Case-176
8 of 10

Frame statistics anomaly

A region of frames looks statistically odd.

What to choose

The frame-statistics method reports the anomaly and where.

Steps
  1. Run the examination
  2. Read the statistics card
  3. Locate the anomaly
  4. Record it
recoveryantra authenticate E:/Exhibits/E5/clip.mp4 --case F:/Case-176
9 of 10

Write the report data out

The method output must travel with the case.

What to choose

Write it to a folder with -o.

Steps
  1. Run the examination
  2. Write the report data
  3. Keep it with the case
  4. Attach to the certificate
recoveryantra authenticate E:/Exhibits/E5/clip.mp4 -o F:/Case-176/auth
10 of 10

Several methods agree

One method alone convinces nobody.

What to choose

Report the methods that support the finding together, with the ranking.

Steps
  1. Run every method
  2. Read which support the finding
  3. State them together
  4. Record the ranked result
recoveryantra authenticate E:/Exhibits/E5/clip.mp4 --case F:/Case-176

7The same job at the command line

recoveryantra authenticate E:/Exhibits/E5/clip.mp4 --case F:/Case-176
Feature 18 · Steganalysis

Examine a file for hidden data

A steganalysis pipeline that grades whether an exhibit carries a concealed payload and, on request, carves out appended data, embedded files and LSB payloads to a case folder - reading only, with unconfirmed carves labelled.

1How to get there

HomeSteganalysisFile → Examine
The steganalysis workspace
  1. 1File path the file to examine for hidden data.
  2. 2Examine for hidden data run the examination - reading only.
  3. 3Methods and limits read the methods and their honest limits.
app-mf-stego.webp - the steganalysis screen (real capture)

2The pipeline and the graded verdict

The steganalysis pipeline phases and the graded verdict on a real image
  1. 1The pipeline the examination phases and the graded verdict.
app-mf-stego-modal-pipeline.webp - the phases and the verdict (real capture)

3The options, and what to set them to

OptionWhat it doesWhat to choose
stego <file>Examines a file for hidden data and prints a graded verdict.Whenever an exhibit might carry a concealed payload.
--extractCarves out and saves what it finds.When the examination should recover appended data, embedded files or an LSB payload, not only report it.
--outWhere the recovered hidden data is written.A case folder, never the exhibit's own media.
--jsonPrints the full report as JSON.When a tool or a case script consumes the result.

4Step by step

  1. Point at the file
    An image larger than its content explains, a file a suspect treated as important, or anything flagged for a second look.
  2. Run the examination
    Reading only - the exhibit is never changed - and it prints a graded verdict.
  3. Read the grade honestly
    The verdict is graded, and an unconfirmed carve is labelled so it is not mistaken for proven.
  4. Extract what is found
    With extraction on, appended data, embedded files and LSB payloads land in a case folder you can open.
  5. Record the result
    The verdict and anything carved go into the case, with the honest limits stated.

Reading only, honest grade. The examination is reading only and never alters the exhibit; extraction writes to a separate case folder, never the exhibit's own media. An unconfirmed carve is labelled so it is not mistaken for proven.

5Ten situations, and exactly what to do

1 of 10

An image bigger than it should be

A picture is far larger than its visible content explains.

What to choose

stego examines it and prints a graded verdict.

Steps
  1. Point at the image
  2. Run the examination
  3. Read the graded verdict
  4. Record it
recoveryantra stego E:/Case/Ex1/Out/photo.png
2 of 10

Recover an appended payload

The examination finds data appended after the image.

What to choose

--extract carves it into a case folder.

Steps
  1. Run the examination
  2. Turn on extraction
  3. Write to a case folder
  4. Open the recovered data
recoveryantra stego E:/Case/Ex1/Out/photo.png --extract --out F:/Case/hidden
3 of 10

An LSB payload

You suspect a least-significant-bit payload in the pixels.

What to choose

The examination tests for it and, with extraction, carves it out.

Steps
  1. Run the examination
  2. Read the LSB result
  3. Extract if found
  4. Record the finding
recoveryantra stego E:/Case/Ex1/Out/photo.png --extract --out F:/Case/hidden
4 of 10

A file a suspect guarded

A file was treated as important with no obvious reason.

What to choose

Examine it for concealed data.

Steps
  1. Point at the file
  2. Run the examination
  3. Read the verdict
  4. Extract if found
recoveryantra stego E:/Case/Ex1/Out/notes.bmp
5 of 10

Audio carrier

A WAV file may carry a concealed payload.

What to choose

The examination reads any file, audio included.

Steps
  1. Point at the WAV
  2. Run the examination
  3. Read the verdict
  4. Extract if found
recoveryantra stego E:/Case/Ex1/Out/clip.wav
6 of 10

An unconfirmed carve

Extraction found something but it is not proven.

What to choose

The carve is labelled unconfirmed; do not present it as proven.

Steps
  1. Extract the candidate
  2. Read the unconfirmed label
  3. State it is not proven
  4. Corroborate before relying on it
recoveryantra stego E:/Case/Ex1/Out/photo.png --extract --out F:/Case/hidden
7 of 10

Write to the case, not the media

You need the recovered data in the case's working files.

What to choose

--out a case folder, never the exhibit's own media.

Steps
  1. Run extraction
  2. Set the out folder to the case
  3. Confirm it is not the media
  4. Record the finding
recoveryantra stego E:/Case/Ex1/Out/photo.png --extract --out F:/Case/hidden
8 of 10

Feed the result to a script

A case script consumes the verdict.

What to choose

--json prints the full report.

Steps
  1. Run the examination
  2. Emit JSON
  3. Feed the script
  4. Keep the raw
recoveryantra stego E:/Case/Ex1/Out/photo.png --json
9 of 10

Nothing is found

The examination finds no concealed data.

What to choose

The graded verdict says so; absence is reported plainly, not as failure.

Steps
  1. Run the examination
  2. Read the negative verdict
  3. Record it plainly
  4. Note the methods used
recoveryantra stego E:/Case/Ex1/Out/photo.png
10 of 10

The exhibit must not change

The examination must not alter the file.

What to choose

It is reading only; extraction writes to a separate folder, never the exhibit.

Steps
  1. Run the examination
  2. Confirm the exhibit is unchanged
  3. Extract to a case folder
  4. Record the finding
recoveryantra stego E:/Case/Ex1/Out/photo.png

6The same job at the command line

recoveryantra stego E:/Case/Ex1/Out/photo.png --extract --out F:/Case/hidden
Feature 19 · Plate reading (ALPR)

Read a plate from a frame pack, reading sealed first

Plate assistance on a frame pack, offline with the bundled model or OpenALPR or, with authority, a cloud VLM - the examiner's own reading typed and sealed before any engine answer, and Indian plates validated to full depth.

1How to get there

HomePlateFrame pack → Your reading → Model answer
Plate assistance with a signed local model pack
  1. 1Frame pack the frame pack to read a plate from.
  2. 2Frames to send which frames to submit.
  3. 3Provider / model the engine or provider to ask.
  4. 4The question the question to put to the engine.
app-mf-plate.webp - the plate screen; no plate model pack loaded, so the honest needs-pack state is shown

2The engine: which one, and when

local (on-machine)
Reads with the bundled YuNet plus fast-plate-ocr model. No internet, nothing sent, spends nothing.
Choose this when you want an offline read with no frame leaving the machine - the default.
openalpr (on-machine)
Reads with the OpenALPR engine (AGPL-3.0), also offline, needs OpenALPR installed.
Choose this when OpenALPR is installed and you want its engine's read, still offline.
cloud
Asks a VLM provider; the frame pack leaves the machine and the transfer manifest records each frame's digest.
Choose this when your agency has authorised it and a transfer manifest is acceptable.

3The options, and what to set them to

OptionWhat it doesWhat to choose
<pack>A frame-pack .zip - the only unit this door accepts.Always: a video, a clip or a loose picture is refused by type.
--readingThe examiner's own reading, typed and sealed before any model answer can be shown.Always, first: without a sealed reading (or --unreadable) the command stops at the seal step.
--enginelocal, openalpr or cloud.local or openalpr to send nothing; cloud only with authority, knowing the frames leave.
--country / --constraintThe plate syntax the read is checked against.India is built to full depth; another country is reported as observed, not forced into a format.
--unreadableSeals the reading as ‘cannot be read’.When the plate genuinely cannot be read - still a sealed reading, not a bypass.

4Step by step

  1. Build the frame pack
    Plate reading takes a frame pack, never a video or a loose picture.
  2. Type and seal your own reading
    The examiner's reading is sealed before any engine answer; without it, or --unreadable, there is no route to an answer.
  3. Choose the engine
    local or openalpr send nothing and spend nothing; cloud sends the frames and logs each digest.
  4. Read the engine's answer as an observation
    The engine read rides behind the sealed reading; the sealed reading is the record.
  5. Check against the plate syntax
    India is validated to full depth; another country is reported as observed, not forced into a format it has no pack for.

Sealed reading first. The examiner's own reading is typed and sealed BEFORE any engine answer can be shown - without it, or an --unreadable seal, the command stops. local and openalpr send nothing and spend nothing; cloud sends the frames and logs each digest in the transfer manifest. The sealed reading is the record; the engine read rides behind it.

5Ten situations, and exactly what to do

1 of 10

Read a plate offline

You have a frame pack showing a plate and no authority to send anything.

What to choose

Seal your reading, then read with the local engine - nothing leaves.

Steps
  1. Build the frame pack
  2. Type and seal your reading
  3. Read with the local engine
  4. Record the sealed reading as the record
recoveryantra plate F:/Case/packs/pack_001.zip --frames 0 --reading MH12AB1234 --engine local
2 of 10

OpenALPR is installed

You want the OpenALPR engine's read, still offline.

What to choose

Seal your reading, then read with openalpr.

Steps
  1. Seal your reading
  2. Choose the openalpr engine
  3. Read offline
  4. Compare with your reading
recoveryantra plate F:/Case/packs/pack_001.zip --frames 0 --reading MH12AB1234 --engine openalpr
3 of 10

A cloud VLM, with authority

Your agency has authorised a cloud read.

What to choose

Seal your reading, then cloud - the frames leave and each digest is logged.

Steps
  1. Seal your reading
  2. Confirm authorisation
  3. Read with the cloud engine
  4. Keep the transfer manifest
recoveryantra plate F:/Case/packs/pack_001.zip --frames 0 --reading MH12AB1234 --engine cloud --provider openai --model gpt-4o
4 of 10

The plate cannot be read

The plate is genuinely illegible.

What to choose

Seal the reading as --unreadable - still a sealed reading.

Steps
  1. Build the frame pack
  2. Seal the reading as unreadable
  3. Optionally ask an engine
  4. Record the sealed reading
recoveryantra plate F:/Case/packs/pack_001.zip --frames 0 --unreadable --engine local
5 of 10

No sealed reading

You try to get an engine answer without sealing a reading.

What to choose

The command stops at the seal step; there is no route to an answer without a sealed reading first.

Steps
  1. Attempt an engine read
  2. Read the stop at the seal step
  3. Type and seal your reading
  4. Then read
recoveryantra plate F:/Case/packs/pack_001.zip --frames 0 --engine local
6 of 10

An Indian HSRP plate

The plate is an Indian high-security plate.

What to choose

India is built to full depth; validate under the HSRP constraint.

Steps
  1. Seal your reading
  2. Set country India
  3. Validate under HSRP
  4. Record the checked read
recoveryantra plate F:/Case/packs/pack_001.zip --frames 0 --reading MH12AB1234 --country IN --constraint hsrp --engine local
7 of 10

A plate from another country

The plate is from a country with no pack.

What to choose

It is reported as observed, not forced into a format it has no pack for.

Steps
  1. Seal your reading
  2. Read with the engine
  3. Note it is reported as observed
  4. Do not force a format
recoveryantra plate F:/Case/packs/pack_001.zip --frames 0 --reading ABC1234 --engine local
8 of 10

Only some frames

A pack has many frames and you want to submit a few.

What to choose

Name the frames with --frames; each leaves only if a cloud request proceeds.

Steps
  1. Seal your reading
  2. Name the frames
  3. Choose the engine
  4. Read
recoveryantra plate F:/Case/packs/pack_001.zip --frames 0 12 40 --reading MH12AB1234 --engine local
9 of 10

A video was offered

Someone hands you a video to read a plate from.

What to choose

The door takes only a frame pack; build one in review first.

Steps
  1. Refuse the video
  2. Build a frame pack in review
  3. Seal your reading
  4. Read with the local engine
recoveryantra plate F:/Case/packs/pack_001.zip --frames 0 --reading MH12AB1234 --engine local
10 of 10

The engine and your reading differ

The engine returns a different plate from your reading.

What to choose

Your sealed reading is the record; the engine read is an observation behind it.

Steps
  1. Seal your reading first
  2. Read with the engine
  3. Note the difference
  4. Keep the sealed reading as the record
recoveryantra plate F:/Case/packs/pack_001.zip --frames 0 --reading MH12AB1234 --engine local

6The same job at the command line

recoveryantra plate F:/Case/packs/pack_001.zip --frames 0 --reading MH12AB1234 --country IN --constraint hsrp --engine local
Feature 20 · DVR recorders registry

Know what the tool reads, and record the intake

The proven-format coverage and the tested-recorder registry, honest about what is held but not yet supported, with an intake form that captures make, model, device kind and provenance and writes a receipt line into the case.

1How to get there

HomeRecorders & formatsCoverage → Registry → Intake
The recorder registry: format coverage and intake
  1. 1Proven coverage the proven-format coverage.
  2. 2The registry the recorder registry and the held-but-unsupported list.
app-mf-recorders.webp - the proven-format coverage and the recorder registry (real capture)

2The intake form and its receipt

The recorder intake form filled, with its intake receipt line
  1. 1Make the recorder make.
  2. 2Model the recorder model.
  3. 3Device kind the kind of device.
  4. 4Submit sample submit a sample for support.
app-mf-recorders-modal-intake.webp - the intake form and receipt (real capture)

3The commands, and what each is for

OptionWhat it doesWhat to choose
footage formatsLists the proven-format coverage.To state exactly what this build is proven to read.
footage registryLooks a recorder up by make and model.To check whether a specific recorder is in the tested registry.
footage intakeRecords an intake with the examiner named and the source hashed.To bring a recorder export into the case with a chain of custody.
Submit sampleSends a sample so a held-but-unsupported format can be added.When a recorder's format is not yet covered and you can share a sample.

4Step by step

  1. Read the proven coverage
    What this build is proven to read, before anything is promised.
  2. Look the recorder up
    The registry says whether the make and model are known, and what is held but not yet supported.
  3. Record the intake
    The intake form captures make, model, device kind and how it was obtained, and writes a receipt line.
  4. Submit a sample for a gap
    Where a format is held but unsupported, a sample lets it be added rather than guessed at.
  5. Proceed within the coverage
    Decode and intake only within what is proven; state the limit where it is not.

State the coverage honestly. The registry states what is proven and, honestly, what is held but not yet supported. Where a format is unsupported, submit a sample so it can be added rather than guessed at; do not promise a court a format the registry does not cover.

5Ten situations, and exactly what to do

1 of 10

Is this recorder covered

A specific make and model has to be checked before a promise.

What to choose

footage registry looks it up.

Steps
  1. Note the make and model
  2. Look them up
  3. Read the coverage
  4. Proceed within it
recoveryantra footage registry --make Hikvision --model DS-7608
2 of 10

State what can be read

A court asks what the tool is proven to read.

What to choose

footage formats lists the proven coverage.

Steps
  1. Run formats
  2. Read the proven list
  3. State it plainly
  4. Promise only within it
recoveryantra footage formats
3 of 10

Record a recorder intake

A recorder export must enter the case with its provenance.

What to choose

The intake form captures make, model, kind and source, and writes a receipt.

Steps
  1. Fill the intake form
  2. Record make, model and kind
  3. Note how it was obtained
  4. Keep the receipt line
recoveryantra footage intake E:/Exhibits/E3 --case F:/Case-176 --examiner "S. Menon"
4 of 10

A format held but unsupported

The registry shows the format is held but not yet supported.

What to choose

Submit a sample so it can be added, rather than guessed at.

Steps
  1. Look the recorder up
  2. See it is held but unsupported
  3. Submit a sample
  4. Await support
recoveryantra footage registry --make Dahua --model XVR5216
5 of 10

A dashcam, not a DVR

The device is a dashcam.

What to choose

Record the device kind on the intake as dashcam.

Steps
  1. Fill the intake form
  2. Set the kind to dashcam
  3. Record make and model
  4. Keep the receipt
recoveryantra footage intake E:/Exhibits/E4 --case F:/Case-176 --examiner "S. Menon"
6 of 10

A body cam export

A body-worn camera export has arrived.

What to choose

Record it with the kind body cam and its provenance.

Steps
  1. Fill the intake form
  2. Set the kind to body cam
  3. Note the source
  4. Keep the receipt
recoveryantra footage intake E:/Exhibits/E6 --case F:/Case-176 --examiner "S. Menon"
7 of 10

How the export was obtained

The provenance of the export matters.

What to choose

The intake records how it was obtained - export menu, pen-drive copy or disk image.

Steps
  1. Fill the intake form
  2. Record how it was obtained
  3. Keep the receipt line
  4. Cite it in the report
recoveryantra footage intake E:/Exhibits/E3 --case F:/Case-176 --examiner "S. Menon"
8 of 10

Confirm the coverage before decode

Before decoding you want to be sure of the coverage.

What to choose

Check formats and the registry first, then decode.

Steps
  1. Run formats
  2. Check the registry
  3. Confirm coverage
  4. Decode within it
recoveryantra footage formats
9 of 10

A phone as the recorder

The footage came from a phone, not a fixed recorder.

What to choose

Record the kind as phone on the intake.

Steps
  1. Fill the intake form
  2. Set the kind to phone
  3. Record make and model
  4. Keep the receipt
recoveryantra footage intake E:/Exhibits/E7 --case F:/Case-176 --examiner "S. Menon"
10 of 10

The registry has the recorder

The make and model are in the tested registry.

What to choose

Proceed to decode and intake within the proven coverage.

Steps
  1. Look the recorder up
  2. Confirm it is tested
  3. Decode the export
  4. Record the intake
recoveryantra footage registry --make Hikvision --model DS-7608

6The same job at the command line

recoveryantra footage registry --make Hikvision --model DS-7608 && recoveryantra footage intake E:/Exhibits/E3 --case F:/Case-176 --examiner "S. Menon"
Feature 21 · Case review

Search, tag and audit the whole case

One workbench over the case - a search across keyword hits, gallery and findings, the tags and bookmarks gathered, saved views to return to, and the hash-chained audit log that proves nothing was altered.

1How to get there

HomeCase reviewSearch → Tags → Views → Audit
Case review: search, tags, saved views and the audit log
  1. 1Search search across the case.
  2. 2Tags & bookmarks the tags and bookmarks.
  3. 3Saved views saved views of the case.
  4. 4Audit log the audit log of the case.
app-mf-casehub.webp - the case review tabs (real capture)

2The four tabs, and what each is for

OptionWhat it doesWhat to choose
Search tabSearches keyword hits, gallery exhibits and findings together.To find where in the case an item, a person or a term appears.
Tags & bookmarks tabLists everything tagged or bookmarked across the case.To gather the marks made in each workspace into one view.
Saved views tabStores a filter to return to.For a filter you will reuse, such as one custodian's images.
Audit log tabShows the hash-chained record of every action.To read, or to verify with audit, that nothing was inserted, removed or reordered.

3Step by step

  1. Search across the case
    Keyword hits, gallery exhibits and findings in one search, so nothing is siloed by workspace.
  2. Gather the tags and bookmarks
    Every mark made in every workspace, in one place.
  3. Save a view you will reuse
    A filter stored so the next return to the case starts from it.
  4. Read the audit log
    The hash-chained record of who did what, when.
  5. Verify the chain before disclosure
    Run audit with the manifest so a trail cut short at the end is caught too.

The chain, and the seal. The audit log is hash-chained, so an edit, deletion, insertion or reorder is detectable and audit names the first break. A chain cannot see a tail cut off the end; verify with the manifest, which holds the sealed receipt the chain alone cannot see past.

4Ten situations, and exactly what to do

1 of 10

Where does this term appear

You need everywhere a term shows up across the case.

What to choose

The Search tab spans keyword hits, gallery and findings.

Steps
  1. Open case review
  2. Search the term
  3. Read the spanning results
  4. Tag what matters
recoveryantra search E:/Case/Ex1 "payroll"
2 of 10

Gather every mark

Marks were made in several workspaces and you want them together.

What to choose

The Tags & bookmarks tab collects them.

Steps
  1. Open case review
  2. Open tags and bookmarks
  3. Read the collected marks
  4. Promote to findings
recoveryantra view bookmark --case E:/Case/Ex1
3 of 10

Return to a filter

You will come back to one custodian's images often.

What to choose

Save it as a view.

Steps
  1. Build the filter
  2. Save the view
  3. Return to it later
  4. Update it as the case grows
recoveryantra search E:/Case/Ex1 --custodian "A. Rao"
4 of 10

Read who did what

You need the record of actions taken on the case.

What to choose

The Audit log tab shows the hash-chained record.

Steps
  1. Open case review
  2. Open the audit log
  3. Read the actions
  4. Note the sequence
recoveryantra audit E:/Case/Ex1/audit_trail.jsonl
5 of 10

Verify nothing was altered

Before disclosure you must prove the trail is intact.

What to choose

Verify the chain with the manifest so truncation is caught.

Steps
  1. Open the audit log
  2. Verify the chain
  3. Add the manifest
  4. Attach the result to the report
recoveryantra audit E:/Case/Ex1/audit_trail.jsonl --manifest E:/Case/Ex1/recovery_manifest.json
6 of 10

Find a person across the case

A named individual may appear in messages, images and findings.

What to choose

Search the name; the results span the case.

Steps
  1. Open case review
  2. Search the name
  3. Read across workspaces
  4. Record the connections
recoveryantra search E:/Case/Ex1 "A. Rao"
7 of 10

Only deleted items

You want to focus on items recovered from a deleted state.

What to choose

Search with the deleted state to separate them.

Steps
  1. Open case review
  2. Search with deleted state
  3. Read the deleted items
  4. Tag what matters
recoveryantra search E:/Case/Ex1 "contract" --state deleted
8 of 10

The findings so far

You want the findings recorded to date.

What to choose

The search and tags tabs gather the findings in one view.

Steps
  1. Open case review
  2. Filter to findings
  3. Read them together
  4. Prepare the report
recoveryantra search E:/Case/Ex1 --findings
9 of 10

A saved view for the report

The report needs a specific filtered set.

What to choose

Save the filter as a view and generate the report from it.

Steps
  1. Build the filter
  2. Save the view
  3. Generate from it
  4. Keep the view with the case
recoveryantra search E:/Case/Ex1 --tag "key image"
10 of 10

Confirm the chain first break

A challenge claims the trail was edited.

What to choose

audit names the first break, if any; a clean verify answers the challenge.

Steps
  1. Verify the chain
  2. Read the result
  3. Name any first break
  4. Attach the verification
recoveryantra audit E:/Case/Ex1/audit_trail.jsonl --manifest E:/Case/Ex1/recovery_manifest.json

5The same job at the command line

recoveryantra audit E:/Case/Ex1/audit_trail.jsonl --manifest E:/Case/Ex1/recovery_manifest.json
Feature 22 · Cross-case

Trace a selector across cases

A lab store of case properties that a selector - an email, a number, a hash - can be looked up across, with correlation of what a case shares with others, honest about holding only the cases you added.

1How to get there

HomeCross-caseLook up • Add • Correlate
Cross-case: look up or correlate a selector
  1. 1Value to look up the selector to look up.
  2. 2Look up look the value up across the store.
  3. 3Case folder a case to add to the store.
  4. 4Correlate correlate a case with the store.
app-mf-crosscase.webp - the cross-case panel (real capture)

2A lookup and its result

A cross-case selector lookup and its result panel
  1. 1The selector the selector being looked up.
  2. 2Look up the lookup and its result.
app-mf-crosscase-modal-lookup.webp - a lookup; one case is indexed on this bench, so the honest 'no matches' result is shown

3The commands, and what each is for

OptionWhat it doesWhat to choose
crosscase ingestAdds a case's properties to the lab store.To make a case available for cross-case lookup and correlation.
crosscase lookupFinds which cases carry a value.To trace a selector - an email, a number, a hash - across cases.
crosscase correlateShows what a case shares with others.To find overlap between a new case and the store.
crosscase export / importMoves the store.To share the store between benches.
crosscase statsSummarises the store.To see how many cases and selectors it holds.

4Step by step

  1. Add cases to the store
    Ingest each case's properties so they can be looked up and correlated.
  2. Look a selector up
    An email, a number or a hash returns the cases that carry it.
  3. Correlate a case
    See what a new case shares with those already in the store.
  4. Read the result honestly
    With one case indexed, a lookup returns no matches; that is the honest answer, not a fault.
  5. Move the store if needed
    Export and import to share the store between benches.

Only what is in the store. Cross-case works only from cases you have added to the store, and it reports what it holds. With one case indexed a lookup honestly returns no matches; it is not evidence of absence beyond the store.

5Ten situations, and exactly what to do

1 of 10

Has this email appeared before

A selector may link to earlier cases.

What to choose

crosscase lookup finds which cases carry it.

Steps
  1. Add the cases to the store
  2. Look the email up
  3. Read the cases returned
  4. Record the link
recoveryantra crosscase lookup example@bench.local
2 of 10

Add a case to the store

A new case's properties should be searchable across cases.

What to choose

crosscase ingest adds them.

Steps
  1. Point at the case folder
  2. Ingest it into the store
  3. Confirm it is added
  4. Look up selectors
recoveryantra crosscase ingest F:/Case-176
3 of 10

What does this case share

You want overlap between a new case and the store.

What to choose

crosscase correlate shows the shared selectors.

Steps
  1. Ingest the store's cases
  2. Correlate the new case
  3. Read the shared selectors
  4. Record the overlap
recoveryantra crosscase correlate F:/Case-176
4 of 10

One case, no matches

Only one case is indexed and a lookup returns nothing.

What to choose

That is the honest result; more cases in the store change it.

Steps
  1. Look the selector up
  2. Read the no-match result
  3. Confirm one case indexed
  4. Record it plainly
recoveryantra crosscase lookup example@bench.local
5 of 10

A phone number across cases

A number may recur across investigations.

What to choose

Look it up as a selector.

Steps
  1. Add the cases
  2. Look the number up
  3. Read the cases returned
  4. Record the link
recoveryantra crosscase lookup +91XXXXXXXXXX
6 of 10

A file hash across cases

A known-bad hash may appear in more than one case.

What to choose

Look the hash up across the store.

Steps
  1. Add the cases
  2. Look the hash up
  3. Read the matches
  4. Record the connection
recoveryantra crosscase lookup e3b0c44298fc1c14
7 of 10

Share the store

Another bench needs the same store.

What to choose

crosscase export then import on the other bench.

Steps
  1. Export the store
  2. Send it
  3. Import on the other bench
  4. Look up there
recoveryantra crosscase export E:/store/crosscase.json
8 of 10

How big is the store

You want to know the store's coverage.

What to choose

crosscase stats summarises it.

Steps
  1. Run stats
  2. Read the case and selector counts
  3. Judge the coverage
  4. Add more if thin
recoveryantra crosscase stats
9 of 10

Remove a case

A case should no longer be in the store.

What to choose

crosscase forget removes it.

Steps
  1. Identify the case
  2. Forget it from the store
  3. Confirm it is gone
  4. Re-run stats
recoveryantra crosscase forget F:/Case-176
10 of 10

Import a colleague's store

A colleague sent their cross-case store.

What to choose

crosscase import merges it.

Steps
  1. Receive the store file
  2. Import it
  3. Run stats
  4. Look up across the merged store
recoveryantra crosscase import E:/store/incoming.json

6The same job at the command line

recoveryantra crosscase ingest F:/Case-176 && recoveryantra crosscase lookup example@bench.local
Feature 23 · Ask the case

Ask a triage question, your reading sealed first

Retrieval over the case's own indexed data answers a triage question, with the examiner's reading sealed before any model answer is disclosed and every reveal audited - the model always an observation, never a finding.

1How to get there

HomeAsk the caseAsk → Seal reading → Reveal
Ask the case: retrieval and the sealed verdict track
  1. 1Case folder the case to query.
  2. 2The question the triage question to ask.
  3. 3Ask run the retrieval.
  4. 4Your reading your own reading, sealed first.
app-mf-casequery.webp - the ask-the-case panel (real capture)

2Seal a reading, or seal it inconclusive

Seal a typed reading
You type your own reading; it is sealed into the audit trail before any model answer is disclosed.
Choose this when the case supports a reading - the record then shows what you concluded independently of the tool.
Seal as inconclusive
You seal your reading as inconclusive rather than typing one.
Choose this when the case does not yet support a reading but you still want the model's words disclosed and audited.

3The retrieval and the sealed verdict track

Ask-the-case: the retrieval list and the sealed verdict track
  1. 1The question the question asked.
  2. 2Examiner the examiner, recorded with the reading.
app-mf-casequery-modal-ask.webp - answered from the single bench case's index (real capture)

4The options, and what to set them to

OptionWhat it doesWhat to choose
<question>A triage question over the case's own indexed data.For a question like who met whom and when, answered only from the case.
--readingYour own reading, sealed before any model answer.Always, first: sealed once, and a later change is recorded as an edit.
--inconclusiveSeals the reading as inconclusive.When the case does not support a reading yet but you want the model's words audited.
--revealDiscloses the model's verbatim words after a reading is sealed.To see the model's observation, knowing the reveal is an audited event.
--limitHow many case items to retrieve as context.When the default breadth is too wide or too narrow for the case.

5Step by step

  1. Ask the question
    Retrieval returns the case items that bear on it, from the case's own indexed data - nothing outside it.
  2. Read the retrieved items
    The items are the evidence; the question is answered from them.
  3. Seal your own reading
    Type your reading, or seal it inconclusive, before any model answer - it is sealed once, and a later change is an edit.
  4. Reveal the model's words
    The reveal is an audited event, recorded with who did it and when.
  5. Keep the model an observation
    The model's text is an observation, never a finding; revealing it records that it was seen.

Reading sealed before the model. Retrieval returns the case items that bear on the question; a model answer, if any, is an observation, never a finding. Your own reading is sealed before any model answer is disclosed, and the reveal is an audited event - so the record shows what the examiner concluded independently of the tool.

6Ten situations, and exactly what to do

1 of 10

Who met whom and when

You want a triage answer over the case's indexed data.

What to choose

Ask the question; retrieval returns the bearing items, and your reading is sealed first.

Steps
  1. Ask the question
  2. Read the retrieved items
  3. Seal your reading
  4. Reveal the model as an observation
recoveryantra casequery "who met whom and when" --case F:/Case-176 --reading "..." --examiner "S. Menon"
2 of 10

Does a confession appear

You want to know whether a confession is in the case.

What to choose

Ask over the indexed data; the items are the evidence.

Steps
  1. Ask the question
  2. Read the retrieved items
  3. Seal your reading
  4. Reveal the model
recoveryantra casequery "does a confession appear" --case F:/Case-176 --reading "..." --examiner "S. Menon"
3 of 10

The case does not support a reading

You want the model's words but cannot yet form a reading.

What to choose

Seal --inconclusive; the model's words are then disclosed and audited.

Steps
  1. Ask the question
  2. Seal inconclusive
  3. Reveal the model
  4. Record it as an observation
recoveryantra casequery "who owns this account" --case F:/Case-176 --inconclusive --examiner "S. Menon"
4 of 10

Seal before revealing

You must show your reading was independent of the tool.

What to choose

The reading is sealed before any reveal; the trail shows what you concluded first.

Steps
  1. Ask the question
  2. Type and seal your reading
  3. Then reveal the model
  4. Keep both in the trail
recoveryantra casequery "what files were carved from Exhibit A" --case F:/Case-176 --reading "..." --examiner "S. Menon"
5 of 10

The model differs from your reading

The model's answer disagrees with your reading.

What to choose

Your sealed reading is the record; the model is an observation behind it.

Steps
  1. Seal your reading
  2. Reveal the model
  3. Note the difference
  4. Keep the reading as the record
recoveryantra casequery "who sent the transfer" --case F:/Case-176 --reading "..." --examiner "S. Menon"
6 of 10

Narrow the retrieval

The default retrieval is too broad for the case.

What to choose

Set --limit to the number of items you want as context.

Steps
  1. Ask the question
  2. Set the limit
  3. Read the narrower context
  4. Seal your reading
recoveryantra casequery "who met whom and when" --case F:/Case-176 --limit 20 --reading "..."
7 of 10

Only the case is searched

You must confirm nothing outside the case is consulted.

What to choose

Retrieval searches the case's own indexed data only, nothing outside it.

Steps
  1. Ask the question
  2. Confirm the case scope
  3. Read the retrieved items
  4. Seal your reading
recoveryantra casequery "any mention of the vehicle" --case F:/Case-176 --reading "..."
8 of 10

The reveal is audited

You need the disclosure of the model's words to be on record.

What to choose

The reveal records who did it and when.

Steps
  1. Seal your reading
  2. Reveal the model
  3. Confirm the audit entry
  4. Keep it with the case
recoveryantra casequery "who owns the wallet" --case F:/Case-176 --reading "..." --reveal --examiner "S. Menon"
9 of 10

Change a sealed reading

New evidence changes your reading after sealing.

What to choose

A later change is recorded as an edit, never as the original reading.

Steps
  1. Seal the first reading
  2. Later, record the edit
  3. Keep the original in the trail
  4. Note why it changed
recoveryantra casequery "who met whom and when" --case F:/Case-176 --reading "..." --examiner "S. Menon"
10 of 10

Query the most recent case

You want to query the case you just worked, without naming it.

What to choose

Leave the case blank to use the most recent.

Steps
  1. Ask the question
  2. Leave the case blank
  3. Read the retrieved items
  4. Seal your reading
recoveryantra casequery "what files were carved from Exhibit A" --reading "..." --examiner "S. Menon"

7The same job at the command line

recoveryantra casequery "who met whom and when" --case F:/Case-176 --reading "..." --examiner "S. Menon"
Feature 24 · Certificate & report

Turn the case into a court-ready certificate

The CASE-UCO export and the Section 63(4) BSA-2023 certificate, generated from what the case actually holds and signed by a named examiner, with every pack verified before it leaves and the audit chain verified before disclosure.

1How to get there

HomeExportClip → Export → Certificate
Export and the Section 63(4) certificate
  1. 1Asset path the asset to export.
  2. 2From / to the range to export.
  3. 3Case name the case for the export.
  4. 4Examiner the typed examiner.
app-mf-export.webp - the export screen (real capture)

2The certificate builder

The export and Section 63(4) certificate builder with a case open
  1. 1Case name the case for the certificate.
  2. 2Examiner the examiner on the certificate.
app-mf-export-modal-certificate.webp - the certificate builder (real capture)

3The commands, and what each is for

OptionWhat it doesWhat to choose
review verifyRe-hashes every frame and the manifest of a pack.Before export, to prove what leaves is unchanged.
certify draftDrafts the certificate from what the case holds, to a file.To produce the S.63(4) BSA-2023 certificate and the CASE-UCO export.
Case + ExaminerNames the case and the typed examiner on the certificate.Always: the certificate is drawn from the case and signed by a named examiner.
From / toBounds the export to a frame range.When only part of the asset is disclosed.

4Step by step

  1. Verify the pack
    Re-hash every frame and the manifest so what leaves is proven unchanged.
  2. Open the certificate builder
    It draws from what the case actually holds, with the case and the examiner named.
  3. Draft the certificate
    The S.63(4) BSA-2023 certificate and the CASE-UCO export, generated from the case.
  4. Name the examiner
    The certificate is signed by a named examiner, typed, not inferred.
  5. Keep the export with the case
    The certificate, the CASE-UCO export and the verified pack travel together.

Generated, verified, signed. The certificate is generated from what the case actually holds and signed by a named, typed examiner - it is not written by hand. Verify the pack before it leaves and the audit chain before disclosure, so what is certified is provably what the case holds.

5Ten situations, and exactly what to do

1 of 10

A court-ready certificate

The case is ready and needs its statutory certificate.

What to choose

certify draft produces the S.63(4) certificate from the case.

Steps
  1. Verify the pack
  2. Open the certificate builder
  3. Draft the certificate
  4. Name the examiner
recoveryantra certify draft --case F:/Case-176 -o F:/Case-176/certificate.pdf
2 of 10

Prove the pack before it leaves

The frames must be shown unchanged.

What to choose

review verify re-hashes them first.

Steps
  1. Build the pack
  2. Verify it
  3. Draft the certificate
  4. Send both together
recoveryantra review verify F:/Case-176/packs/pack_001.zip
3 of 10

CASE-UCO export

The case must go to a system that reads CASE-UCO.

What to choose

The export draws from the case, alongside the certificate.

Steps
  1. Verify the packs
  2. Open the builder
  3. Draft the CASE-UCO export
  4. Keep it with the case
recoveryantra certify draft --case F:/Case-176 -o F:/Case-176/case-uco.json
4 of 10

Name the examiner

The certificate must be signed by a named person.

What to choose

The examiner is typed on the certificate, not inferred.

Steps
  1. Open the builder
  2. Type the examiner
  3. Draft the certificate
  4. Confirm the name on it
recoveryantra certify draft --case F:/Case-176 -o F:/Case-176/certificate.pdf
5 of 10

Only part of the asset

Only a frame range is disclosed.

What to choose

Bound the export with from and to.

Steps
  1. Open the export
  2. Set from and to
  3. Verify the range
  4. Draft the certificate
recoveryantra certify draft --case F:/Case-176 -o F:/Case-176/certificate.pdf
6 of 10

Drawn from what the case holds

The certificate must match the case exactly.

What to choose

It is generated from what the case actually holds, not typed by hand.

Steps
  1. Complete the case
  2. Open the builder
  3. Draft from the case
  4. Check it matches the case
recoveryantra certify draft --case F:/Case-176 -o F:/Case-176/certificate.pdf
7 of 10

Verify again on receipt

The recipient must be able to re-check the pack.

What to choose

They run review verify against the manifest.

Steps
  1. Send the verified pack
  2. Recipient verifies it
  3. Compare hashes
  4. Confirm it is unchanged
recoveryantra review verify F:/Case-176/packs/pack_001.zip
8 of 10

The certificate and pack together

Nothing should travel without its proof.

What to choose

The certificate, the CASE-UCO export and the verified pack go together.

Steps
  1. Verify the pack
  2. Draft the certificate
  3. Bundle them
  4. Disclose the bundle
recoveryantra certify draft --case F:/Case-176 -o F:/Case-176/certificate.pdf
9 of 10

A second exhibit's certificate

A second exhibit needs its own certificate.

What to choose

Draft from that exhibit's case data.

Steps
  1. Complete the second exhibit
  2. Open the builder
  3. Draft its certificate
  4. Name the examiner
recoveryantra certify draft --case F:/Case-176 -o F:/Case-176/certificate-ex2.pdf
10 of 10

Confirm before disclosure

Before disclosure the trail must be verified.

What to choose

Verify the audit chain with the manifest, then draft the certificate.

Steps
  1. Verify the audit chain
  2. Add the manifest
  3. Draft the certificate
  4. Disclose with the verification
recoveryantra audit F:/Case-176/audit_trail.jsonl --manifest F:/Case-176/recovery_manifest.json

6The same job at the command line

recoveryantra review verify F:/Case-176/packs/pack_001.zip && recoveryantra certify draft --case F:/Case-176 -o F:/Case-176/certificate.pdf