
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.
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
GitMiner erzeugt verschiedene Arten von Ausgaben, die in den Verzeichnissen raw/, reports/ und data/ gespeichert werden.
Alle von GitHub heruntergeladenen Dateien werden im Verzeichnis raw/ gespeichert, organisiert nach Dork-Schlüsselwort und Repository-Name.
raw/
└── DB_PASSWORD/
└── someuser_some-repo/
└── .env
Wenn das Flag --report verwendet wird, wird für jeden Dork ein detaillierter Markdown-Bericht erstellt und im Verzeichnis reports/ gespeichert. Diese Berichte enthalten:
Die Datei data/gitminer_history.sqlite enthält einen vollständigen Verlauf aller Operationen, einschließlich:
search_history: Aufzeichnungen jeder durchgeführten Dork-Suche.downloaded_files: Metadaten für jede heruntergeladene Datei.findings: Detaillierte Aufzeichnungen jedes gefundenen Geheimnisses.Diese Datenbank kann für langfristige Nachverfolgung und erweiterte Analysen verwendet werden.
GitMiner v3 ist so konzipiert, dass es leicht erweiterbar ist.
config/patterns.yaml hinzu.config/labels.yaml hinzu.gitminer/ ist gut dokumentiert und kann leicht geändert oder erweitert werden.Dieses Projekt ist Open Source und für den persönlichen und pädagogischen Gebrauch verfügbar. Bitte verwenden Sie es verantwortungsvoll und ethisch. Der Autor ist nicht für Missbrauch dieses Tools verantwortlich.
| 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 |