#github #user-email #osint #leak #rust

程序+库 git2mail

纯Rust OSINT工具,用于查找GitHub用户的电子邮件

7个版本

0.4.3 2024年7月13日
0.4.1 2023年3月10日
0.3.5 2022年9月29日
0.3.3 2022年7月20日

命令行工具 中排名第 317

Download history 116/week @ 2024-07-13 2/week @ 2024-07-20 7/week @ 2024-07-27

每月下载量 125

LGPL-3.0-only

55KB
924

git2mail logo

Build & test Cargo git2mail Documentation git2mail

轻量、快速且安全的开发者电子邮件查找器。

👁️ 哲学

https://github.com/mxrch/GitFive 相反,git2mail 非常适合批量进攻性侦察或OSINT。它可以与多个令牌一起使用(不仅仅与一个账户相关联),以获取大量的电子邮件。

⚡ 性能

根据当前开发(单线程和同步请求),在一个大型的仓库 https://github.com/denoland/deno

  • 不到一分钟 内分析了超过 11,750 次提交
  • 找到 超过 760 封电子邮件

🚀 快速入门

  1. 根据您的要求,从 git2mail 版本 获取您的可执行文件

或者

  1. 安装 Rust

  2. 获取用于闪电般快速查询的优化构建

    git clone https://github.com/exti0p/git2mail
    cd git2mail
    cargo build --release
    

    或者,您可以直接安装其发布版本

    git clone https://github.com/exti0p/git2mail
    cd git2mail
    cargo install --path .
    

    或者,通过crates.io软件包安装

    cargo install git2mail
    

然后

  1. 检查下面的 示例
  2. 扫描您的目标

📖 示例

🎯 以GitHub个人资料为目标

获取一些未经身份验证的提交或个人资料事件

./git2mail --url "$TARGET_URL"

请注意,URL参数可以是GitHub仓库URL或个人资料URL,例如

./git2mail --url https://github.com/denoland/deno

./git2mail --url https://github.com/denoland

使用特定的令牌进行身份验证并获取大量提交

./git2mail --url "$TARGET_URL" --token "$YOUR_TOKEN"

仓库URL必须遵循以下格式

git://github.com/some-user/my-repo[.git]
[email protected]:some-user/my-repo[.git]
https://github.com/some-user/my-repo[.git]
ssh://[email protected]/group/app[.git]

个人资料URL必须遵循以下格式

git://github.com/some-user
[email protected]:some-user
https://github.com/some-user
ssh://[email protected]/group

如果您有多个令牌,您可以自定义 tokens.example.json 以抓取大量提交

./git2mail --url "$TARGET_URL" --token-file "$YOUR_TOKEN_FILE"

使用占位符值

./git2mail --url https://github.com/denoland/deno --token-file /tmp/tokens.json

tokens.example.json 内容,位于项目根目录下

{
    "0": "ghp_Pl8xhFwtqbxtoiia8fWwudtgO6EqOb2GdVSf",
    "1": "ghp_kNxrCSGcajrOwtqbxtoiiaMQKkAjKA0WPVWP",
    "2": "ghp_5Pht6hDRNWpuTJHcxCVwtqbxtoiiaI0vBxVB",
    "3": "ghp_KUO6f0z13fwtqbxtoiiawtqbxtoiia0zQgcl",
    "4": "ghp_ZYCsgDDDs3p3bLyBmmGwtqbxtoiia84ZmVMN",
    "5": "ghp_ljP40my9r5VnHUywtwtqbxtoiia5Iq2HdSYt",
    "6": "ghp_VAfWGNkwtqbxtoiiad430JF4PbOk9j3I4uj5",
    "7": "ghp_Adwtqbxtoiiavdp3RznGdeGEuOzxwA0bkXDr",
    "8": "ghp_GjFwtqbxtoiiawtqbxtoiiaHuQjkyY00SVHD",
    "9": "ghp_uiQR88z5IgLLicvcx8wtqbxtoiiaQ705O1Nb"
}

在此模式下,您的结果将按个人资料存储,路径如下,从项目根目录开始:results/profile/$author。如果定义了仓库,它将在 results/repository/$author_$repository

🏷️ 将元数据作为关键词

您想要搜索,例如,创建 nmap 相关工具的一些 Rust 开发者

./git2mail --query nmap --language Rust --token-file /tmp/tokens.json

您还可以通过这种方式限制扫描的仓库数量,例如

./git2mail --query nmap --language Rust --token-file /tmp/tokens.json --limit 5

在此模式下,您的结果将按查询存储,路径如下,从项目根目录开始:results/keyword/$query。如果定义了语言,它将在 results/keyword/$query_$language 下。

🙋 它是如何工作的

git2mail 使用 GitHub 仓库的提交元数据来获取开发者的电子邮件。它浏览一个仓库并通过其提交抓取开发者的电子邮件。

此过程可以扩展到多个仓库,特别是通过自定义查询。后者可以使用 GitHub 元数据,如其语言。您还可以通过添加限制扫描的仓库数量来调整您的终端输出。

非认证用户的 GitHub API 请求限制为每小时 60 个请求。因此,如果您搜索如 ripgrep 这样的经典仓库,它目前有数千个提交,您最好使用 GitHub 或 GitHub App 账户,并按照此 GitHub API 文档 生成一个 每个账户 的令牌。请注意,您的令牌不需要访问您的任何仓库。因此,我决定强制使用令牌,因为非认证请求非常有限。请注意,速率限制是按 每个账户 每小时的请求数定义的。

请注意,一个令牌每小时可以请求 GitHub API 5000 次,这是您可以获取的提交数。如果您需要爬取更多提交,您最好获取多个令牌。为此,您可以使用临时电子邮件来创建多个账户。例如,要分析 Go 编程语言仓库,您至少需要 11 个令牌,因为在我编写此文档时,大约有 53,000 个提交可用。

此项目可以与其他 OSINT 工具结合使用。例如,您可以使用 git2mail 获取一些 Gmail 地址,然后使用 GHunt 对其中的一些进行进一步调查。

❗ 免责声明

一个人的电子邮件可以在提交中被伪造。

🔒 预防措施

通过启用这些 设置 来加强您的账户隐私

  • ✔️ 保护我的电子邮件地址
  • ✔️ 阻止暴露我的电子邮件的命令行推送

🎬 局限性

此项目仅限于 GitHub 仓库。

🏎️ 路线图

  • 从 GitHub 仓库中,使用 GitHub 元数据和解析搜索提交和作者电子邮件
  • 从 GitHub 关键字搜索中检索 GitHub 仓库 URL
  • 妥善处理错误和限制或删除恐慌
  • 通过 results/$language/$author 将电子邮件、语言和项目偏好关联起来,其中包含 $author 电子邮件
  • 支持更高级的参数(例如 cf. https://github.com/search/advanced

💭 思考

  • 模糊测试以找到我的代码漏洞
  • 通过异步查询处理更快的请求?如果使用同一令牌执行太多请求,在 API 对令牌进行速率限制后,所有发送的请求都会被拒绝吗?如果是这样,异步可能不是好主意。或者,它只会接受请求,直到达到速率限制,就像同步请求一样?

💻 贡献

如果您想将您的石头带入建筑,请阅读并遵循CONTRIBUTING.md

⚖️ 许可证

本项目是免费软件,根据LGPL(GNU Lesser General Public License)第3版发布,或者(根据您的选择)任何后续版本。

依赖项

~9-25MB
~412K SLoC