
🧬 Extrahiere und analysiere Informationen zu Mitwirkenden aus Git-Repos
OSINT-Tool, das Identitäten – Namen, E-Mails und Verbindungen zwischen scheinbar nicht zusammenhängenden Konten – aus Git-Repositorys und GitHub extrahiert.
gitcolombo.py) – klont Repositorys, durchläuft git log und kann die GitHub-API für umfangreichere Signale aufrufen.gitcolombo.html) – eine einzelne statische HTML-Datei; öffnen Sie sie in einem Browser und fragen Sie die GitHub-API direkt ab, keine Installation.Eine vollständige Aufschlüsselung, woher jede E-Mail/jeder Name stammt (PGP-Schlüssel, öffentliche Ereignisse, Commit-Suche, Commit-Message-Trailer usw.) finden Sie in docs.md.
Gehostet unter https://gitcolombo.soxoj.com – oder öffnen Sie gitcolombo.html lokal. Eine einzelne statische HTML-Datei, die die GitHub-API direkt aus Ihrem Browser abfragt; keine Installation, kein Backend.
Erfordert Python 3.10+ und eine funktionierende git-Binärdatei. Keine Python-Abhängigkeiten von Drittanbietern.
pip install gitcolombo
Oder aus dem Quellcode:
git clone https://github.com/Soxoj/gitcolombo
cd gitcolombo
pip install -e .
# von einer beliebigen Git-URL
gitcolombo -u https://github.com/Soxoj/maigret
# aus einem lokalen Verzeichnis, rekursiv
gitcolombo -d ./maigret -r
# klont und scannt jedes öffentliche Repository eines GitHub-Benutzers oder einer Organisation
gitcolombo --nickname octocat
# Nur API: findet E-Mails zu einem GitHub-Benutzernamen ohne Klonen
gitcolombo --search Soxoj
# Ändert das Verzeichnis, in das Remote-Repositorys geklont werden (Standard: ./repos)
gitcolombo -u https://github.com/Soxoj/maigret --repos-dir ./clones
python -m gitcolombo funktioniert äquivalent, wenn Sie das Skript nicht in $PATH setzen möchten.
Remote-Repositorys werden standardmäßig in ./repos/ geklont; überschreiben Sie dies mit --repos-dir. Für Batch-Klonen von GitLab- und Bitbucket-Gruppen verwenden Sie ghorg.
Entwickler committen oft mit einer Identität (z. B. Arbeitskonto) und wechseln dann zu einer anderen (z. B. privates Konto) und führen git commit --amend aus, wobei sie vergessen, dass dies den Committer überschreibt, aber den ursprünglichen Author belässt. Die beiden Rollen driften auseinander, und genau diese Diskrepanz korreliert gitcolombo.
Kurze Erklärung zu Author vs. Committer: https://stackoverflow.com/questions/18750808/difference-between-author-and-committer-in-git
Test-Suite nur mit Stdlib – keine Abhängigkeiten von Drittanbietern. Vom Repository-Root (nach pip install -e .):
python3 -m unittest test_gitcolombo -v
Der End-to-End-Test erstellt ein echtes Git-Repository in einem temp-Verzeichnis, daher ist eine funktionierende git-Binärdatei erforderlich (der Test wird übersprungen, wenn git fehlt).
Tests laufen bei jedem Push und Pull Request über GitHub Actions (.github/workflows/tests.yml) auf Python 3.10–3.13.
[email protected], @users.noreply.github.com)