Epistemic media forensics toolkit - structured uncertainty for courts
Project description
Wu - Epistemic Media Forensics Toolkit
Detects manipulated media with structured uncertainty output. Hopefully it will be suitable for court admissibility (Daubert standard).
Named after Chien-Shiung Wu (1912-1997), who disproved parity conservation and found asymmetries everyone assumed didn't exist.
Installation
pip install wu-forensics
Quick Start
# Analyze a photo
wu analyze suspicious_photo.jpg
# JSON output
wu analyze photo.jpg --json
# Batch analysis
wu batch *.jpg --output reports/
Python API
from wu import WuAnalyzer
analyzer = WuAnalyzer()
result = analyzer.analyze("photo.jpg")
print(result.overall) # OverallAssessment.NO_ANOMALIES
print(result.to_json())
What Wu Detects (Phase 0)
Phase 0 focuses on metadata-only analysis with zero ML dependencies:
- Device impossibilities: "iPhone 6 claiming 4K resolution" is physically impossible
- Editing software signatures: Adobe Photoshop, FFmpeg, etc.
- AI generation signatures: DALL-E, Midjourney, Stable Diffusion, Sora, etc.
- Timestamp inconsistencies: Future dates, modification before capture
- Stripped metadata: Intentionally removed EXIF data
Epistemic States
Unlike binary classifiers, Wu reports structured uncertainty:
| State | Meaning |
|---|---|
CONSISTENT |
No anomalies detected (not proof of authenticity) |
INCONSISTENT |
Clear contradictions found |
SUSPICIOUS |
Anomalies that warrant investigation |
UNCERTAIN |
Insufficient data for analysis |
Court Admissibility
Wu is designed with the Daubert standard in mind:
- Testable methodology: Every finding is reproducible
- Known error rates: Confidence levels are explicit
- Peer review: Academic citations throughout
- General acceptance: Based on EXIF standards (JEITA CP-3451C)
References
- Wu, C.S. et al. (1957). Experimental Test of Parity Conservation in Beta Decay. Physical Review, 105(4), 1413-1415.
- Farid, H. (2016). Photo Forensics. MIT Press.
- JEITA CP-3451C (Exif 2.32 specification)
- Daubert v. Merrell Dow Pharmaceuticals, 509 U.S. 579 (1993)
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wu_forensics-1.0.1.tar.gz.
File metadata
- Download URL: wu_forensics-1.0.1.tar.gz
- Upload date:
- Size: 170.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c4d4e85d6a774b5aa14c2a55766911d517abb9f56145815e7fcffee18cba0327
|
|
| MD5 |
e2b1e3812b1fe1c2bc4ced546bebffb4
|
|
| BLAKE2b-256 |
1f0a580ab4fa7e8b803f37a7e7cd8cecf7947b7339effa44180b40ce874e1493
|
File details
Details for the file wu_forensics-1.0.1-py3-none-any.whl.
File metadata
- Download URL: wu_forensics-1.0.1-py3-none-any.whl
- Upload date:
- Size: 127.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e2fca572dbed5d7a2b7de0561fbaba741a3d66dd7acd5d90f114055f30fea13
|
|
| MD5 |
5f69dce2bb75e3256e57c67394947a9e
|
|
| BLAKE2b-256 |
5f994dbbee7e6adff2bfa9d2f84aca37263c38ae3beac5d469873ab9e9603909
|