
Strumento per l'estrazione avanzata di contenuti su GitHub
+---------------------------------------------------+
| GLI SVILUPPATORI NON SI ASSUMONO ALCUNA |
| RESPONSABILITÀ E NON SONO RESPONSABILI PER |
| QUALSIASI USO IMPROPRIO O DANNO CAUSATO DA |
| QUESTO PROGRAMMA |
+---------------------------------------------------+
GitMiner v3 è uno strumento modulare progettato per scoprire informazioni sensibili nei repository GitHub pubblici. Utilizza query dork avanzate, corrispondenza di pattern regex e genera report completi di threat intelligence.
Questo progetto è una completa riscrittura dello script originale Gitminer, con particolare attenzione a manutenibilità, scalabilità e principi di architettura software professionale.
Il progetto è organizzato in una struttura modulare per separare le responsabilità e migliorare la chiarezza.
gitminer_v3/
├── config/ # File di configurazione
│ ├── paths.yaml # Percorsi di directory, file e API
│ ├── labels.yaml # Mappature regex-etichetta per i parametri
│ └── patterns.yaml # Pattern regex per il rilevamento dei segreti
├── data/ # Archiviazione dati persistente
│ └── gitminer_history.sqlite # Database SQLite per la cronologia
├── gitminer/ # Pacchetto Python principale
│ ├── __init__.py
│ ├── config_manager.py # Carica e gestisce tutte le configurazioni
│ ├── github_client.py # Gestisce tutte le interazioni con l'API GitHub
│ ├── file_manager.py # Gestisce il download e l'archiviazione dei file
│ ├── pattern_analyzer.py # Scansiona i file alla ricerca di segreti
│ ├── database.py # Gestisce le operazioni sul database SQLite
│ ├── report_generator.py # Genera report Markdown
│ └── utils.py # Funzioni di utilità condivise
├── raw/ # Archivia i file scaricati da GitHub
├── reports/ # Archivia i report di threat intelligence generati
├── gitminer_v3.py # Script eseguibile principale
├── requirements.txt # Dipendenze Python
└── README.md # Questo file
public_repo.Clona il repository o scarica il codice sorgente.
Configura il tuo Token GitHub: GitMiner richiede un token GitHub per interagire con l'API. Devi impostarlo come variabile d'ambiente.
export GITHUB_TOKEN="il_tuo_personal_access_token_github_qui"
Installa i pacchetti Python richiesti:
pip install -r requirements.txt
Il comportamento di GitMiner è controllato dai file nella directory config/.
paths.yamlQuesto file definisce tutti i percorsi e le impostazioni API importanti.
directories: Specifica dove archiviare file raw, report e dati.files: Definisce i nomi per il database e l'output CSV predefinito.github: Contiene le impostazioni per l'API GitHub, come URL, timeout e limiti predefiniti dei risultati.labels.yamlQuesto file mappa i pattern regex a etichette leggibili dall'uomo. Viene utilizzato principalmente per identificare i nomi dei parametri (es. ftp_user, api_key) nel codice.
# Formato: "regex_pattern": "NOME_ETICHETTA"
"(?i)(api[_\\- ]?key|apikey)": "API_KEY"
"(?i)(password|passwd)": "PASSWORD"
patterns.yamlQuesto file contiene i pattern regex principali utilizzati per rilevare valori sensibili come chiavi, token e credenziali.
# Formato: NOME_PATTERN: "regex_pattern"
GITHUB_TOKEN: "ghp_[A-Za-z0-9_]{36,255}"
AWS_ACCESS_KEY_ID: "AKIA[0-9A-Z]{16}"
Lo script principale gitminer_v3.py è il punto di ingresso per tutte le operazioni.
Ricerca utilizzando un singolo dork e generazione di un report:
python3 gitminer_v3.py -d "filename:.env DB_PASSWORD" --report
Ricerca utilizzando un file contenente più dork:
Crea un file chiamato dorks.txt:
filename:wp-config.php DB_PASSWORD
filename:settings.py SECRET_KEY
extension:pem private
Poi esegui il comando:
python3 gitminer_v3.py -d dorks.txt -m 500 --report
Esporta un elenco di tutti i file scaricati in CSV:
python3 gitminer_v3.py -d dorks.txt -o downloaded_files.csv
Scarica i file senza eseguire alcuna analisi:
python3 gitminer_v3.py -d dorks.txt --no-analyze
GitMiner produce diversi tipi di output, archiviati nelle directory raw/, reports/ e data/.
Tutti i file scaricati da GitHub sono archiviati nella directory raw/, organizzati per parola chiave dork e nome del repository.
raw/
└── DB_PASSWORD/
└── someuser_some-repo/
└── .env
Se viene utilizzato il flag --report, viene generato un report Markdown dettagliato per ogni dork e salvato nella directory reports/. Questi report includono:
Il file data/gitminer_history.sqlite contiene una cronologia completa di tutte le operazioni, inclusi:
search_history: Registrazioni di ogni ricerca dork eseguita.downloaded_files: Metadati per ogni file scaricato.findings: Registrazioni dettagliate di ogni segreto trovato.Questo database può essere utilizzato per il monitoraggio a lungo termine e analisi avanzate.
GitMiner v3 è progettato per essere facilmente estensibile.
config/patterns.yaml.config/labels.yaml.gitminer/ è ben documentato e può essere facilmente modificato o esteso.Questo progetto è open-source e disponibile per uso personale ed educativo. Utilizzalo in modo responsabile ed etico. L'autore non è responsabile per qualsiasi uso improprio di questo strumento.
| Argomento | Breve | Descrizione | Obbligatorio |
|---|
--dorks | -d | File con i dork (uno per riga) o una singola stringa dork. | Sì |
--token | -t | Token GitHub (sovrascrive la variabile d'ambiente GITHUB_TOKEN). | No |
--max-results | -m | Numero massimo di risultati da recuperare per dork. (Predefinito: 200) | No |
--per-page | -p | Risultati per pagina per l'API. (Predefinito: 30, Max: 100) | No |
--output-csv | -o | Esporta un riepilogo dei file scaricati in un file CSV. | No |
--report | Genera un report dettagliato di threat intelligence in Markdown. | No | |
--no-analyze | Salta la fase di analisi locale dei file (scarica solo i file). | No |