
🧬 Extraire et analyser les informations des contributeurs des dépôts git
Outil OSINT qui extrait des identités — noms, e-mails et liens entre des comptes apparemment non liés — à partir de dépôts git et de GitHub.
gitcolombo.py) — clone des dépôts, parcourt git log et peut appeler l'API GitHub pour des signaux plus riches.gitcolombo.html) — un seul fichier HTML statique ; ouvrez-le dans un navigateur et interrogez directement l'API GitHub, sans installation.Pour le détail complet de l'origine de chaque e-mail/nom (clés PGP, événements publics, recherche de commits, en-têtes de messages de commit, etc.) voir docs.md.
Hébergé sur https://gitcolombo.soxoj.com — ou ouvrez gitcolombo.html localement. Un seul fichier HTML statique qui interroge l'API GitHub directement depuis votre navigateur ; aucune installation, aucun backend.
Nécessite Python 3.10+ et un binaire git fonctionnel. Aucune dépendance Python tierce.
pip install gitcolombo
Ou à partir des sources :
git clone https://github.com/Soxoj/gitcolombo
cd gitcolombo
pip install -e .
# from any git URL
gitcolombo -u https://github.com/Soxoj/maigret
# from a local directory, recursively
gitcolombo -d ./maigret -r
# clone and scan every public repo of a GitHub user/org
gitcolombo --nickname octocat
# API-only: find emails for a GitHub username without cloning
gitcolombo --search Soxoj
# change where remote repos get cloned (default: ./repos)
gitcolombo -u https://github.com/Soxoj/maigret --repos-dir ./clones
python -m gitcolombo fonctionne de manière équivalente si vous préférez ne pas mettre le script dans $PATH.
Les dépôts distants sont clonés dans ./repos/ par défaut ; remplacez avec --repos-dir. Pour le clonage par lots de groupes GitLab et Bitbucket, utilisez ghorg.
Les développeurs commettent souvent avec une identité (par exemple compte professionnel), puis passent à une autre (par exemple compte personnel) et exécutent git commit --amend, oubliant que cela réécrit le committer mais laisse l'auteur original en place. Les deux rôles divergent, et ce décalage est exactement ce que gitcolombo corrèle.
Explication rapide sur auteur vs. committer : https://stackoverflow.com/questions/18750808/difference-between-author-and-committer-in-git
Suite de tests uniquement stdlib — aucune dépendance tierce. Depuis la racine du dépôt (après pip install -e .) :
python3 -m unittest test_gitcolombo -v
Le test de bout en bout crée un véritable dépôt git dans un répertoire temporaire, donc un binaire git fonctionnel est requis (le test est ignoré si git est manquant).
Les tests sont exécutés à chaque push et pull request via GitHub Actions (.github/workflows/tests.yml) sur Python 3.10–3.13.
[email protected], @users.noreply.github.com)