StripShot
August 2, 2026 · View on GitHub
A tool written in V that uses FFmpeg and native mathematical transformations to remove device, OS, and hardware camera fingerprints, as well as applying specialized binary noise cloaking against automated AI classifiers and scraping models.
Problem
Both screenshots and physical photographs contain hidden, persistent fingerprints that can expose identity or device hardware:
- Subpixel rendering patterns: ClearType (Windows), LCD smoothing (macOS), or FreeType (Linux) leave colored fringes on text edges that identify the operating system.
- Pixel format ordering: BGR vs RGB vs BGRA variations reveal specific OS and graphics frameworks.
- Embedded metadata/ICC Profiles: EXIF, monitor profiles, and display gammas indicate hardware and display ecosystems.
- Camera Sensor Fingerprints (PRNU): Microscopic manufacturing defects on every CCD/CMOS sensor leave a unique, deterministic pattern of high-frequency noise (Photo-Response Non-Uniformity) on every photo. This acts as a physical fingerprint of your camera, persisting even after EXIF metadata is completely stripped.
- Scraping & ML Profiling: Modern AI vision models, classifiers, and scrapers automatically catalog, classify, and track visual content (faces, objects, styles) using contiguous color blocks and standard gradient orientations.
How It Works
The tool applies a multi-stage defensive pipeline:
1. OS & Display Fingerprint Removal (Default Mode)
- Forces pixel formats to RGB24, neutralizing BGR/BGRA/RGB0 differences.
- Normalizes color spaces to BT.709/sRGB and forces a standard 2.2 gamma curve.
- Applies subtle subpixel neutralization (blur sigma 0.4 and unsharp mask) to destroy OS-specific font rasterization fringes.
- Strips all structural metadata, EXIF, and ICC profiles.
2. Camera Sensor Fingerprint (PRNU) Destruction (--camera)
To mitigate camera sensor tracking without visibly degrading image quality, the tool implements a three-pronged anti-forensic pipeline:
- Dynamic Random Cropping: Automatically trims a tiny, random border (8 pixels) with dynamic offsets. This shifts the global coordinate grid of the image, breaking the $1:1$ pixel registration required by forensic correlation algorithms (PCE/NCC matching).
- Microscopic Lens Distortion: Applies a microscopic radial warp (
lenscorrection) that shifts pixels by sub-pixel fractions. It is visually imperceptible to humans but ruins forensic pixel-to-sensor-grid alignments. - Sensor Denoising & Re-noising: Uses
hqdn3dspatial denoising to suppress the physical sensor noise pattern, replacing it with fresh, randomized, uncorrelated noise.
3. Homogeneous Binary Noise Cloaking (--snow)
To block automated AI classification and scraping models while preserving excellent human legibility and fine image details, the tool implements a highly optimized Error-Diffusion Halftoning & Micro-Noise Injection pipeline:
- Human Legibility (Floyd-Steinberg Dithering): Translates continuous gray levels into 1-bit binary dots (either pure black or pure white) by diffusing quantization errors to neighboring pixels. This preserves sharp edges, fine lines, and text with outstanding clarity for human eyes, rendering it as a highly detailed, vintage pointillism sketch.
- 100% Homogeneous Noise Saturated Coverage: Standard dithering leaves solid black and solid white regions untouched. To prevent this, the tool injects a tiny randomized spatial perturbation ( to ) to the luminance channel before diffusion. This guarantees that even the absolute darkest shadows and brightest highlights are completely populated with uniform, homogeneous binary dither dots (snow), leaving no solid color blocks.
- AI Downsampling Blindness: Deep learning vision models typically downsample high-resolution inputs (using strided convolutions or pooling layers). When a 1-bit dithered image is downscaled, the alternating black and white pixels average out into a completely flat, featureless gray block, preventing the model from recognizing any underlying shapes, faces, or objects.
Requirements
- V compiler (https://vlang.io)
- FFmpeg and FFprobe in PATH
Build
v -prod stripshot -o stripshot
Usage
Basic Screenshot Sanitization
Remove metadata and subpixel OS traces:
stripshot -i screenshot.png -o clean.png
Anonymize Camera Hardware Traces (PRNU)
Strip physical sensor fingerprints from a photograph:
stripshot -i photo.jpg -o safe_photo.jpg --camera --noise 3
Apply Homogeneous Binary Noise Cloaking
Convert an image to a highly legible, 1-bit binary representation that defeats AI vision models while keeping text and shapes perfectly readable to humans:
stripshot -i document.png -o safe_document.png --snow
Directory Batch Processing
Process all media files in a directory:
stripshot --batch ./photos/ --camera
Options
-i, --input <file> Input image or photo
-o, --output <file> Output image
--batch <dir> Process all images in directory
--camera ANONYMIZE CAMERA SOURCE: Disrupts sensor fingerprint (PRNU)
--blur <sigma> Subpixel blur sigma (default: 0.4)
--noise <strength> Noise strength 0-10 (default: 2)
--gamma <value> Target gamma value (default: 2.2)
--quality <1-100> JPEG quality (default: 95)
--snow Convert image to pure homogeneous binary noise (snow) legible to humans
--no-blur Skip subpixel neutralization
--no-noise Skip noise injection
--no-strip Keep metadata
--no-color-norm Skip color normalization
--keep-alpha Don't flatten alpha channel
--keep-audio Keep audio stream in videos
--anonymize-audio Anonymize audio stream
--anti-forensics Apply comprehensive anti-forensics to audio
--verbose Show ffmpeg commands
-h, --help Show help
Supported Formats
- Images: PNG, JPEG, WebP, BMP, TIFF.
- Videos: MP4, MKV, MOV, avi, webm, flv (Camera anonymization and snow cloaking options are automatically skipped for video streams).
Output Verification
Metadata Verification
Verify that the output contains no hardware, monitor, or OS tags:
ffprobe -v quiet -print_format json -show_streams -show_format clean.png
Camera Fingerprint (PRNU) Verification
When checking an image against PRNU-matching pipelines, you will observe that the Peak-to-Correlation Energy (PCE) values of --camera processed images fall significantly below standard matching thresholds (typically < 50), rendering camera association attempts unsuccessful.
Subpixel Verification
Zoom into text edges at 400-800% in an image editor. Original screenshots from Windows will show red-green-blue fringe patterns on character edges. After processing with default settings, these fringes are removed.