gNOR-mu/OSINT-GitHub-Email-Extractor
GitHub: gNOR-mu/OSINT-GitHub-Email-Extractor
利用 GitHub 公共 API 自动提取目标用户在 commits 中暴露的电子邮件地址的 OSINT 工具,帮助用户进行个人安全审计与隐私泄露自查。
Stars: 0 | Forks: 0
# OSINT GitHub Email 提取器
用于公开信息收集和提取 GitHub 用户在 commits 中暴露的电子邮件的工具。
## 法律与道德声明 (Disclaimer)
本工具的开发严格出于**教育和个人安全审计目的**。其主要目标是提高人们对版本控制历史记录中意外暴露隐私数据的意识。
使用本软件,即表示您同意遵守以下条件:
1. **个人授权使用:** 本工具必须且仅能用于您自己拥有的 GitHub 账户和仓库。
2. **明确授权:** 严禁在未获得合法所有者事先、明确书面授权的情况下,使用本软件扫描、审计或提取第三方账户的信息。
3. **意外暴露与数据处理:** 由于 Git 的协作性质,分析您自己的仓库可能会无意中暴露第三方的电子邮件(例如合作者、*open-source* 贡献者或来自 *forks* 的代码)。您有道德和职业义务对这些数据进行严格保密,从生成的日志或报告中清除并删除任何未授权方的个人身份信息 (PII)。
4. **免责声明:** 本代码按“原样”(*as is*) 提供。对于因滥用本软件而产生的任何法律、道德或技术责任,作者概不负责。您需对自己的行为以及遵守平台政策负全部责任。
**开发者注:**
以早期开发社区的纯正风格:*对于被封禁的 GitHub 账户、超出的 API 限制、起火的电脑、热核战争,或者因为你在工作时间使用此工具被老板发现而解雇你,我概不负责。* 请带着责任感和职业道德使用它!
## 信息来源
主要使用 2 个来源通过 GitHub API 进行信息收集(其中 `{username}` 对应不带花括号的用户名):
* **快速收集(默认):**
* 直接通过搜索引擎搜索与作者相关的 commits:
* `https://api.github.com/search/commits?q=author:{username}`
* **深度收集(Deep Scan / 深度扫描):**
* 获取用户的公开仓库列表:
* `https://api.github.com/users/{username}/repos?type=owner&sort=updated`
* 遍历每个仓库以提取其完整的 commits 列表:
* `https://api.github.com/repos/{username}/{repository}/commits`
## 前置条件
- **Java JDK 25** 或更高版本。
- *注意:您不需要全局安装 Maven,因为本项目已包含 **Maven Wrapper (`mvnw`)**。*
## 编译说明
要编译项目并下载所有必要的依赖项:
**在 Linux / macOS 上:**
```
./mvnw clean compile
```
**在 Windows (PowerShell) 上:**
```
.\mvnw.cmd clean compile
```
**在 Windows (命令提示符) 上:**
```
mvnw.cmd clean compile
```
## 运行说明
要使用 Maven Wrapper 直接运行应用程序(无需生成可执行 JAR):
**在 Linux / macOS 上:**
```
./mvnw exec:java -Dexec.mainClass="Main" -Dexec.args="-u [opciones]"
```
**在 Windows (PowerShell) 上:**
```
.\mvnw.cmd exec:java "-Dexec.mainClass=Main" "-Dexec.args=-u [opciones]"
```
**在 Windows (命令提示符) 上:**
```
mvnw.cmd exec:java -Dexec.mainClass="Main" -Dexec.args="-u [opciones]"
```
### 可用选项:
* `-u, --username=`:**(必填)** 要分析的 GitHub 用户的用户名。
* `-v, --verbose`:**(可选)** 启用详细/调试模式,以在控制台中查看详细跟踪信息,并过滤掉 JDK 中嘈杂的日志。
* `-d, --deep`:**(可选)** 执行详尽的深度扫描 (Deep Scan),逐一搜索目标用户的所有公开仓库,而不是使用简化的搜索。
* `-h, --help`:在屏幕上显示带有命令说明的帮助信息。
#### 执行示例(在 Windows PowerShell 中):
* **默认快速扫描:**
.\mvnw.cmd exec:java "-Dexec.mainClass=Main" "-Dexec.args=-u gNOR-mu"
* **带有详细模式的快速扫描:**
.\mvnw.cmd exec:java "-Dexec.mainClass=Main" "-Dexec.args=-u gNOR-mu -v"
* **完整的深度扫描 (Deep Scan):**
.\mvnw.cmd exec:java "-Dexec.mainClass=Main" "-Dexec.args=-u gNOR-mu -d"
### API 的限制(Rate Limiting)
默认情况下,此工具以匿名方式连接到 GitHub API。请注意,GitHub 对未经身份验证的连接施加了严格的**每小时 60 次请求**的限制。
由于“深度扫描”会对用户的每个公开仓库进行连续请求,**如果目标拥有大量仓库,在耗尽配额后,工具可能会抛出 `HTTP 403 Forbidden` 错误**。
**为了绕过此限制(推荐用于 Deep Scan):**
在您的 GitHub 账户中生成一个没有特殊权限的 Personal Access Token (PAT),并在运行该工具之前将其导出为环境变量:
**注意:未经测试**
* **在 Linux / macOS 上:**
export GITHUB_TOKEN="tu_token_aqui"
* **在 Windows (PowerShell) 上:**
$env:GITHUB_TOKEN="tu_token_aqui"
## 如果我不想暴露我的电子邮件该怎么办?
[查看此文档](Security.md)
标签:ESC4, JS文件枚举, OSINT, 域名枚举, 数据提取, 数据泄露, 漏洞探测