
Outil de minage avancé pour le contenu sur Github
+---------------------------------------------------+
| LES DÉVELOPPEURS DÉCLINENT TOUTE RESPONSABILITÉ |
| ET NE SONT PAS RESPONSABLES DE TOUT USAGE ABUSIF |
| OU DOMMAGE CAUSÉ PAR CE PROGRAMME |
+---------------------------------------------------+
GitMiner v3 est un outil modulaire conçu pour découvrir des informations sensibles dans les dépôts GitHub publics. Il utilise des requêtes dork avancées, la correspondance de motifs regex et génère des rapports complets de renseignement sur les menaces.
Ce projet est une refonte complète du script Gitminer original, axée sur la maintenabilité, l'évolutivité et les principes d'architecture logicielle professionnelle.
Le projet est organisé en une structure modulaire pour séparer les préoccupations et améliorer la clarté.
gitminer_v3/
├── config/ # Fichiers de configuration
│ ├── paths.yaml # Chemins des répertoires, fichiers et API
│ ├── labels.yaml # Correspondances regex-vers-étiquettes pour les paramètres
│ └── patterns.yaml # Motifs regex pour la détection de secrets
├── data/ # Stockage persistant des données
│ └── gitminer_history.sqlite # Base de données SQLite pour l'historique
├── gitminer/ # Paquet Python principal
│ ├── __init__.py
│ ├── config_manager.py # Charge et gère toutes les configurations
│ ├── github_client.py # Gère toutes les interactions avec l'API GitHub
│ ├── file_manager.py # Gère les téléchargements et le stockage des fichiers
│ ├── pattern_analyzer.py # Analyse les fichiers à la recherche de secrets
│ ├── database.py # Gère les opérations de la base de données SQLite
│ ├── report_generator.py # Génère les rapports Markdown
│ └── utils.py # Fonctions utilitaires partagées
├── raw/ # Stocke les fichiers téléchargés depuis GitHub
├── reports/ # Stocke les rapports de renseignement sur les menaces générés
├── gitminer_v3.py # Script exécutable principal
├── requirements.txt # Dépendances Python
└── README.md # Ce fichier
public_repo.Clonez le dépôt ou téléchargez le code source.
Configurez votre jeton GitHub : GitMiner nécessite un jeton GitHub pour interagir avec l'API. Vous devez le définir comme variable d'environnement.
export GITHUB_TOKEN="votre_jeton_dacces_personnel_github_ici"
Installez les paquets Python requis :
pip install -r requirements.txt
Le comportement de GitMiner est contrôlé par les fichiers du répertoire config/.
paths.yamlCe fichier définit tous les chemins et paramètres API importants.
directories : Spécifie où stocker les fichiers bruts, les rapports et les données.files : Définit les noms de la base de données et de la sortie CSV par défaut.github : Contient les paramètres de l'API GitHub, tels que les URL, les délais d'attente et les limites de résultats par défaut.labels.yamlCe fichier fait correspondre les motifs regex à des étiquettes lisibles par l'humain. Il est principalement utilisé pour identifier les noms de paramètres (par exemple, ftp_user, api_key) dans le code.
# Format : "motif_regex" : "NOM_ÉTIQUETTE"
"(?i)(api[_\\- ]?key|apikey)": "API_KEY"
"(?i)(password|passwd)": "PASSWORD"
patterns.yamlCe fichier contient les motifs regex principaux utilisés pour détecter les valeurs sensibles comme les clés, jetons et identifiants.
# Format : NOM_MOTIF : "motif_regex"
GITHUB_TOKEN: "ghp_[A-Za-z0-9_]{36,255}"
AWS_ACCESS_KEY_ID: "AKIA[0-9A-Z]{16}"
Le script principal gitminer_v3.py est le point d'entrée pour toutes les opérations.
Recherche avec un dork unique et génération d'un rapport :
python3 gitminer_v3.py -d "filename:.env DB_PASSWORD" --report
Recherche avec un fichier contenant plusieurs dorks :
Créez un fichier nommé dorks.txt :
filename:wp-config.php DB_PASSWORD
filename:settings.py SECRET_KEY
extension:pem private
Puis exécutez la commande :
python3 gitminer_v3.py -d dorks.txt -m 500 --report
Export d'une liste de tous les fichiers téléchargés vers un CSV :
python3 gitminer_v3.py -d dorks.txt -o downloaded_files.csv
Téléchargement de fichiers sans effectuer d'analyse :
python3 gitminer_v3.py -d dorks.txt --no-analyze
GitMiner produit plusieurs types de sorties, stockées dans les répertoires raw/, reports/ et data/.
Tous les fichiers téléchargés depuis GitHub sont stockés dans le répertoire raw/, organisés par mot-clé dork et nom de dépôt.
raw/
└── DB_PASSWORD/
└── someuser_some-repo/
└── .env
Si l'option --report est utilisée, un rapport Markdown détaillé est généré pour chaque dork et enregistré dans le répertoire reports/. Ces rapports comprennent :
Le fichier data/gitminer_history.sqlite contient un historique complet de toutes les opérations, notamment :
search_history : Enregistrements de chaque recherche de dork effectuée.downloaded_files : Métadonnées pour chaque fichier téléchargé.findings : Enregistrements détaillés de chaque secret trouvé.Cette base de données peut être utilisée pour le suivi à long terme et l'analyse avancée.
GitMiner v3 est conçu pour être facilement extensible.
config/patterns.yaml.config/labels.yaml.gitminer/ est bien documenté et peut être facilement modifié ou étendu.Ce projet est open-source et disponible pour un usage personnel et éducatif. Veuillez l'utiliser de manière responsable et éthique. L'auteur n'est pas responsable de tout usage abusif de cet outil.
| Argument | Court | Description | Requis |
|---|
--dorks | -d | Fichier contenant les dorks (un par ligne) ou une chaîne de dork unique. | Oui |
--token | -t | Jeton GitHub (remplace la variable d'environnement GITHUB_TOKEN). | Non |
--max-results | -m | Nombre maximal de résultats à récupérer par dork. (Défaut : 200) | Non |
--per-page | -p | Résultats par page pour l'API. (Défaut : 30, Max : 100) | Non |
--output-csv | -o | Exporte un résumé des fichiers téléchargés vers un fichier CSV. | Non |
--report | Génère un rapport détaillé de renseignement sur les menaces en Markdown. | Non | |
--no-analyze | Ignore l'étape d'analyse locale des fichiers (télécharge uniquement les fichiers). | Non |