+---------------------------------------------------+
| 开发者不承担任何责任,也不对因使用本程序 |
| 造成的任何滥用或损害负责 |
+---------------------------------------------------+
GitMiner v3 是一款模块化工具,专为发现公共 GitHub 仓库中的敏感信息而设计。它使用高级 dork 查询、正则表达式模式匹配,并生成全面的威胁情报报告。
本项目是对原始 Gitminer 脚本的完全重构,专注于可维护性、可扩展性和专业的软件架构原则。
项目采用模块化结构组织,以分离关注点并提高清晰度。
gitminer_v3/
├── config/ # 配置文件
│ ├── paths.yaml # 目录、文件和 API 路径
│ ├── labels.yaml # 参数的正则表达式到标签的映射
│ └── patterns.yaml # 用于机密检测的正则表达式模式
├── data/ # 持久化数据存储
│ └── gitminer_history.sqlite # 用于历史的 SQLite 数据库
├── gitminer/ # 主 Python 包
│ ├── __init__.py
│ ├── config_manager.py # 加载并管理所有配置
│ ├── github_client.py # 处理所有 GitHub API 交互
│ ├── file_manager.py # 管理文件下载和存储
│ ├── pattern_analyzer.py # 扫描文件中的机密信息
│ ├── database.py # 管理 SQLite 数据库操作
│ ├── report_generator.py # 生成 Markdown 报告
│ └── utils.py # 共享工具函数
├── raw/ # 存储从 GitHub 下载的文件
├── reports/ # 存储生成的威胁情报报告
├── gitminer_v3.py # 主可执行脚本
├── requirements.txt # Python 依赖
└── README.md # 本文件
public_repo 权限的 GitHub 个人访问令牌 (PAT)。克隆仓库或下载源代码。
设置你的 GitHub 令牌: GitMiner 需要 GitHub 令牌才能与 API 交互。你必须将其设置为环境变量。
export GITHUB_TOKEN="your_github_personal_access_token_here"
安装所需的 Python 包:
pip install -r requirements.txt
GitMiner 的行为由 config/ 目录中的文件控制。
paths.yaml此文件定义了所有重要的路径和 API 设置。
directories:指定存储原始文件、报告和数据的位置。files:定义数据库和默认 CSV 输出的名称。github:包含 GitHub API 的设置,如 URL、超时时间和默认结果限制。labels.yaml此文件将正则表达式模式映射为人类可读的标签。它主要用于识别代码中的参数名称(例如,ftp_user、api_key)。
# 格式: "regex_pattern": "LABEL_NAME"
"(?i)(api[_\\- ]?key|apikey)": "API_KEY"
"(?i)(password|passwd)": "PASSWORD"
patterns.yaml此文件包含用于检测密钥、令牌和凭据等敏感值的核心正则表达式模式。
# 格式: PATTERN_NAME: "regex_pattern"
GITHUB_TOKEN: "ghp_[A-Za-z0-9_]{36,255}"
AWS_ACCESS_KEY_ID: "AKIA[0-9A-Z]{16}"
主脚本 gitminer_v3.py 是所有操作的入口点。
使用单个 dork 搜索并生成报告:
python3 gitminer_v3.py -d "filename:.env DB_PASSWORD" --report
使用包含多个 dork 的文件进行搜索:
创建一个名为 dorks.txt 的文件:
filename:wp-config.php DB_PASSWORD
filename:settings.py SECRET_KEY
extension:pem private
然后运行命令:
python3 gitminer_v3.py -d dorks.txt -m 500 --report
将所有下载文件的列表导出到 CSV:
python3 gitminer_v3.py -d dorks.txt -o downloaded_files.csv
下载文件但不执行任何分析:
python3 gitminer_v3.py -d dorks.txt --no-analyze
GitMiner 生成多种类型的输出,存储在 raw/、reports/ 和 data/ 目录中。
所有从 GitHub 下载的文件都存储在 raw/ 目录中,按 dork 关键字和仓库名称组织。
raw/
└── DB_PASSWORD/
└── someuser_some-repo/
└── .env
如果使用 --report 标志,将为每个 dork 生成详细的 Markdown 报告,并保存在 reports/ 目录中。这些报告包括:
data/gitminer_history.sqlite 文件包含所有操作的完整历史记录,包括:
search_history:每次执行的 dork 搜索记录。downloaded_files:每个下载文件的元数据。findings:每个发现的机密的详细记录。该数据库可用于长期跟踪和高级分析。
GitMiner v3 设计为易于扩展。
config/patterns.yaml 中添加新条目。config/labels.yaml 中添加新的正则表达式-标签对。gitminer/ 包中模块化、面向对象的代码有完善的文档记录,可以轻松修改或扩展。本项目是开源的,可用于个人和教育用途。请负责任且合乎道德地使用它。作者不对该工具的任何滥用负责。
| 参数 | 短选项 | 描述 | 必需 |
|---|
--dorks | -d | 包含 dork 的文件(每行一个)或单个 dork 字符串。 | 是 |
--token | -t | GitHub 令牌(覆盖 GITHUB_TOKEN 环境变量)。 | 否 |
--max-results | -m | 每个 dork 获取的最大结果数。(默认:200) | 否 |
--per-page | -p | API 每页的结果数。(默认:30,最大:100) | 否 |
--output-csv | -o | 将下载文件的摘要导出到 CSV 文件。 | 否 |
--report | 生成详细的 Markdown 威胁情报报告。 | 否 | |
--no-analyze | 跳过本地文件分析步骤(仅下载文件)。 | 否 |