edit-report

Single file, no network. Check it against the published hash with shasum -a 256 on this file.

Compares a supplied video against one Forsheur recording, in your browser. Nothing is uploaded: the files are read by this page and never leave the machine. It reaches no verdict about the supplied file and gives it no score — it describes what corresponds, what does not, and what could not be judged.

1 · the original, from the evidence bundle

Unpack the bundle and run its own verifier first — python3 verify_bundle.py . --extract — then point this at extracted/back.mp4.

The recording id is what makes the signature check possible. It is the tail of the QR URL — …/v/lzvYrVDnmEMQ. Every frame carries a two-byte signature derived from it, so with the id a frame from another recording is caught in one frame, before a single picture is compared. Leave it empty and the report will read the signatures but have nothing to compare them against, and it will say so.

2 · the file to examine
3 · how hard to look inside the picture

The last dial answers a different question from the first two: not where inside a frame the difference sits, but whether a whole frame differs more than the frames around it. A blur, a colour grade, a re-render or a frame swapped in from another source changes everything at once, so the first two read it as a recompression — measured, a frame that had lost 85 % of its detail was reported as conforming. Against its own shot it came back at 26.7 deviations.

A region is located when it stands out from that frame's own spread by more than this many median-absolute-deviations. There is no threshold in grey levels anywhere in this tool: a heavily recompressed frame raises its own bar, so there is no published constant to tune against. Measured on real material at 720×1280, a 200×200 patch pasted over four seconds peaks around 79; the same recording merely recompressed to 150 kbit/s peaks around 11. Lower finds more and cries wolf more.


What this page does not do. It does not check the cryptographic chain. That check belongs to the bundle's own verify_bundle.py, which this project deliberately never re-implements — one implementation of the thing that must be right, not two, and there is no Python in a browser. Run it yourself and read its verdict next to this report. The report says as much where the chain would go.