
🧬 Estrai e analizza le informazioni sui contributori dai repository git
Strumento OSINT che estrae identità — nomi, email e collegamenti tra account apparentemente non correlati — da repository git e GitHub.
gitcolombo.py) — clona repository, percorre git log e può chiamare l'API di GitHub per segnali più ricchi.gitcolombo.html) — un singolo file HTML statico; aprilo in un browser e interroga direttamente l'API di GitHub, nessuna installazione.Per la suddivisione completa della provenienza di ogni email/nome (chiavi PGP, eventi pubblici, ricerca nei commit, trailer dei messaggi di commit, ecc.) vedi docs.md.
Hostata su https://gitcolombo.soxoj.com — oppure apri gitcolombo.html localmente. Un singolo file HTML statico che interroga l'API di GitHub direttamente dal tuo browser; nessuna installazione, nessun backend.
Richiede Python 3.10+ e un binario git funzionante. Nessuna dipendenza Python di terze parti.
pip install gitcolombo
Oppure dai sorgenti:
git clone https://github.com/Soxoj/gitcolombo
cd gitcolombo
pip install -e .
# da qualsiasi URL git
gitcolombo -u https://github.com/Soxoj/maigret
# da una directory locale, ricorsivamente
gitcolombo -d ./maigret -r
# clona e scansiona ogni repository pubblico di un utente/organizzazione GitHub
gitcolombo --nickname octocat
# solo API: trova email per un nome utente GitHub senza clonare
gitcolombo --search Soxoj
# cambia dove vengono clonati i repository remoti (default: ./repos)
gitcolombo -u https://github.com/Soxoj/maigret --repos-dir ./clones
python -m gitcolombo funziona in modo equivalente se preferisci non mettere lo script nel $PATH.
I repository remoti vengono clonati in ./repos/ per impostazione predefinita; sovrascrivi con --repos-dir. Per clonazioni batch da gruppi GitLab e Bitbucket usa ghorg.
Gli sviluppatori spesso effettuano commit con un'identità (es. account di lavoro), poi passano a un'altra (es. account personale) ed eseguono git commit --amend, dimenticando che questo riscrive il committer ma lascia intatto l'author originale. I due ruoli si separano, ed è proprio questa discrepanza che gitcolombo correla.
Breve spiegazione su author vs. committer: https://stackoverflow.com/questions/18750808/difference-between-author-and-committer-in-git
Suite di test basata solo sulla libreria standard (stdlib) — nessuna dipendenza di terze parti. Dalla radice del repository (dopo pip install -e .):
python3 -m unittest test_gitcolombo -v
Il test end-to-end crea un vero repository git in una directory temporanea, quindi è necessario un binario git funzionante (il test viene saltato se git è assente).
I test vengono eseguiti a ogni push e pull request tramite GitHub Actions
(.github/workflows/tests.yml) su Python 3.10–3.13.
[email protected], @users.noreply.github.com)