I'm 18 and Built an Open-Source Camera That Cryptographically Proves Photos Are Real
<p>In 2026, generating a photorealistic fake image takes seconds. The C2PA standard (Adobe, Microsoft, Google) solves this with Content Credentials — but only on Samsung S25+ and Pixel 10. The other 3 billion Android phones have nothing.</p> <p>I'm 18, from Brazil, and I built <a href="https://github.com/YuriTheCoder/TrueShot" rel="noopener noreferrer">TrueShot</a> to change that.</p> <h2> What happens when you take a photo </h2> <ol> <li> <strong>14 physical sensors</strong> are sampled at the exact instant of the shutter — accelerometer, gyroscope, magnetometer, barometer, light, proximity, gravity, rotation vectors, and more</li> <li> <strong>SHA-256 hash</strong> is computed on the JPEG bytes up to the EOI marker</li> <li> <strong>ECDSA P-256</strong> signs the manifest via hardware-ba
In 2026, generating a photorealistic fake image takes seconds. The C2PA standard (Adobe, Microsoft, Google) solves this with Content Credentials — but only on Samsung S25+ and Pixel 10. The other 3 billion Android phones have nothing.
I'm 18, from Brazil, and I built TrueShot to change that.
What happens when you take a photo
-
14 physical sensors are sampled at the exact instant of the shutter — accelerometer, gyroscope, magnetometer, barometer, light, proximity, gravity, rotation vectors, and more
-
SHA-256 hash is computed on the JPEG bytes up to the EOI marker
-
ECDSA P-256 signs the manifest via hardware-backed Android Keystore (StrongBox preferred, TEE fallback)
-
The signed manifest is appended after the JPEG EOI marker — standard image viewers ignore post-EOI data, so the photo displays normally everywhere
Change one pixel → hash breaks. Forge the signature → mathematically impossible without the device's hardware key.
Anyone can verify in a browser at true-shot.vercel.app/verify. The image never leaves your browser.
The part I think is new
Sensor-based screen recapture detection
Every published method for detecting photos-of-screens uses visual analysis — moiré patterns, CNNs, Vision Transformers. The problem: modern OLED screens don't produce moiré. High-PPI displays don't cause aliasing. Visual methods are losing the arms race.
TrueShot does something different: it cross-correlates physical sensor readings to detect anomalies consistent with screen photography. No image analysis at all.
Scenario Score Flagged?
Normal photo (daylight) 20 No
Normal photo (dark room) 30 No
Screen capture (daylight) 70 Yes
Screen capture (dark room) 85 Yes
10 signals: focus distance, light/ISO mismatch, magnetometer magnitude, gyroscope stability, color gain blue-suppression, scene flicker, proximity, ambient darkness, step counter, and compound signals.
The approach works regardless of screen technology — LCD, OLED, MicroLED — because it never looks at the image content.
Cross-device corroboration without communication
Three reporters photograph the same protest on three different phones. Nobody pairs devices. Nobody sets anything up.
Later, an editor drops all three photos on the web verifier. JavaScript extracts the manifests and compares barometric pressure, timestamps, GPS, and ambient conditions.
Consistent sensors from independent devices = same event. Zero servers. Zero cloud. Everything happens in the browser.
Tech stack
-
Kotlin 2.1, Jetpack Compose, CameraX 1.4
-
Hilt for DI, Room for persistence
-
Android Keystore (ECDSA P-256, SHA-256)
-
Vanilla JS + WebCrypto API for the web verifier
-
14 Gradle modules, ~5,700 lines of Kotlin
-
Zero C++, zero ML models, zero third-party SDKs
What it honestly does NOT do
-
Does NOT detect deepfakes or AI-generated content
-
Does NOT guarantee content truthfulness — a staged scene photographed with TrueShot is authentic as a capture
-
Key attestation chain is included but not validated against Google Root CA yet
-
Screen detection is heuristic, not definitive — it can produce false positives on macro photography in dark rooms
Full threat model: THREAT_MODEL.md
Privacy
-
Zero analytics, zero tracking, zero cloud
-
GPS off by default, opt-in only
-
No Firebase, no Crashlytics, no third-party SDKs
-
Device ID is anonymous (SHA-256 of public key, not IMEI)
-
Web verifier processes everything in-browser
Try it
-
GitHub: github.com/YuriTheCoder/TrueShot
-
Download APK: Latest release
-
Verify a photo: true-shot.vercel.app/verify
MIT licensed. I'm preparing a paper on the sensor correlation approach for IEEE WIFS 2026 (deadline July 15). Feedback welcome, especially if you see attack vectors I'm missing.
DEV Community
https://dev.to/yurithecoder/im-18-and-built-an-open-source-camera-that-cryptographically-proves-photos-are-real-89oSign in to highlight and annotate this article

Conversation starters
Daily AI Digest
Get the top 5 AI stories delivered to your inbox every morning.
More about
modeltransformerreleaseOpenAI’s Fund Raise Shows ChatGPT Parent Worth $852 Billion Ahead of IPO. Who Bought. - Barron's
<a href="https://news.google.com/rss/articles/CBMijANBVV95cUxNZmdRd3k1Q2dabHF3TWoyenBEcnVQcHpoU0JYQ3hzaUpvMF9iVngwcjBpUmxlQWlUdFI2TmpPQTJPZEJvYzVqLUVSV1haNDNqZER4aGx2SF9PVjdDWFBiS2c2bVM5eERZMkdtUFBxTnItN0tLOXBRbFJWUmFjOFUtZkpiallzeVBBY25fcWQyWl9HOXR2Y0oyWjhiRExEbTFXZzdTZDlNNWFFT2ZWSjVwc0s0NGQyVTg2QTZkdkdscnJkblNoR21PeTVaVFk2V2VhZGQ4a3pzajByd3pSOGR4emFCOEZYb1FWMDVTd29wNmV2UEdNbkNqOG9UcFdKTHFacDhqeHJ0NHdTbXRjdmxJRUdROW02bE00WWFHQ0E1RzBnZUI5TXFUTlg4Z3FGaDlLZ0EzQXhza0ZGQTc1R3lHQ1JWbV8wM19Tc1RNNElmUE9xWVlIcDVvRU9mdk05MGdKRGFWUWZBRTJWZ2w0ZlRPaHVweHFYNzNlWTVWZFk0dlFVZmNrLUlEWFEzR2g?oc=5" target="_blank">OpenAI’s Fund Raise Shows ChatGPT Parent Worth $852 Billion Ahead of IPO. Who Bought.</a> <font color="#6f6f6f">Barron's</font>
OpenAI’s Fund Raise Shows ChatGPT Parent Worth $852 Billion Ahead of IPO. Who Bought. - Barron's
<a href="https://news.google.com/rss/articles/CBMijANBVV95cUxPUzRMQk5uVG54ZjNuTVJ3VmNSSjk1N1FTQTgxVlBzNFdrSkhQWUg1TkFLWjF3eldZNExROHBCc1htNUVxNkI3UWs0YUhhUnhlR3ZnMWZDNFYtRnQ1eDcwUzV5U0dNaEhBZE9iTnRockc1OS1JQlp4c19sZFozaExPei1SaWNVWEhEQUZDNjN4RHJHZ05sekUzdm14MnZ6MmdETnFwLVZ5ZHFDX0U3aHJSWmU0RzRUUW5QVmJiUGZYOWdPWDNvZy1aUmkzckhzMk5rb21JV2l1MmZ2NVplbmctNHFWSDhEaWV0OXZFeG82dzhEa19EYnRWMFdpdzhFeTNhVUZxR2hseFpnTV9tQzUwQXoxRTRVaG1pbFlQQUZzWExfbU9yaDVZQkJTZDdoOWxmRGlMV0FHZjU5WHBHSDNzYzFac0RDWFIyRFhUeGFONnR6cWx5N0traW5QdWxBd0VLY3c0VFNZUTlUZTUtbDhNRVpyZGJ0OGdwcWpBWkc3X2Y2LW9fTExvdnZuamg?oc=5" target="_blank">OpenAI’s Fund Raise Shows ChatGPT Parent Worth $852 Billion Ahead of IPO. Who Bought.</a> <font color="#6f6f6f">Barron's</font>
‘That’s a great point!’: Overly agreeable AI models shown to harm people’s judgment - Palo Alto Online
<a href="https://news.google.com/rss/articles/CBMiywFBVV95cUxOa1ZrSUQyY0JEbXEtUDFveWVUMV9SOWxZd05LM1AtOEFkc3d0QlN1X0RuSzd1RGNSM3BCN0pITlpCRUl5UmhWaWpGTXE0Q0ZWcFZqRTA2X1dEcERldk1wZnVWR2hXdGtKUDV0cmxQTVVBNVFDc1FLNXpWM3BYeEI3UE5QQWtvVmhtSmFsV0pqdF9feVhzVHRTbGtuTGNqNjJubGFNWjJ4d2lpUVFtOFA2cm1zYklkQW9vZkRDS2p3blhkaHpZWHItYlIwQQ?oc=5" target="_blank">‘That’s a great point!’: Overly agreeable AI models shown to harm people’s judgment</a> <font color="#6f6f6f">Palo Alto Online</font>
Knowledge Map
Connected Articles — Knowledge Graph
This article is connected to other articles through shared AI topics and tags.
More in Open Source AI

Why AI Agents Need Both Memory and Money
<p>Every major AI agent framework — LangGraph, CrewAI, AutoGen, Semantic Kernel — gives you the same primitives: tool calling, chain-of-thought reasoning, and some form of state management. These are necessary but not sufficient for agents that operate in the real world.</p> <p>Two critical capabilities are missing from every framework: <strong>cognitive memory that behaves like a brain</strong> and <strong>financial agency that lets agents transact</strong>. More importantly, nobody has connected the two. That's what MnemoPay does.</p> <h2> The memory problem nobody talks about </h2> <p>Current agent memory solutions (Mem0, Letta, Zep) treat memory like a database. Store facts, retrieve facts. This works for simple use cases, but it fundamentally misunderstands how useful memory works.</p

Show HN: AgentLens – Chrome DevTools for AI Agents (open-source, self-hosted)
<p>Agents are opaque. AgentLens is Chrome‑DevTools for AI agents — self‑hosted, open‑source. It traces tool calls and visualizes decision trees so you can see why an agent picked a tool. Repo: <a href="https://github.com/tranhoangtu-it/agentlens" rel="noopener noreferrer">https://github.com/tranhoangtu-it/agentlens</a></p> <p>It plugs into LangChain/FastAPI stacks, uses OpenTelemetry spans, and ships a React frontend (Python backend, TypeScript UI). You get per-tool inputs/outputs, timestamps, and branching paths — the raw traces you actually need to debug agents.</p> <p>Practical playbook: emit spans from your agent, sample 100% in dev, 1–5% in prod. Persist traces off your user data store (filter PII). Watch for repeated tool calls, backoff loops, and input drift. AgentLens gives visibil
🥷 StealthHumanizer — A Free Open-Source AI Text Humanizer with 13 Providers and Multi-Pass Ninja Mode
<h2> Why StealthHumanizer? </h2> <p>With the rise of AI-generated content, tools that can humanize text are in high demand. But most solutions are paid, require sign-ups, or limit your usage. I wanted to build something different — a completely free, open-source text humanizer that anyone can use without restrictions.</p> <p><strong>StealthHumanizer</strong> supports 13 text generation providers, 4 rewrite levels, 13 distinct tones, and a multi-pass "ninja mode" for maximum naturalness.</p> <h2> Features </h2> <h3> 🔄 13 AI Providers </h3> <p>StealthHumanizer works with OpenAI, Anthropic, Google, Mistral, Cohere, and many more providers. Switch between them freely — whatever works best for your content.</p> <h3> 📊 4 Rewrite Levels </h3> <p>From light touch-ups to complete rewrites, choose

I Built a Social Post Engine to Escape the Canva-Export-Schedule Loop
<p>As a solo founder running WahResume.com, I was spending way too much time on social media - not on creativity, but on process.<br> Same templates. Same brand assets. Same hashtags. Every post meant opening Canva, exporting, uploading, scheduling… and repeating it the next day.</p> <p>So I built something to fix that.</p> <p>Social Post Engine is a small tool that helps me stay consistent on social media without having to touch Canva or an endless queue of schedulers.</p> <p>Here’s what it does:</p> <p>✅ Seed & review topics in one command — it researches, outlines, and preps your next posts.<br> ✅ Pre-generates branded images from templates (checklists, stat cards, charts, comparisons). It also writes captions in your brand’s voice using AI.<br> ✅ Publishes automatically to LinkedIn

Discussion
Sign in to join the discussion
No comments yet — be the first to share your thoughts!