
Finden Sie Anmeldedaten in Screenshots, speichern Sie sie in Ihrem Secret Manager und schwärzen Sie sie unwiderruflich aus dem Bild — lokal, offline, OCR-basiert.
Finde Anmeldedaten in Screenshots, extrahiere sie in einen Secret Manager und entferne sie irreversibel aus den Bildern — damit Geheimnisse nicht in deinen Notizen, Screenshots und ~/Desktop verrotten.
Lokal. Offline. Leise. Standardmäßig kein Netzwerk, keine Telemetrie.
screenscrub verbindet zwei bestehende Werkzeugkategorien: GUI-Redakteure (Xnapper, Shhshot, macshot) verwischen PII von Hand, können aber ein Geheimnis nicht von einer Adresse unterscheiden oder erfassen, was sie verbergen; Secret-Scanner (gitleaks, TruffleHog) finden echte Anmeldedaten, aber nur in Text, nie in einer PNG. screenscrub bringt gitleaks-würdige Erkennung — plus ein Red-Team-Paket und Entropieanalyse — zu Pixeln, kopflos: es erfasst jedes Geheimnis in deinem Manager, entfernt das Bild irreversibel und führt eine erneute OCR des Ergebnisses durch, um zu beweisen, dass das Geheimnis weg ist.
Ein Sicherheitsnetz, keine Garantie — screenscrub behauptet nie, dass ein Bild „garantiert sauber“ ist; OCR und Erkennung übersehen beide Dinge, also überprüfe die Ergebnisse immer selbst. Lies dies, bevor du dich darauf verlässt.
screenscrub scan ~/Screenshots # Trockenlauf: erkennen + melden, nichts schreiben
screenscrub clean ~/Screenshots --out ~/clean \ # extrahieren, schwärzen, verifizieren, quarantänisieren
--sink file://./secrets.age --yes
screenscrub verify ~/clean # beweisen, dass ein Ordner sauber ist (exit≠0 falls nicht)
screenscrub clean --keep-originals ./tmp
Cleaning 7 image(s) in ./tmp (7 worker(s))…
[1/7] tmp/ssh.jpg — 6 region(s) → tmp/ssh.redacted.jpg ✓ verified
[2/7] tmp/key.jpg — 13 region(s) → tmp/key.redacted.jpg ✓ verified
[3/7] tmp/test2.jpg — 12 region(s) → tmp/test2.redacted.jpg ✓ verified
[4/7] tmp/test5.jpg — 13 region(s) → tmp/test5.redacted.jpg ✓ verified
[5/7] tmp/test3.jpg — error: verification failed: 4 secret region(s) still detectable in tmp/test3.redacted.jpg; original preserved
[6/7] tmp/test4.jpg — error: verification failed: 9 secret region(s) still detectable in tmp/test4.redacted.jpg; original preserved
[7/7] tmp/test6.jpg — error: verification failed: 7 secret region(s) still detectable in tmp/test6.redacted.jpg; original preserved
7/7 file(s) flagged, 382 region(s) total, 3 file(s) errored/unverified.
By kind:
high-entropy 343
keyword-secret 15
db-connection-uri 10
github-pat 6
unix-crypt-hash 6
aws-access-key 1
stripe-key 1
Needs manual attention (3):
tmp/test3.jpg — error: verification failed: 4 secret region(s) still detectable in tmp/test3.redacted.jpg; original preserved
tmp/test4.jpg — error: verification failed: 9 secret region(s) still detectable in tmp/test4.redacted.jpg; original preserved
tmp/test6.jpg — error: verification failed: 7 secret region(s) still detectable in tmp/test6.redacted.jpg; original preserved
| Vorher — Geheimniswerte sichtbar | Nach clean — irreversibel geschwärzt |
![]() |
![]() |
Derselbe Screenshot vor und nach clean: jeder Geheimniswert wird in Pixel dekodiert, eingekastet und in ein neues Bild (irreversibel) neu kodiert — Labels und Struktur bleiben lesbar.
Erfordert die tesseract-OCR-Binärdatei im PATH:
brew install tesseractwinget install UB-Mannheim.TesseractOCR (oder der UB-Mannheim-Installer)apt-get install tesseract-ocrDann bauen:
go build -o screenscrub ./cmd/screenscrub
Cross-Kompilierung nach macOS (arm64/amd64) und Windows (amd64) — es greift auf tesseract zu, anstatt cgo zu verwenden. Nur auf macOS getestet.
scan <Verzeichnis|Datei> — TrockenlaufErkennt und meldet; schreibt nichts.
screenscrub scan ~/Screenshots --ignore 'node_modules/**' --ignore '*.thumb.png'
screenscrub scan shot.png --json # maschinenlesbarer Bericht
screenscrub scan ~/Screenshots --preview ~/review # überprüfen, was clean schwärzen würde
--preview <Verzeichnis> schreibt eine nicht-destruktive Kopie jedes markierten Bildes, bei der jeder erkannte Bereich umrandet (nicht ausgefüllt) ist, damit du vor dem Ausführen bestätigen kannst, was clean schwärzen würde. ⚠️ Diese Kopien enthalten noch die Geheimnisse — das Verzeichnis wird mit 0700 erstellt und darf nicht geteilt werden.
Der Bericht endet mit einer Zusammenfassung: einer Aufschlüsselung nach Art und einer expliziten Liste „Benötigt manuelle Aufmerksamkeit“ — Dateien, die fehlgeschlagen sind, die Verifikation nicht bestanden haben oder keinen OCR-Text bei einem vermeintlichen Screenshot erzeugt haben (ein stiller OCR-Fehler wird als sauber gelesen, also wird er angezeigt, statt ihm zu vertrauen).
scan --fail-on-findings beendet sich mit einem Fehler, wenn etwas erkannt wird — ein Pre-Commit/CI-Gate.
clean <Verzeichnis|Datei> — extrahieren, schwärzen, quarantänisierenSCREENSCRUB_PASSPHRASE=… screenscrub clean ~/Screenshots \
--out ~/Screenshots/clean \
--sink file://./secrets.age \
--yes
Für jedes Bild mit Funden führt clean Folgendes aus:
<Name>.redacted.png nach --out (oder neben die Quelle),<out>/quarantine/, verschlüsselt mit age.Geheimnisse gehen an den Sink, den du mit --sink angibst: age-Datei (Standard), 1Password (op://), KeePassXC (keepassxc://), macOS-Schlüsselbund (keychain://) oder HashiCorp Vault (vault://) — oder hardwaregestützte age-Empfänger (YubiKey, Touch ID). Siehe Secret Sinks.
Flags: