< overcast.video

Case: Camera Ballistics — "Same Camera Shot These"

What it proves: overcast does media forensics with zero billed calls. Every

photo a camera writes carries a device fingerprint in its EXIF — make, model,

lens, and (on many bodies) a durable serial number. exif lifts that fingerprint

from each file (ExifTool, free, local), devices rolls the case up by camera and

labels each cluster STRONG (shared body serial = same physical unit) or WEAK

(same make+model+lens = same model, which millions own), and the knowledge

graph renders the device node physically linking the photos.

The verdict here is real forensics on real media: three CC0 Golden Gate

Bridge photographs from Wikimedia Commons (Unsplash-sourced, public-domain

dedication) with their genuine, untouched EXIF. Two of the three came out of the

**same physical Canon EOS REBEL T5 body — serial 222074031107, same

EF-S18-55mm f/3.5-5.6 IS II lens — four months apart** (2016-08-12 and

2016-12-16). The third is a different body entirely (Nikon D800, serial

6114213). Both Canon frames had been passed through consumer editing apps

(Snapseed 2.14 and Instagram) — and the body serial survived both, which is the

whole point of camera ballistics.

Media provenance (staged under showcase/_media/exif/)

All three photos are **CC0 (public-domain dedication), Unsplash-via-Wikimedia

Commons originals** downloaded at full resolution so the EXIF is intact and real

— nothing synthetic, no injected tags:

| file | camera | serial | capture time | GPS | software |

|---|---|---|---|---|---|

| gg-1.jpg | Canon EOS REBEL T5 | 222074031107 | 2016:12:16 17:24:14 | — | Snapseed 2.14 |

| gg-2.jpg | Canon EOS REBEL T5 | 222074031107 (same body) | 2016:08:12 18:06:43 | 37.2423,-121.7604 (San Jose) | Instagram |

| gg-3.jpg | Nikon D800 | 6114213 | 2016:09:20 19:05:22 | — | Capture One 9 |

(Side plot the map surfaces: gg-2 unmistakably shows the Golden Gate Bridge,

but its geotag points to San Jose ~40 mi away — a genuine geotag-vs-content

contradiction, explored further in the scene-locate case.)

Run


# 0. run from the repo root; overcast auto-loads .env
cd <repo-root>
MEDIA=$PWD/showcase/_media/exif

# 1. a case is just a folder + its .overcast/ store
overcast case init --case showcase/camera-ballistics --name "Camera Ballistics"

# 2. open the line of investigation
overcast target add "same-camera link" \
  --question "Were these shot on the same camera?" \
  --case showcase/camera-ballistics
# -> tgt_e35678

# 3. lift the device fingerprint from every file (ExifTool — free, local)
overcast exif "$MEDIA/gg-1.jpg" --case showcase/camera-ballistics
overcast exif "$MEDIA/gg-2.jpg" --case showcase/camera-ballistics
overcast exif "$MEDIA/gg-3.jpg" --case showcase/camera-ballistics
# -> gg-1: Canon EOS REBEL T5 · serial 222074031107 · EF-S18-55mm · 2016:12:16
#          · sw: Snapseed 2.14 (auto-suggested editing-software lead)
# -> gg-2: Canon EOS REBEL T5 · serial 222074031107 · EF-S18-55mm · 2016:08:12
#          · GPS 37.2423,-121.7604 · sw: Instagram
# -> gg-3: NIKON D800 · serial 6114213 · 50mm f/1.4 · 2016:09:20
#          · sw: Capture One 9 (auto-suggested editing-software lead)

# 4. roll the case up by camera fingerprint; --findings emits a suggested
#    finding for the serial-linked (STRONG) cluster
overcast devices --findings --case showcase/camera-ballistics
# -> 1 cluster: serial:222074031107 · strength "serial" · 2 members (gg-1 + gg-2)
#    total_exif: 3 · linked_media: 2 (the Nikon frame stands alone)

# 5. triage: promote the serial-link lead to evidence, stamped onto the line
overcast finding accept rec_a17e62ec68b2f3ba --target tgt_e35678 \
  --case showcase/camera-ballistics
# (the two editing-software leads stay in the triage queue — visible in the brief)

# 6. narrate the thread + verdict, close the answered line
overcast note "Camera ballistics confirmed: gg-1.jpg ... and gg-2.jpg ... SAME \
physical Canon EOS REBEL T5 body — serial 222074031107 ... four months apart. \
gg-3.jpg is a different camera (Nikon D800, serial 6114213). Serial numbers \
survive editing apps." --tag tldr --confidence high --case showcase/camera-ballistics
overcast note "Serial 222074031107 appears in two frames captured 2016:08:12 and \
2016:12:16 — a durable device link across a four-month gap." \
  --ref rec_a17e62ec68b2f3ba --tag thread:tgt_e35678 --confidence high \
  --case showcase/camera-ballistics
overcast target close tgt_e35678 --as answered \
  --note "Yes — gg-1 and gg-2 share Canon T5 body serial 222074031107 (strong \
device link); gg-3 is a different body (Nikon D800)." \
  --case showcase/camera-ballistics

# 7. export the visual artifacts (all self-contained HTML)
overcast graph --theme csi --no-open --export showcase/camera-ballistics/graph.html --case showcase/camera-ballistics
overcast map   --theme csi --no-open --export showcase/camera-ballistics/map.html   --case showcase/camera-ballistics
overcast brief --theme csi           --export showcase/camera-ballistics/brief.html --case showcase/camera-ballistics

What each artifact shows

(Canon EOS REBEL T5 · serial 222074031107) hub-linking the two Canon photo

records, plus the accepted serial-link finding, the answered line of

investigation, the San Jose place node, and the lifted serial entity. The

Nikon record sits apart — no device edge. The device edge IS the forensic

conclusion. (13 nodes, 11 edges.)

(37.2423, -121.7604 — San Jose, despite the Golden Gate in-frame), the marker

linking back to its exif record with thumbnail and capture time.

same-camera line with its accepted finding, the two editing-software leads

still in the triage queue, and the newest-first record trail. The CC0 photo

thumbnails render inline.

Honesty notes

without a serial would only be WEAK (same model) — devices labels which, and

only serial clusters auto-suggest findings.

leads, not proof of manipulation.

cross-check a strong link with content before concluding.

No API keys used: ExifTool is local, and devices/graph/map/brief are

pure reads over the case store. Zero network egress (no --geocode this run).