c2pa-scanner
Erkennung CLI Installation GitHub
Open Source TUI Tool · v0.1.0

c2pa-Scanner

Prüft Website-Sitemaps auf KI-generierte Bilder anhand der C2PA- und EXIF/XMP-Herkunft — eine Hilfe für die KI-Kennzeichnung nach EU AI Act Art. 50, direkt im Terminal.

GitHub Repository Installation
Wofür dieses Tool gedacht ist — und wofür nicht. Es prüft Deine eigenen Bilder und Seiten auf die KI-Kennzeichnung nach dem EU AI Act und macht sie rechtssicher — nicht mehr und nicht weniger. Es ist ausdrücklich NICHT dazu gedacht, fremde Seiten zu durchleuchten oder Abmahnungen zu füttern. Ein C2PA-Treffer ist ein Indiz, kein Rechtsgutachten.
Erkennung

Wie es KI-Bilder findet

Mehrstufig und bewusst auf wenige Falsch-Positive ausgelegt.

🔏

C2PA-Manifest

Primärsignal: die offizielle c2pa-Lib liest das signierte Manifest; die digitalSourceType-Assertion entscheidet das Verdict (trainedAlgorithmicMedia = KI-generiert, compositeWithTrainedAlgorithmicMedia = KI-bearbeitet).

🧬

XMP / EXIF

Denselben IPTC-Marker liest das Tool auch aus dem XMP, wenn kein gültiges C2PA vorhanden ist — so werden Bilder erkannt, die ihre Signatur beim Verkleinern verloren, das XMP aber behalten haben.

🏷️

Generator-Tool

Fehlt jeder digitalSourceType, wird der Software- / CreatorTool-Tag gegen eine kuratierte Liste eindeutiger Generativ-KI-Tools geprüft (Midjourney, DALL-E, Stable Diffusion, Firefly …). Mehrdeutige Editoren wie Photoshop oder GIMP zählen bewusst NICHT.

🕸️

Seiten-Crawl & Shadow-DOM

Aus einer Sitemap werden alle Seiten geladen und die Bild-URLs per Regex über das rohe HTML extrahiert — das findet auch Bilder in Web-Component-Attributen und declarative Shadow-DOM, nicht nur klassische <img src>.

🧭

Sitemap-Auto-Discovery

Fehlt eine direkte Sitemap-URL, wird sie automatisch gesucht (robots.txt, dann übliche Standardpfade). Vollständigere Sitemaps liefert das Schwester-Tool Sitemap-Tracker.

🎭

Browser-Rendering (optional)

Zuschaltbar: jede Seite wird zusätzlich in einem headless Chromium (Playwright) gerendert, um auch erst per JavaScript ins (Shadow-)DOM geladene Bilder zu finden — als Ergänzung zur Regex-Extraktion (Union).

🖼️

Live-Vorschau

Rechts neben der Trefferliste eine Bildvorschau (Kitty-Grafik/Sixel mit Half-Block-Fallback), plus klickbarer Link zur Fundseite und ein Dialog mit dem rohen C2PA-Manifest.

📸

Seiten-Vorschau

Optional: unter dem Bild ein Screenshot der gerenderten Fundseite, zum Bild gescrollt - so prüfst Du ohne Absprung, ob das KI-Label auf/am Bild dargestellt wird. Eigener Playwright-Sidecar mit Cache und Cookie-Consent-Handling.

📋

Export

Rechtsklick-Kontextmenü auf der Tabelle: Export als JSON, JIRA-Tabelle oder Klartext — in die Zwischenablage oder als Datei. Filter auf „Nur KI-Bilder“.

🧪

Testbild-Signierung

Erzeugt ein echtes, C2PA-signiertes Testbild (KI-generiert oder KI-bearbeitet) als Positiv-Testfall — zum Prüfen der eigenen Pipeline.

Grenzen: Bilder ganz ohne Herkunftssignal (kein C2PA, kein XMP/EXIF) sind nicht als KI erkennbar. Metadaten lassen sich entfernen (Screenshot, erneutes Speichern, viele Plattformen strippen sie beim Upload). Ein Treffer ist ein belastbares Indiz für KI; das Fehlen ist kein Beweis dagegen — das Tool sieht nur, was die signierende Software eingetragen hat.

Abgrenzung

Andere Erkennungsmethoden — und warum nicht implementiert

Vollständigkeitshalber: die Alternativen, die es gibt, aber bewusst NICHT eingebaut sind.

💧

Unsichtbare Wasserzeichen

Google SynthID, Meta, Amazon Titan: robust gegen Bearbeitung, aber jedes Verfahren braucht den Detektor seines Anbieters — kein offener, universeller Reader. SynthID ist nur über Googles Portal prüfbar. Grund: nicht integrierbar.

🤖

ML-Klassifikatoren

„Ist das KI?“ (Hive, Sensity, Illuminarty): generatorübergreifend und nach Kompression/Verkleinern unzuverlässig, veralten schnell, adversarial fragil. Grund: für eine Kennzeichnungs-Entscheidung nicht verteidigbar.

🔬

Forensik / Statistik

Frequenzspektrum, Rausch-Residuen, Diffusions-Fingerprints: Forschungsgrad, kein fertiges Werkzeug, gleiche Zuverlässigkeits-Vorbehalte wie ML-Klassifikatoren. Grund: Aufwand/Nutzen passt nicht.

🧩

Fingerprint / Hash-Abgleich

Gegen eine Registry bekannter KI-Bilder: funktioniert nur, wenn das Bild dort registriert ist — keine allgemeine Lösung. Grund: zu geringe Abdeckung.

Die Leitlinie: lieber wenige, belastbare Signale (Provenienz) als viele unsichere — passend zum Zweck, eine rechtssichere KI-Kennzeichnung nach EU AI Act Art. 50 zu unterstützen.

Tech Stack

Gebaut mit

Die Technologien hinter dem Projekt.

Python 3.12
Textual
c2pa-python
Playwright
httpx
Pillow
CLI

Befehle

Ohne Befehl startet die grafische TUI.

BefehlBeschreibungDefault
c2pa-scannerGrafische TUI starten
tui [sitemap]TUI mit optionaler Start-Sitemap
scan <sitemap>Sitemap crawlen und Bilder prüfen (URL, .xml oder Domain)
scan --renderSeiten mit Playwright rendern (JS-/Shadow-DOM-Bilder)aus
make-testimage <out>Signiertes C2PA-Testbild erzeugen
make-testimage --editedKI-bearbeitet statt KI-generiertaus
Installation

Schnellstart

Fertige Binaries pro Plattform oder aus dem Quellcode.

Fertige Binaries

github.com/michaelblaess/c2pa-scanner/releases

Aus dem Quellcode (uv)

git clone https://github.com/michaelblaess/c2pa-scanner && cd c2pa-scanner && ./bootstrap.sh
Windows
Linux
macOS

Rechtsgrundlage: EU AI Act (VO 2024/1689), Artikel 50 — gültig ab 2. August 2026. Zum Gesetzestext.