Retour aux mises à jour
New releaseJul 24, 2026

AperiSolve v3.7.1

Plateforme automatisée de stéganalyse qui détecte les données cachées dans les images à l'aide de 16 analyseurs parallèles, d'une visualisation des couches de bits et d'un wiki intégré pour les CTF et les investigations forensiques.

Partager

Aperi'Solve

Website CI Lint Docker Python Version Ruff uv ty License GitHub Issues GitHub Pull Requests Last Commit Contributors Rawsec's CyberSecurity Inventory

Aperi'Solve screenshot

Essayez maintenant : https://www.aperisolve.com

Soutenez Aperi'Solve :

Sponsor Aperi'Solve on GitHub

Aperi'Solve est une plateforme web open-source de stéganalyse qui effectue une analyse automatisée des images pour détecter et extraire des données cachées à l'aide d'outils et de techniques de stéganographie courants.

Fonctionnalités principales

  • Visualisez chaque couche de bits (LSB et autres couches) par canal d'image (R/G/B/Alpha).
  • Remappage des couleurs (remappages de palette aléatoires avec 8 variantes générées)
  • Exécute 16 analyseurs en parallèle et affiche leur sortie, avec des badges de succès/absence de résultat par outil et un téléchargement en un clic des fichiers extraits :
  • Wiki intégré (/wiki) : un manuel de stéganographie de style HackTricks — une méthodologie de triage, une antisèche sous forme d'arbre de décision, des pages de techniques par support (image, audio, texte, fichiers), et un guide pour chaque analyseur, le tout rédigé en Markdown.
  • Internationalisation : interface disponible en anglais, français, espagnol, allemand, russe, chinois et portugais sous des URL préfixées par la langue (/fr/, /es/, …).
  • Architecture de file d'attente de workers pour décharger les analyseurs lourds/lents (Redis + workers en arrière-plan).
  • Cache de résultats adressé par contenu, cache HTTP et limitation de débit par point de terminaison.
  • Les résultats sont stockés temporairement pour être consultés et téléchargés plus tard, puis nettoyés automatiquement par une tâche planifiée.

Ajouter un analyseur

Ajouter un analyseur se résume à un seul fichier : sous-classez SubprocessAnalyzer, définissez quelques attributs de classe (name, has_archive, needs_password, deep_only, display_order) et installez l'outil dans le Dockerfile. La liste d'exécution du worker, la liste blanche de téléchargement et l'ordre dans le frontend sont tous dérivés automatiquement. Voir docs/adding-analyzer.md.

Démarrage rapide (Docker)

Si vous souhaitez héberger votre propre version de https://www.aperisolve.com/.

Prérequis : Docker + Docker Compose.

git clone https://github.com/Zeecka/AperiSolve.git
cd AperiSolve
cp .env.example .env
docker compose up -d

Puis ouvrez l'URL : http://localhost:5000/

Les publicités et l'analytique sont désactivées par défaut ; chaque intégration (CUSTOM_EXTERNAL_SCRIPT, GOOGLE_ADS_TXT, SITE_BASE_URL, Sentry) est facultative (opt-in) via des variables d'environnement documentées dans .env.example. L'application n'injecte jamais elle-même de balisage publicitaire : CUSTOM_EXTERNAL_SCRIPT charge le script AdSense et le placement est laissé aux annonces Auto.

Architecture

La pile s'exécute sous forme de services Docker Compose :

  • web — application Flask servie par gunicorn (modèles Jinja + frontend JavaScript vanilla).
  • worker — un worker RQ qui exécute les analyseurs pour chaque soumission, en répartissant la charge sur un thread par outil.
  • cron — un planificateur cron RQ qui exécute le nettoyage de rétention hors du chemin des requêtes.
  • initdb — un service à exécution unique qui crée les tables et pré-remplit la base de récupération des CRC IHDR.
  • postgres — stocke les métadonnées des images et l'état des soumissions.
  • redis — broker RQ (DB 0) et stockage du limiteur de débit (DB 1).
  • rqdashboard — surveillance des files d'attente, lié à localhost:9181.

Cette séparation maintient les outils lourds (binwalk, foremost, zsteg, etc.) isolés et évite de bloquer le worker web. Les soumissions identiques sont dédupliquées par un hash de contenu, et les images dérivées sont mises en cache avec des en-têtes HTTP immuables à longue durée de vie, ce qui rend le trafic répété peu coûteux.

Documentation

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

Feuille de route

Voir Issues.

Contribuer

Voir CONTRIBUTING.md.

Sécurité

[!WARNING] Si vous découvrez un problème de sécurité, veuillez le signaler en privé au propriétaire du dépôt plutôt que d'ouvrir une issue publique.

Crédits

Merci aux donateurs :

Merci aux contributeurs :

Merci à la communauté open-source : binwalk, exiftool, GraphicsMagick identify, foremost, jsteg, jphide/jpseek, openstego, outguess, pcrt, pngcheck, steghide, strings, zsteg, ...

Catégories