
Tool für fortgeschrittenes Mining von Inhalten auf GitHub
+---------------------------------------------------+
| DIE ENTWICKLER ÜBERNEHMEN KEINE HAFTUNG UND SIND |
| NICHT VERANTWORTLICH FÜR MISSBRAUCH ODER SCHÄDEN, |
| DIE DURCH DIESES PROGRAMM VERURSACHT WERDEN |
+---------------------------------------------------+
GitMiner v3 ist ein modulares Tool zur Erkennung sensibler Informationen in öffentlichen GitHub-Repositories. Es verwendet erweiterte Dork-Abfragen, Regex-Musterabgleich und erstellt umfassende Threat-Intelligence-Berichte.
Dieses Projekt ist eine vollständige Überarbeitung des ursprünglichen Gitminer-Skripts, mit Fokus auf Wartbarkeit, Skalierbarkeit und professionellen Softwarearchitektur-Prinzipien.
Das Projekt ist in einer modularen Struktur organisiert, um Zuständigkeiten zu trennen und die Übersichtlichkeit zu verbessern.
gitminer_v3/
├── config/ # Konfigurationsdateien
│ ├── paths.yaml # Verzeichnis-, Datei- und API-Pfade
│ ├── labels.yaml # Regex-zu-Label-Zuordnungen für Parameter
│ └── patterns.yaml # Regex-Muster zur Erkennung von Geheimnissen
├── data/ # Persistente Datenspeicherung
│ └── gitminer_history.sqlite # SQLite-Datenbank für den Verlauf
├── gitminer/ # Haupt-Python-Paket
│ ├── __init__.py
│ ├── config_manager.py # Lädt und verwaltet alle Konfigurationen
│ ├── github_client.py # Behandelt alle GitHub-API-Interaktionen
│ ├── file_manager.py # Verwaltet Dateidownloads und -speicherung
│ ├── pattern_analyzer.py # Scannt Dateien auf Geheimnisse
│ ├── database.py # Verwaltet SQLite-Datenbankoperationen
│ ├── report_generator.py # Erstellt Markdown-Berichte
│ └── utils.py # Gemeinsame Hilfsfunktionen
├── raw/ # Speichert heruntergeladene Dateien von GitHub
├── reports/ # Speichert generierte Threat-Intelligence-Berichte
├── gitminer_v3.py # Hauptausführbares Skript
├── requirements.txt # Python-Abhängigkeiten
└── README.md # Diese Datei
public_repo.Repository klonen oder Quellcode herunterladen.
GitHub-Token einrichten: GitMiner benötigt ein GitHub-Token für die Interaktion mit der API. Sie müssen es als Umgebungsvariable festlegen.
export GITHUB_TOKEN="your_github_personal_access_token_here"
Erforderliche Python-Pakete installieren:
pip install -r requirements.txt
Das Verhalten von GitMiner wird durch Dateien im Verzeichnis config/ gesteuert.
paths.yamlDiese Datei definiert alle wichtigen Pfade und API-Einstellungen.
directories: Gibt an, wo Rohdateien, Berichte und Daten gespeichert werden.files: Definiert die Namen für die Datenbank und die Standard-CSV-Ausgabe.github: Enthält Einstellungen für die GitHub-API, wie URLs, Timeouts und Standard-Ergebnislimits.labels.yamlDiese Datei ordnet Regex-Muster lesbaren Labels zu. Sie wird hauptsächlich verwendet, um Parameternamen (z. B. ftp_user, api_key) im Code zu identifizieren.
# Format: "regex_pattern": "LABEL_NAME"
"(?i)(api[_\\- ]?key|apikey)": "API_KEY"
"(?i)(password|passwd)": "PASSWORD"
patterns.yamlDiese Datei enthält die zentralen Regex-Muster zur Erkennung sensibler Werte wie Schlüssel, Tokens und Anmeldedaten.
# Format: PATTERN_NAME: "regex_pattern"
GITHUB_TOKEN: "ghp_[A-Za-z0-9_]{36,255}"
AWS_ACCESS_KEY_ID: "AKIA[0-9A-Z]{16}"
Das Hauptskript gitminer_v3.py ist der Einstiegspunkt für alle Operationen.
| Argument | Kurzform | Beschreibung | Erforderlich |
|---|---|---|---|
--dorks | -d | Datei mit Dorks (einer pro Zeile) oder eine einzelne Dork-Zeichenkette. | Ja |
--token | -t | GitHub-Token (überschreibt die Umgebungsvariable GITHUB_TOKEN). | Nein |
--max-results | -m | Maximale Anzahl von Ergebnissen pro Dork. (Standard: 200) | Nein |
--per-page | -p | Ergebnisse pro Seite für die API. (Standard: 30, Max: 100) | Nein |
--output-csv | -o | Exportiert eine Zusammenfassung der heruntergeladenen Dateien in eine CSV-Datei. | Nein |
--report | Erstellt einen detaillierten Markdown-Threat-Intelligence-Bericht. | Nein | |
--no-analyze | Überspringt den lokalen Dateianalyse-Schritt (lädt nur Dateien herunter). | Nein |
Suche mit einem einzelnen Dork und Berichtserstellung:
python3 gitminer_v3.py -d "filename:.env DB_PASSWORD" --report
Suche mit einer Datei, die mehrere Dorks enthält:
Erstellen Sie eine Datei namens dorks.txt:
filename:wp-config.php DB_PASSWORD
filename:settings.py SECRET_KEY
extension:pem private
Führen Sie dann den Befehl aus:
python3 gitminer_v3.py -d dorks.txt -m 500 --report
Exportieren einer Liste aller heruntergeladenen Dateien als CSV:
python3 gitminer_v3.py -d dorks.txt -o downloaded_files.csv
Dateien herunterladen, ohne eine Analyse durchzuführen:
python3 gitminer_v3.py -d dorks.txt --no-analyze