OSINT 工具,可从 git 仓库和 GitHub 中提取身份信息——姓名、电子邮件以及看似无关账户之间的联系。
gitcolombo.py)——克隆仓库、遍历 git log,并可调用 GitHub API 以获取更丰富的信号。gitcolombo.html)——单个静态 HTML 文件;在浏览器中打开,直接查询 GitHub API,无需安装。关于每封邮件/每个姓名的来源(PGP 密钥、公开事件、提交搜索、提交消息尾部等)的完整说明,请参阅 docs.md。
托管于 https://gitcolombo.soxoj.com ——或者本地打开 gitcolombo.html。单个静态 HTML 文件,直接从浏览器查询 GitHub API;无需安装,无需后端。
需要 Python 3.10+ 和一个可用的 git 二进制文件。无第三方 Python 依赖。
pip install gitcolombo
或从源码安装:
git clone https://github.com/Soxoj/gitcolombo
cd gitcolombo
pip install -e .
# 从任意 git URL
gitcolombo -u https://github.com/Soxoj/maigret
# 从本地目录,递归
gitcolombo -d ./maigret -r
# 克隆并扫描 GitHub 用户/组织的所有公开仓库
gitcolombo --nickname octocat
# 仅 API:查找 GitHub 用户名的电子邮件,无需克隆
gitcolombo --search Soxoj
# 更改远程仓库克隆位置(默认:./repos)
gitcolombo -u https://github.com/Soxoj/maigret --repos-dir ./clones
python -m gitcolombo 同样有效,如果你不愿将脚本放在 $PATH 上。
远程仓库默认克隆到 ./repos/;可通过 --repos-dir 覆盖。若需批量克隆 GitLab 和 Bitbucket 组,请使用 ghorg。
开发者经常以一种身份(例如工作账户)提交,然后切换到另一种身份(例如个人账户)并运行 git commit --amend,忘记这会重写提交者但保留原始的作者。两者出现偏差,而 gitcolombo 正是关联这种不匹配。
关于作者与提交者区别的简短解释: https://stackoverflow.com/questions/18750808/difference-between-author-and-committer-in-git
仅使用标准库的测试套件——无第三方依赖。在仓库根目录(执行 pip install -e . 之后):
python3 -m unittest test_gitcolombo -v
端到端测试会在临时目录中创建一个真实的 git 仓库,因此需要可用的 git 二进制文件(如果缺少 git,测试将被跳过)。
每次推送和拉取请求均通过 GitHub Actions(.github/workflows/tests.yml)在 Python 3.10–3.13 上运行测试。
[email protected]、@users.noreply.github.com)