
此 Gitmails 版本已不再维护。如欲使用仍受维护且有望继续开发的版本,请查看 Gitmails Shell 移植版。
如果你不想使用 Shell 移植版,而更倾向于 Python 版本,欢迎 fork Gitmails 并按照你认为合适的路径进行发展。
Gitmails 利用了一个事实:git 提交记录中包含作者配置的用户名和邮箱,而版本控制托管服务被用于存储大量项目。
Gitmails 的功能如下:
通过这些步骤,Gitmails 可以收集特定目标在提交历史中的所有邮箱。
首先,你必须选择操作模式:收集组织、用户或单个仓库的邮箱。这可以通过以下选项完成:-u --username、-o --organization 或 -r --repository。
指定操作模式后,你需要设置目标。将目标紧跟操作模式传入:python3 gitmails.py -u some_username、python3 gitmails.py -o some_org 或 python3 gitmails.py -r some_repo_url。
注意:GitLab 用户名区分大小写,在尝试收集那里的邮箱时请牢记这一点。
使用此基本配置,Gitmails 将克隆指定目标的所有仓库(或克隆指定 URL 的仓库)并分析其提交历史。然后,它将打印用户或组织的高层级信息,最后以“fancy_grid”表格(来自 tabulate)打印分析过程中发现的所有“用户名-邮箱”对。
有用的选项:
--raw:以纯文本形式打印结果,无网格,仅逗号分隔值;-f | --file:将结果存储到指定文件中。结果将为无表头的 CSV 格式。--include-repositories:使 Gitmails 打印结果时包含发现邮箱所在的仓库信息。-p | --path:指定用于克隆仓库的临时路径。-e | --exclude:忽略指定的仓库。将比较仓库名称,如果匹配,则忽略该仓库并继续下一个。--no-cleanup:不删除已克隆的仓库。--include-forks:在分析中包含 fork 的仓库(仅限 GitHub)。--include-users:如果收集组织信息,则同时收集其公开成员的信息(仅限 GitHub)。--no-[gitlab|github|bitbucket]:不收集指定托管服务的信息。--run-plugins:对收集到的结果执行插件。--api:仅通过 API 尝试收集所有信息,无需克隆仓库。
注意:未经身份验证访问 API 会导致你的 IP 被限速。此外,仅通过 API 收集通常比克隆仓库慢。要安装 Gitmails,你需要执行以下步骤:
pip3 install -r requirements.txt如果你使用的是 Debian(可能 Ubuntu 也类似),libgit2 包无法与 Gitmails 正常工作。要解决此问题,你需要手动编译 libgit2。以下步骤应该足够:
wget https://github.com/libgit2/libgit2/archive/v0.27.0.tar.gz && \
tar xzf v0.27.0.tar.gz && \
cd libgit2-0.27.0/ && \
cmake . && \
make && \
sudo make install
ldconfig
pip3 install pygit2
或者执行 debian 安装脚本。
你也可以使用该工具的 Docker 版本,通过执行以下命令:
docker run -it giovanifss/gitmails --help请注意,如果要写入文件,你需要挂载一个 Docker 卷:
docker run -v /tmp/output:/opt -it giovanifss/gitmails -f /opt/result.txt此项目已不再维护。如果你想贡献,请查看 Gitmails Shell。
本工具收集的数据可用于合法的渗透测试工作。本项目作者对因误用或恶意使用本工具造成的任何损害或损失不承担任何责任。详情请查看 LICENSE。