Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
sherloq — Une suite d'outils open-source pour l'investigation numérique d'images. | Kitploit
Outils/GitHubGitHub/guidobartoli/sherloq
Analyse ForensiqueStéganographieCriminalistique NumériqueCryptographieApprentissage AutomatiqueArticles et RechercheApprentissage et Éducation
GitHubguidobartoli/sherloq

sherloq

Une suite d'outils open-source pour l'investigation numérique d'images.

Voir le dépôt
3.2k305il y a 1 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Sherloq
Une boîte à outils open source d'analyse forensique d'images numériques

Introduction

"L'analyse d'image forensique est l'application de la science de l'image et de l'expertise du domaine pour interpréter le contenu d'une image et/ou l'image elle-même dans des affaires juridiques. Les principales sous-disciplines de l'analyse d'image forensique avec des applications pour les forces de l'ordre comprennent : la photogrammétrie, la comparaison photographique, l'analyse de contenu et l'authentification d'image." (Scientific Working Group on Imaging Technologies)

Sherloq est un projet de recherche personnel sur l'implémentation d'un environnement entièrement intégré pour l'analyse forensique d'images numériques. Il n'est pas conçu comme un outil automatique qui décide si une image est falsifiée ou non (cet outil n'existera probablement jamais...), mais comme un compagnon pour expérimenter divers algorithmes trouvés dans les articles de recherche et ateliers les plus récents.

Alors que de nombreuses solutions commerciales ont des prix de vente élevés et sont souvent réservées uniquement aux forces de l'ordre et aux agences gouvernementales, cette boîte à outils vise à être à la fois un cadre extensible et un point de départ pour toute personne intéressée par la réalisation d'expériences dans cette application particulière du traitement numérique du signal.

Je crois fermement que la sécurité par l'obscurité est la mauvaise façon d'offrir un quelconque service forensique (c'est-à-dire "En utilisant ce logiciel propriétaire, je vous garantis que cette photo est vierge... et vous devez me faire confiance !"). Suivant la philosophie open source, tout le monde devrait pouvoir essayer diverses techniques par lui-même, acquérir des connaissances et les partager avec la communauté... encore mieux s'ils contribuent avec des améliorations de code ! :)

  • Historique
  • Fonctionnalités
  • Captures d'écran
  • Installation
  • Structure du projet
  • Mises à jour
  • Bibliographie

Historique

La première version a été écrite en 2015 en C++11 pour construire un utilitaire en ligne de commande avec de nombreuses options, mais elle s'est vite avérée trop lourde et peu interactive. Cette version pouvait être compilée avec CMake après avoir installé les bibliothèques OpenCV, Boost et AlgLib. Ce premier prototype offrait environ 80 % des fonctionnalités prévues (voir ci-dessous pour la liste complète).

Tout en incluant également des algorithmes novateurs, la version 2017 a principalement ajouté une interface graphique multi-fenêtres basée sur Qt pour offrir une meilleure expérience utilisateur. Plusieurs analyses pouvaient être affichées à l'écran et un visionneur rapide avec zoom/défilement a été implémenté pour une navigation plus facile dans l'image. Ce projet pouvait être compilé avec Qt Creator avec Qt 5 et OpenCV 3 et couvrait environ 70 % des fonctionnalités prévues.

Avance rapide jusqu'en 2020, lorsque j'ai décidé de tout porter en Python (PySide2 + Matplotlib + OpenCV) pour un développement et un déploiement plus faciles. Bien que cette itération ne fasse que commencer et que je n'aie pas encore porté tout le code précédent sur la nouvelle plateforme, je pense que ce sera la forme "finale" du projet (tant que quelqu'un ne se porte pas volontaire pour développer une belle application web !).

Je suis heureux de partager mon code et d'entrer en contact avec toute personne intéressée pour l'améliorer ou le tester, mais veuillez garder à l'esprit que ce dépôt n'est pas destiné à distribuer un produit final, mon objectif est simplement de suivre publiquement le développement d'un outil pédagogique sans prétention, alors attendez-vous à des bugs, du code non poli et des fonctionnalités manquantes ! ;)

Fonctionnalités

Cette liste contient les fonctions que la boîte à outils fournira (espérons-le) une fois le stade bêta atteint (REMARQUE : les fonctions affichées en italique dans le programme ne sont pas encore implémentées !).

Interface

  • Interface graphique moderne basée sur Qt avec gestion de plusieurs fenêtres d'outils
  • Prise en charge de nombreux formats (JPEG, PNG, TIFF, BMP, WebP, PGM, PFM, GIF)
  • Visionneur d'images très réactif avec panoramique et zoom en temps réel
  • De nombreux algorithmes de pointe à essayer de manière interactive
  • Exportation des résultats visuels et textuels de l'analyse
  • Aide en ligne complète avec explications et tutoriels

Outils

Général

  • Image originale : afficher l'image de référence non modifiée pour inspection visuelle
  • Empreinte de fichier : récupérer les informations physiques du fichier, les hachages cryptographiques et perceptuels
  • Éditeur hexadécimal : ouvrir un éditeur hexadécimal externe pour afficher et éditer les octets bruts
  • Recherche similaire : parcourir les services de recherche en ligne pour trouver des images visuellement similaires

Métadonnées

  • Structure d'en-tête : extraire la structure de l'en-tête du fichier et afficher une vue interactive
  • Vidage EXIF complet : parcourir les métadonnées du fichier et rassembler toutes les informations disponibles
  • Analyse de la vignette : extraire la vignette intégrée facultative et la comparer avec l'originale
  • Données de géolocalisation : récupérer les données de géolocalisation facultatives et les afficher sur une carte du monde

Inspection

  • Loupe améliorante : loupe avec améliorations pour mieux identifier les falsifications
  • Histogramme de canal : afficher les histogrammes interactifs des canaux de couleur individuels ou RVB composite
  • Ajustements globaux : appliquer des ajustements d'image standard (luminosité, teinte, saturation, ...)
  • Comparaison de référence : ouvrir une double vue synchronisée pour la comparaison avec une autre image

Détail

  • Gradient de luminance : analyser les variations de luminosité horizontales/verticales sur l'image
  • Filtre de bord d'écho : utiliser des filtres dérivés pour révéler les régions floues artificiellement
  • Seuil d'ondelettes : reconstruire l'image avec différents seuils de coefficients d'ondelettes
  • Séparation de fréquence : diviser la luminance de l'image en composantes haute et basse fréquence

Couleurs

  • Graphiques RVB/TSV : afficher des graphiques interactifs 2D et 3D des valeurs de pixels RVB et TSV
  • Conversion d'espace : convertir les canaux RVB en espaces TSV/YCbCr/Lab/Luv/CMJN/Gris
  • Projection ACP : utiliser l'ACP couleur pour projeter les pixels sur les composantes les plus saillantes
  • Statistiques de pixels : calculer les valeurs RVB minimales/maximales/moyennes pour chaque pixel

Bruit

  • Séparation du bruit : estimer et extraire différents types de composantes de bruit d'image
  • Écart min/max : mettre en évidence les pixels s'écartant des statistiques min/max basées sur des blocs
  • Valeurs des plans de bits : afficher les plans de bits individuels pour trouver des motifs de bruit incohérents
  • Blocage par ondelettes : afficher les niveaux de bruit moyens dans une image pour trouver des incohérences de bruit
  • Identification PRNU : exploiter le bruit de motif de capteur introduit par différents appareils photo

JPEG

  • Estimation de qualité : extraire les tables de quantification et estimer la dernière qualité JPEG enregistrée
  • Analyse de niveau d'erreur : afficher la différence au niveau du pixel par rapport à des niveaux de compression fixes
  • Compression multiple : utiliser un modèle d'apprentissage automatique pour détecter une compression multiple
  • Cartes fantômes JPEG : mettre en évidence les traces de différents niveaux de compression dans les images de différence

Falsification

  • Amélioration du contraste : analyser la distribution des couleurs pour détecter les améliorations de contraste
  • Falsification copier-coller : utiliser des descripteurs de caractéristiques invariants pour la détection de zones clonées
  • Assemblage composite : exploiter les statistiques DCT pour la détection automatique des zones d'assemblage
  • Rééchantillonnage d'image : estimer l'interpolation de pixels 2D pour détecter des traces de rééchantillonnage

Divers

  • Filtrage médian : détecter les traces de traitement laissées par le filtrage médian non linéaire
  • Carte d'illuminant : estimer la direction de la lumière locale de la scène sur des surfaces 3D estimées
  • Pixels morts/chauds : détecter et corriger les pixels morts/chauds causés par des imperfections du capteur
  • Décodeur de stéréogramme : décoder les images 3D dissimulées dans les autostéréogrammes à vision croisée

Captures d'écran

Général
Général : Image originale, Éditeur hexadécimal, Empreinte de fichier, Recherche similaire

Métadonnées
Métadonnées : Vidage EXIF complet, Structure d'en-tête

Inspection
Inspection : Loupe améliorante, Histogramme de canal, Comparaison de référence

Détail
Détail : Gradient de luminance, Filtre de bord d'écho, Seuil d'ondelettes, Séparation de fréquence

Couleurs
Couleurs : Graphiques RVB/TSV, Conversion d'espace, Projection ACP, Statistiques de pixels

Bruit
Bruit : Séparation du signal, Écart min/max, Valeurs des plans de bits

JPEG
JPEG : Estimation de qualité, Analyse de niveau d'erreur

Falsification
Falsification : Amélioration du contraste, Falsification copier-coller, Assemblage composite, Filtrage médian

Installation

[1/4] Télécharger le code source

Clonez le dépôt actuel dans un dossier local et placez-vous dans ce dossier.

[2/4] Créer un environnement virtuel

Sherloq utilise Python 3.11. La configuration recommandée utilise uv car il offre le même flux de travail sur Linux, macOS et Windows, peut installer Python si nécessaire et conserve l'environnement du projet dans le dossier local .venv.

Installez uv en suivant le guide d'installation officiel, puis créez l'environnement depuis le dossier racine de Sherloq :

root@kitploit:~
$ uv venv --python 3.11

Le dépôt inclut également un fichier .python-version, de sorte que les futures commandes uv utiliseront Python 3.11 par défaut.

[3/4] Installer les dépendances

root@kitploit:~
$ uv pip install -r gui/requirements.txt

Certains outils expérimentaux basés sur l'IA nécessitent des paquets supplémentaires. Installez-les uniquement si vous prévoyez d'utiliser ces outils :

root@kitploit:~
$ uv pip install -r gui/requirements_ai_solutions.txt

[4/4] Lancer le programme

Sherloq peut être lancé depuis la racine du dépôt. Le package d'application résout les icônes, les modèles et les outils fournis via des chemins de projet centralisés.

Linux/macOS

root@kitploit:~
$ source .venv/bin/activate
$ python -m gui.sherloq_app

Windows PowerShell

root@kitploit:~
> .venv\Scripts\Activate.ps1
> python -m gui.sherloq_app

Vous pouvez également utiliser le lanceur de compatibilité situé à la racine du dépôt :

root@kitploit:~
$ python sherloq.py

NOTE pour les utilisateurs Linux : si cette erreur s'affiche :

root@kitploit:~
qt.qpa.plugin: From 6.5.0, xcb-cursor0 or libxcb-cursor0 is needed to load the Qt xcb platform plugin.
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Exécutez cette commande dans le terminal : sudo apt install -y libxcb-cursor-dev

Structure du projet

L'application Python Qt réside désormais dans le package importable gui/sherloq_app :

  • main.py : point d'entrée de l'application Qt et fenêtre principale.
  • core/ : assistants de traitement d'image partagés, comme les utilitaires JPEG et le chargement de fichiers.
  • ui/ : widgets Qt réutilisables, visionneuses, tableaux et l'arborescence d'outils.
  • tools/ : widgets d'analyse groupés par catégorie de boîte à outils (general, metadata, inspection, detail, colors, noise, jpeg, tampering, various).
  • paths.py : accès centralisé aux icônes, modèles et assistants natifs fournis, de sorte que le code ne dépende plus du lancement depuis .

Les gros actifs fournis et les composants de recherche tiers restent sous gui/icons, gui/models, gui/noiseprint, gui/pyexiftool, gui/butteraugli, gui/ssimulacra et le gui/TruFor_main facultatif.

Voir docs/project-structure.md pour une carte orientée contributeur.

Mises à jour

Lorsqu'une nouvelle version est publiée, mettez à jour la copie de travail locale avec Git ou en téléchargeant la dernière source, puis rafraîchissez l'environnement depuis le dossier racine de Sherloq :

root@kitploit:~
$ uv pip install --upgrade -r gui/requirements.txt

Si vous avez installé les dépendances AI facultatives, rafraîchissez-les également :

root@kitploit:~
$ uv pip install --upgrade -r gui/requirements_ai_solutions.txt

Ressources recommandées pour commencer

  • Article avec des exemples pratiques et une analyse réfléchie des techniques qui ont depuis été implémentées dans Sherloq : "A Picture's Worth: Digital Image Analysis and Forensics" (Neal Krawetz) [article]
  • Thèse avec des exemples pratiques et une analyse réfléchie de l'utilisation des outils "JPEG Ghosts", "Image Resampling" et "Noise Wavelet Blocking" implémentés dans Sherloq. Ce travail offre également des perspectives sur l'utilisation et la fiabilité des approches basées sur l'IA en analyse forensique d'images numériques. (UHstudent) [article]

Références pour les algorithmes implémentés dans Sherloq

  • Rééchantillonnage d'image : "Exposing Digital Forgeries by Detecting Traces of Re-sampling" (Alin C. Popescu and Hany Farid) [article]
  • JPEG Ghosts : "Exposing Digital Forgeries from JPEG Ghosts" (H. Farid) [article]
  • Blocage par ondelettes du bruit : "Using noise inconsistencies for blind image forensics" (Babak Mahdian and Stanislav Saic) [article]

Bibliographie

  • "Noiseprint: a CNN-based camera model fingerprint" (Davide Cozzolino, Luisa Verdoliva) [site web]
  • "Two Improved Forensic Methods of Detecting Contrast Enhancement in Digital Images" (Xufeng Lin, Xingjie Wei and Chang-Tsun Li) [article]
Télécharger l’outil
gui