
AperiSolve v3.7.1
Automatisierte Steganalyse-Plattform, die mit 16 parallelen Analysatoren, Bit-Ebenen-Visualisierung und einem integrierten Wiki für CTF- und forensische Untersuchungen versteckte Daten in Bildern erkennt.
Aperi'Solve
Jetzt ausprobieren: https://www.aperisolve.com
Unterstütze Aperi'Solve:
Aperi'Solve ist eine Open-Source-Webplattform zur Steganalyse, die automatische Analysen von Bildern durchführt, um versteckte Daten mit gängigen Steganographie-Werkzeugen und -Techniken zu erkennen und zu extrahieren.
Hauptfunktionen
- Jede Bitebene (LSB und andere Ebenen) pro Bildkanal (R/G/B/Alpha) visualisieren.
- Farb-Remapping (zufällige Paletten-Neuzuordnungen mit 8 generierten Varianten)
- Führt 16 Analyzer parallel aus und zeigt deren Ausgabe, mit Erfolgs-/Kein-Ergebnis-Abzeichen pro Werkzeug und Ein-Klick-Download extrahierter Dateien:
- binwalk (eingebettete Archive)
- exiftool (Metadaten und Geolokalisierung)
- file (MIME-Typ- und Formaterkennung)
- GraphicsMagick identify (Bildinformationen und Eigenschaften)
- foremost (durch Carving extrahierte Dateien)
- jsteg (JPEG-LSB-Extraktion)
- jpseek / jphide (JPEG-Steganographie-Extraktion, mit Passwort)
- openstego (Extraktion mit Passwort)
- outguess (Extraktion mit Passwort, Tiefenanalyse)
- pcrt (PNG-Prüfung und -Reparatur)
- pngcheck
- steghide (Extraktion mit Passwort)
- strings
- zsteg (LSB-Text-/Datenextraktion)
- In-App-Wiki (
/wiki): ein Steganographie-Handbuch im HackTricks-Stil — eine Triage-Methodik, ein Entscheidungsbaum-Spickzettel, Technikseiten pro Medium (Bild, Audio, Text, Dateien) und ein Leitfaden pro Analyzer, alles als Markdown verfasst. - Internationalisierung: UI verfügbar in Englisch, Französisch, Spanisch, Deutsch,
Russisch, Chinesisch und Portugiesisch unter sprachpräfixierten URLs (
/fr/,/es/, …). - Worker-Queue-Architektur zur Auslagerung schwerer/langsamer Analyzer (Redis + Hintergrund-Worker).
- Inhaltsadressierter Ergebnis-Cache, HTTP-Caching und Ratenbegrenzung pro Endpunkt.
- Ergebnisse werden vorübergehend gespeichert, um sie später anzusehen und herunterzuladen, und anschließend von einem geplanten Job automatisch bereinigt.
Einen Analyzer hinzufügen
Einen Analyzer hinzuzufügen erfordert nur eine Datei: Leite von SubprocessAnalyzer ab, setze ein paar
Klassenattribute (name, has_archive, needs_password, deep_only,
display_order) und installiere das Werkzeug im Dockerfile. Die Worker-Ausführungsliste, die Download-Allowlist und die Frontend-Reihenfolge werden automatisch abgeleitet.
Siehe docs/adding-analyzer.md.
Schnellstart (Docker)
Falls du deine eigene Version von https://www.aperisolve.com/ hosten möchtest.
Erforderlich: Docker + Docker Compose.
git clone https://github.com/Zeecka/AperiSolve.git
cd AperiSolve
cp .env.example .env
docker compose up -d
Rufe dann die URL auf: http://localhost:5000/
Werbung und Analysen sind standardmäßig deaktiviert; jede Integration (CUSTOM_EXTERNAL_SCRIPT, GOOGLE_ADS_TXT, SITE_BASE_URL, Sentry) ist über Umgebungsvariablen aktivierbar, die in .env.example dokumentiert sind. Die App fügt selbst kein Werbe-Markup ein: CUSTOM_EXTERNAL_SCRIPT lädt das AdSense-Skript, und die Platzierung wird Auto-Anzeigen überlassen.
Architektur
Der Stack läuft als Docker-Compose-Dienste:
- web — Flask-App, bereitgestellt von gunicorn (Jinja-Vorlagen + Vanilla-JS-Frontend).
- worker — ein RQ-Worker, der die Analyzer für jede Einreichung ausführt und auf einen Thread pro Werkzeug aufteilt.
- cron — ein RQ-Cron-Scheduler, der die Aufbewahrungsbereinigung außerhalb des Anforderungspfads ausführt.
- initdb — ein Einmal-Dienst, der die Tabellen erstellt und die IHDR-CRC-Wiederherstellungsdatenbank vorab befüllt.
- postgres — speichert Bildmetadaten und Einreichungsstatus.
- redis — RQ-Broker (DB 0) und Speicher für Ratenbegrenzung (DB 1).
- rqdashboard — Queue-Überwachung, gebunden an localhost:9181.
Diese Trennung hält schwere Werkzeuge (binwalk, foremost, zsteg, usw.) isoliert und verhindert, dass der Web-Worker blockiert wird. Identische Einreichungen werden über einen Inhalts-Hash dedupliziert, und abgeleitete Bilder werden mit langlebigen, unveränderlichen HTTP- Headern gecacht, sodass wiederholter Datenverkehr günstig ist.
Dokumentation
- docs/adding-analyzer.md — einen neuen Analyzer hinzufügen.
- docs/deploy.md — der tag-basierte Produktions-Deploy-Ablauf.
- CONTRIBUTING.md — Entwicklungs-Setup, Tests, Wiki-Seiten und Übersetzungen.
Tests
uv sync --extra dev
uv run pytest -q # unit tests (no services needed)
# end-to-end analyzer tests through the running app:
docker compose -f compose.dev.yml up -d
uv run pytest tests/test_webapp_analyzers.py -v
Roadmap
Siehe Issues.
Mitwirken
Siehe CONTRIBUTING.md.
Sicherheit
[!WARNING] Wenn du ein Sicherheitsproblem entdeckst, melde es bitte privat an den Repository-Inhaber, anstatt ein öffentliches Issue zu eröffnen.
Danksagungen
Dank an Spender:
Dank an Mitwirkende:
- Zeecka - (Autor)
- aradhyacp
- Philip Zimmermann
- abneeeees
Dank an die Open-Source-Community: binwalk, exiftool, GraphicsMagick identify, foremost, jsteg, jphide/jpseek, openstego, outguess, pcrt, pngcheck, steghide, strings, zsteg, ...