Mr-Destroyer/CredStalker-
GitHub: Mr-Destroyer/CredStalker-
一款自动化网站凭据与敏感数据扫描器,通过爬取和正则匹配帮助安全人员在目标网站中发现暴露的密钥、密码和 Token 等敏感信息。
Stars: 1 | Forks: 0
# 🔍 凭据与敏感数据扫描器
一款强大的 Python 工具,能够爬取网站并自动检测暴露的凭据、API key、密码、token 和其他敏感数据。非常适合用于安全审计、Bug Bounty 搜寻和渗透测试。



## 📸 截图
### 1. 扫描器横幅与爬取过程

*展示了包含作者信息的精美横幅,以及在 verbose 模式下的爬取过程*
### 2. Verbose 模式 - 实时检测

*演示了 verbose 模式,展示每个正在爬取的 URL 以及实时发现的敏感数据*
### 3. 扫描结果摘要报告

*详细的结果报告,展示了检测到的密码、用户名和混淆字符串及其位置*
## ✨ 功能特性
- 🔐 **多类型检测**:查找 API key、密码、用户名、Bearer Token、数据库 URL、私钥、AWS key、电子邮件、信用卡等
- 🕷️ **Web Crawler**:通过跟踪链接自动爬取网站(可配置深度)
- 📄 **深度内容分析**:扫描 HTML、JavaScript 和 HTML 注释以查找敏感数据
- 🎯 **基于 Regex 的模式匹配**:使用行业标准模式检测各种凭据格式
- 📊 **详细报告**:输出格式清晰,结果按类型分类整理
- 💾 **导出功能**:将结果保存为 JSON 以供进一步分析
- 🔄 **同域名爬取**:仅在目标域名内进行爬取,以确保符合授权范围
- 🚀 **性能优化**:可配置深度限制的高效爬取
- 🔇 **Verbose 模式**:提供可选的详细日志记录以供调试
## 🎯 检测能力
| 类别 | 检测内容 |
|----------|-----------------|
| **API Key** | API key 和 token(20+ 字符的变体) |
| **密码** | 硬编码的密码和密码输入框 |
| **用户名** | 用户名、管理员账户、登录凭据 |
| **Bearer Token** | 身份验证 token 和 bearer token |
| **数据库 URL** | MongoDB URI、SQL 连接字符串 |
| **私钥** | RSA、EC 和其他私钥格式 |
| **AWS Key** | AWS Access Key ID(AKIA 格式) |
| **电子邮件** | 跨所有页面的电子邮件地址 |
| **信用卡** | 16 位信用卡号(掩码格式) |
| **Webhook** | Webhook URL 和 hook endpoint |
| **混淆字符串** | JavaScript 中经过编码/反转的字符串 |
## 📋 环境要求
- Python 3.7 或更高版本
- 网络连接
- 目标网站必须可访问
## 🚀 安装说明
### 1. 克隆仓库
```
git clone https://github.com/Mr-Destroyer/credential-scanner.git
cd credential-scanner
```
### 2. 安装依赖项
```
pip install -r requirements.txt
```
或手动安装:
```
pip install requests beautifulsoup4
```
## 💻 使用说明
### 基础扫描
```
python credential_scanner.py http://example.com
```
### 进阶用法
#### 自定义爬取深度
```
# 最多扫描 5 层深度(默认为 3)
python credential_scanner.py http://example.com --depth 5
```
#### 启用 Verbose 模式
```
# 查看正在抓取的每个 URL 的详细输出
python credential_scanner.py http://example.com --verbose
```
#### 将结果导出为 JSON
```
# 将发现结果保存到 JSON 文件以供分析
python credential_scanner.py http://example.com --export findings.json
```
#### 组合使用选项
```
# 使用所有选项进行全面扫描
python credential_scanner.py http://example.com --depth 5 --verbose --export findings.json
```
### 命令行参数
| 参数 | 描述 | 默认值 |
|----------|-------------|---------|
| `` | **必填。** 目标网站 URL | - |
| `--depth ` | 最大爬取深度 | 3 |
| `--verbose` | 启用详细日志记录 | 禁用 |
| `--export ` | 将扫描结果导出为 JSON 文件 | 无 |
## 📊 输出示例
### 控制台输出
```
════════════════════════════════════════════════════════
🔍 Starting scan on: http://example.com
════════════════════════════════════════════════════════
════════════════════════════════════════════════════════
🚨 FINDINGS SUMMARY
════════════════════════════════════════════════════════
📌 API_KEY (2 found):
────────────────────────────────────────────────────
[1] URL: http://example.com/admin/config.js
Source: JavaScript
Match: api_key = "sk_live_1234567890abcdef"
[2] URL: http://example.com/api/settings
Source: HTML
Match: apikey: "AIzaSyD1234567890abcdef"
════════════════════════════════════════════════════════
📊 Total findings: 2
════════════════════════════════════════════════════════
```
### JSON 导出格式
```
{
"api_key": [
{
"url": "http://example.com/admin/config.js",
"type": "api_key",
"match": "api_key = \"sk_live_1234567890abcdef\"",
"source": "JavaScript"
}
],
"password": [
{
"url": "http://example.com/login",
"type": "password",
"match": "password = \"SecurePass123\"",
"source": "HTML"
}
]
}
```
## 🔒 安全与道德准则
⚠️ **重要提示**:此工具仅应用于您拥有或获得明确测试授权的网站。
- **仅限授权测试**:仅扫描您已获得测试许可的网站
- **负责任的漏洞披露**:如果您发现真实的凭据,请负责任地向网站所有者报告
- **严禁恶意使用**:不得将此工具用于未经授权的访问或非法目的
- **数据谨慎处理**:请妥善处理导出的扫描结果,其中可能包含敏感信息
## 🛠️ 工作原理
1. **初始化**:扫描器使用伪造的 user agent 创建一个 session
2. **爬取**:从目标 URL 开始,跟踪内部链接直至达到最大深度
3. **内容分析**:
- 从 `