Professional-Grade Asynchronous Reconnaissance Framework
Empowering Bug Bounty Hunters and Security Engineers
# 🛰️ ReconMaster v4.1.0
```
╦═╗╔═╗╔═╗╔═╗╔╗╔╔╦╗╔═╗╔═╗╔╦╗╔═╗╦═╗
╠╦╝║╣ ║ ║ ║║║║║║║╠═╣╚═╗ ║ ║╣ ╠╦╝
╩╚═╚═╝╚═╝╚═╝╝╚╝╩ ╩╩ ╩╚═╝ ╩ ╚═╝╩╚═
```
**ReconMaster** 是一个高性能编排框架,专为深度自动化发现和漏洞评估而设计。它专为速度和可靠性而构建,将行业领先的工具无缝集成到一个统一的异步工作流中。
## 📑 目录
- [核心理念](#-core-philosophy-speed--stealth)
- [专业功能](#-pro-features-v30)
- [快速开始](#-quick-start)
- [安装说明](#-installation--deployment)
- [使用示例](#-usage-examples)
- [配置说明](#-configuration)
- [输出结构](#-output-structure)
- [系统架构](#-architecture)
- [高级功能](#-advanced-features)
- [故障排除](#-troubleshooting)
- [贡献指南](#-contributing)
- [法律声明](#️-legal--ethical-notice)
- [版本追踪](#-version-tracking)
- [更新日志](#-changelog)
## ⚡ 核心理念:速度与隐蔽
ReconMaster 不仅仅是一个封装器,它是一个基于三个基本原则构建的专用编排引擎:
### 🚀 性能优先
- **AsyncIO 并行**:同时执行多个工具的非阻塞执行
- **智能资源管理**:优化的内存使用和 CPU 分配
- **智能缓存**:减少冗余的 API 调用和 DNS 查询
### 🔒 安全加固
- **托管并发**:全局信号量防止网络饱和和系统锁定
- **OpSec 加固**:随机化 User-Agents,用于 WAF 检测的熔断器,以及绝对路径验证
- **零信任架构**:所有输入自动清理和验证(去除空格/尾部点),所有输出均防止路径遍历
- **健壮的清理机制**:严格的 `try/finally` 模式确保所有临时工作区文件被清除,即使在扫描失败时
### 🎯 精准定位
- **范围强制**:所有模块中严格的域名和正则过滤
- **智能路由**:基于发现的技术进行自适应扫描
- **最小足迹**:只在必要时扫描重要内容
## ✨ 专业功能 (v3.0+)
### 🔍 情报与发现
|
#### 多源枚举
- **精英情报**:原生支持 **Censys**、**SecurityTrails** 和 **VT** API。
- **Subfinder**:被动 DNS 聚合(专业配置)
- **Assetfinder**:跨平台资产发现
- **Amass**:高级 DNS 枚举(OSINT 加固)
- **统一去重**:跨所有来源的智能合并
|
#### 高级验证
- **高速 DNS 解析**:由 `dnsx` 驱动
- **HTTP 探测**:智能服务检测
- **证书透明度**:自动化 CT 日志解析
- **技术指纹识别**:深度堆栈识别
|
|
#### 漏洞检测
- **VIP SQLi 扫描器**:高保真原生 SQL 注入检测引擎。
- **Nuclei 集成**:5000+ 模板,实时更新。
- **技术感知策略**:自动分析和定位。
- **CVE 关联**:实时漏洞映射。
|
#### 端点分析
- **Katana 爬取**:针对现代 SPA 优化
- **JS 机密引擎**:提取 API 密钥、令牌、凭证
- **参数发现**:查找隐藏输入和 API
- **路径模糊测试**:智能目录枚举
|
### 🛡️ 强化操作
```
graph LR
A[Request] --> B{Circuit Breaker}
B -->|Open| C[Execute]
B -->|Closed| D[Throttle]
C --> E{Status Code}
E -->|403/429| F[Increment Counter]
F -->|Threshold Met| G[Trigger Breaker]
E -->|200-299| H[Reset Counter]
G --> D
```
- **熔断器逻辑**:在 WAF/速率限制激增 (403/429) 时自动减速或停止
- **子进程清理**:强制进程组终止防止产生孤立的僵尸进程
- **范围强制**:所有模块中严格的域名和正则过滤
- **错误恢复**:带有指数退避的自动重试
- **资源监控**:实时 CPU、内存和网络追踪
- **统一熔断器**:一致的失败阈值(10 个错误)以防止 WAF 阻断。
- **API 模糊测试引擎**:专门发现未记录的端点。
- **敏感路径情报**:针对敏感资产的高速扫描。
- **高级仪表板 2.0**:带有 Chart.js 可视化的交互式 HTML 报告。
- **多云发现**:主动探测 S3、Azure Blob 和 GCP Storage 资产。
### 🔌 扩展性与自动化
插件架构
```
from reconmaster.core import Plugin
class CustomScanner(Plugin):
def __init__(self):
super().__init__(name="custom-scanner")
async def execute(self, target):
# Your custom scanning logic
results = await self.scan(target)
return results
```
**内置插件:**
- WordPress 扫描器
- 云资产发现 (AWS, GCP, Azure)
- GraphQL 自省
- API 端点发现(隐藏路由)
- 敏感文件发现 (QuickHits)
- 自定义模板引擎
每日自动化模式
```
# 持续监控与差异检测
python reconmaster.py -d target.com --daily \
--webhook https://discord.com/api/webhooks/YOUR_WEBHOOK \
--diff-only
```
**功能:**
- 带有状态比较的轻量级监控
- 实时 Discord/Slack/Telegram 告警
- 历史变更追踪
- 自动报告生成
- 误报过滤
CI/CD 集成
**GitHub Actions 支持:**
```
name: Daily Recon
on:
schedule:
- cron: '0 0 * * *'
jobs:
recon:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run ReconMaster
run: |
docker run --rm \
-v ${{ github.workspace }}/results:/app/results \
reconmaster -d ${{ secrets.TARGET }} \
--webhook ${{ secrets.WEBHOOK_URL }}
```
**Jenkins Pipeline 支持**
**GitLab CI/CD 就绪**
**Azure DevOps 兼容**
专业导出
**Burp Suite 站点地图:**
```
python reconmaster.py -d target.com --export-burp
# 生成:burp_sitemap.xml
```
**OWASP ZAP 上下文:**
```
python reconmaster.py -d target.com --export-zap
# 生成:zap_context.xml
```
**自定义格式:**
- JSON(结构化数据)
- XML(工具集成)
- CSV(分析和报告)
- Markdown(人类可读)
- HTML(可视化报告)
## ☁️ GitHub Actions 自动化
ReconMaster 包含高级 GitHub Actions 工作流,用于自动化、计划和触发式侦察。
### 🛡️ ReconMaster 高级安全扫描
最强大的自动化工作流,具有以下特点:
- **授权验证**:确保扫描仅在授权目标上运行。
- **扫描矩阵**:并发扫描多个域名。
- **状态管理**:在运行之间保持扫描状态以进行增量分析。
- **关键发现告警**:在 GitHub 摘要中自动识别高风险发现。
- **制品管理**:摘要报告和完整评估数据的结构化保留。
**设置说明:**
1. 进入仓库 **Settings > Secrets and variables > Actions**。
2. 添加以下 secrets:
- `AUTHORIZED_DOMAINS`:您有权扫描的域名的逗号分隔列表(例如 `example.com,test.com`)。
- `WEBHOOK_URL`:(可选)用于通知的 Discord/Slack webhook。
3. (推荐)创建一个名为 `security-testing` 的环境,并为关键扫描添加所需的审查者。
**手动触发:**
1. 导航到您仓库中的 **Actions** 标签页。
2. 选择 **ReconMaster Advanced Security Scan**。
3. 点击 **Run workflow**,输入目标域名并选择扫描模式。
## 🚀 快速开始
在 2 分钟内开始使用:
```
# 1. 克隆仓库
git clone https://github.com/VIPHACKER100/ReconMaster.git
cd ReconMaster
# 2. 安装依赖
pip install -r requirements.txt
# 3. 运行第一次扫描
python reconmaster.py -d example.com --i-understand-this-requires-authorization
# 4. 查看结果
ls -la recon_results/example.com_*
```
## 🔧 安装与部署
### 前置条件
| 操作系统 |
Linux(推荐 Ubuntu 20.04+)、macOS、Windows (WSL2) |
| Python 版本 |
3.9 至 3.12(官方支持) |
| 内存 |
最低 4GB RAM(推荐 8GB+) |
| 磁盘空间 |
10GB+ 用于工具和结果 |
| 网络 |
稳定的互联网连接 |
### 方法 1:本地安装(开发)
```
# 克隆仓库
git clone https://github.com/VIPHACKER100/ReconMaster.git
cd ReconMaster
# 创建虚拟环境(推荐)
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# 安装 Python 依赖
pip install -r requirements.txt
# 安装外部工具
./install_reconmaster.sh
# 验证安装
python reconmaster.py --version
```
### 方法 2:Docker(推荐用于生产)
```
# 构建镜像
docker build -t reconmaster:latest .
# 运行扫描
docker run --rm \
-v $(pwd)/results:/app/recon_results \
-e TARGET_DOMAIN=example.com \
reconmaster:latest \
-d example.com --i-understand-this-requires-authorization
# 使用自定义配置运行
docker run --rm \
-v $(pwd)/config.yaml:/app/config.yaml \
-v $(pwd)/results:/app/recon_results \
reconmaster:latest \
-d example.com --config /app/config.yaml
```
**Docker Compose:**
```
version: '3.8'
services:
reconmaster:
build: .
volumes:
- ./results:/app/recon_results
- ./config.yaml:/app/config.yaml
environment:
- TARGET_DOMAIN=${TARGET_DOMAIN}
- WEBHOOK_URL=${WEBHOOK_URL}
command: ["-d", "${TARGET_DOMAIN}", "--daily"]
```
### 方法 3:CI/CD 流水线
#### GitHub Actions
1. 复制工作流文件:
```
cp .github/workflows/reconmaster.yml.example .github/workflows/reconmaster.yml
```
2. 在 GitHub Settings 中配置 secrets:
- `RECON_DOMAIN`:目标域名
- `WEBHOOK_URL`:Discord/Slack webhook
- `GITHUB_TOKEN`:自动提供
3. 启用工作流并设置计划
#### GitLab CI
```
# .gitlab-ci.yml
daily_recon:
image: reconmaster:latest
script:
- python reconmaster.py -d $TARGET_DOMAIN --daily --webhook $WEBHOOK_URL
only:
- schedules
```
## 📖 使用示例
### 基础扫描
```
# 标准全面评估
python reconmaster.py -d target.com --i-understand-this-requires-authorization
# 仅被动扫描(无主动探测)
python reconmaster.py -d target.com --passive-only --i-understand-this-requires-authorization
# 激进模式(所有模块,最大深度)
python reconmaster.py -d target.com --aggressive --i-understand-this-requires-authorization
# 快速扫描(仅核心项)
python reconmaster.py -d target.com --quick --i-understand-this-requires-authorization
```
### 高级用法
```
# 包含多个域名的自定义范围
python reconmaster.py -d target.com -d api.target.com -d admin.target.com \
--i-understand-this-requires-authorization
# 使用自定义字典进行子域名枚举
python reconmaster.py -d target.com \
--wordlist /path/to/wordlist.txt \
--i-understand-this-requires-authorization
# 指定输出目录
python reconmaster.py -d target.com \
--output /custom/path/results \
--i-understand-this-requires-authorization
# 仅启用特定模块
python reconmaster.py -d target.com \
--modules subdomain,dns,http \
--i-understand-this-requires-authorization
# 速率限制(每秒请求数)
python reconmaster.py -d target.com \
--rate-limit 10 \
--i-understand-this-requires-authorization
```
### 自动化与监控
```
# 带有 Discord 通知的每日监控
python reconmaster.py -d target.com \
--daily \
--webhook https://discord.com/api/webhooks/YOUR_WEBHOOK \
--i-understand-this-requires-authorization
# 带有变更检测的持续模式
python reconmaster.py -d target.com \
--continuous \
--diff-only \
--notify-on-new \
--i-understand-this-requires-authorization
# 具有自定义间隔(分钟)的计划扫描
python reconmaster.py -d target.com \
--schedule 1440 \
--webhook https://slack.com/webhooks/YOUR_WEBHOOK \
--i-understand-this-requires-authorization
```
### 导出与集成
```
# 导出到 Burp Suite
python reconmaster.py -d target.com \
--export-burp \
--output-format xml \
--i-understand-this-requires-authorization
# 导出到 OWASP ZAP
python reconmaster.py -d target.com \
--export-zap \
--i-understand-this-requires-authorization
# 生成综合报告
python reconmaster.py -d target.com \
--report-format html,json,md \
--i-understand-this-requires-authorization
```
## ⚙️ 配置
### 配置文件 (config.yaml)
```
# 目标配置
targets:
domains:
- example.com
- api.example.com
scope:
- "*.example.com"
- "example.*"
exclusions:
- "test.example.com"
- "dev.example.com"
# 扫描选项
scan:
passive_only: false
aggressive: false
rate_limit: 50 # requests per second
timeout: 30 # seconds
retries: 3
delay: 1 # seconds between requests
# 模块配置
modules:
subdomain:
enabled: true
sources: [subfinder, assetfinder, amass]
wordlist: /path/to/wordlist.txt
dns:
enabled: true
resolvers: /path/to/resolvers.txt
validate: true
http:
enabled: true
follow_redirects: true
verify_ssl: false
screenshot: true
vuln:
enabled: true
nuclei_templates: /path/to/templates
severity: [critical, high, medium]
endpoint:
enabled: true
crawl_depth: 3
extract_js: true
# 通知设置
notifications:
discord:
enabled: false
webhook: ""
slack:
enabled: false
webhook: ""
telegram:
enabled: false
bot_token: ""
chat_id: ""
email:
enabled: false
smtp_server: ""
smtp_port: 587
from: ""
to: []
# 输出设置
output:
directory: ./recon_results
formats: [json, md, html]
verbose: true
save_logs: true
# 高级选项
advanced:
circuit_breaker:
enabled: true
threshold: 5
timeout: 300 # seconds
resource_limits:
max_memory: 8192 # MB
max_cpu: 80 # percentage
proxy:
enabled: false
http: ""
https: ""
custom_headers:
User-Agent: "ReconMaster/4.0.0-Titan"
```
### 环境变量
```
# 目标配置(支持多个名称以兼容)
export RECON_TARGET="example.com"
export RECON_DOMAIN="example.com"
export TARGET_DOMAIN="example.com"
# 用于通知的 Webhook
export WEBHOOK_URL="https://discord.com/api/webhooks/YOUR_WEBHOOK"
# API 密钥(如有需要)
export SHODAN_API_KEY="your_key_here"
export CENSYS_API_ID="your_id_here"
export CENSYS_API_SECRET="your_secret_here"
export SECURITYTRAILS_API_KEY="your_key_here"
export VIRUSTOTAL_API_KEY="your_key_here"
# 输出目录
export RECON_OUTPUT_DIR="/path/to/results"
# 速率限制
export RECON_RATE_LIMIT="50"
# 详细程度 (0-3)
export RECON_VERBOSE="2"
```
## 📁 输出结构
结果按层次结构组织,便于导航:
```
recon_results/
└── target.com_2026-02-09_14-30-00/
├── 📊 summary.json # Scan overview and statistics
├── 📝 executive_report.md # Human-readable summary
├── 🌐 full_report.html # Interactive HTML report
│
├── subdomains/
│ ├── all_subdomains.txt # Complete list
│ ├── live_subdomains.txt # Validated active hosts
│ ├── subfinder.txt # Source-specific results
│ ├── assetfinder.txt
│ ├── amass.txt
│ └── dns_records.json # Comprehensive DNS data
│
├── http/
│ ├── alive.txt # Active HTTP/HTTPS services
│ ├── httpx_full.json # Detailed probe results
│ ├── technologies.json # Detected tech stack
│ └── certificates.json # SSL/TLS certificate info
│
├── vulns/
│ ├── nuclei_results.json # All vulnerability findings
│ ├── critical.txt # Critical severity only
│ ├── high.txt # High severity
│ ├── medium.txt # Medium severity
│ ├── low.txt # Low severity
│ └── exposed_secrets.txt # API keys, tokens, credentials
│
├── endpoints/
│ ├── all_urls.txt # Complete URL list
│ ├── parameters.txt # Discovered parameters
│ ├── api_endpoints.txt # API routes
│ ├── admin_panels.txt # Admin interfaces
│ └── crawl_tree.json # Site structure
│
├── js/
│ ├── javascript_files.txt # All JS files
│ ├── secrets.txt # Extracted secrets
│ ├── endpoints.txt # JS-discovered endpoints
│ └── analysis/ # Detailed JS analysis
│ ├── file1_analysis.json
│ └── file2_analysis.json
│
├── screenshots/
│ ├── target.com.png
│ ├── api.target.com.png
│ └── admin.target.com.png
│
├── exports/
│ ├── burp_sitemap.xml # Burp Suite import
│ ├── zap_context.xml # ZAP import
│ └── nuclei_sarif.json # SARIF format for IDEs
│
└── logs/
├── scan.log # Complete scan log
├── errors.log # Error events
└── debug.log # Debug information
```
### 报告格式
#### JSON 输出 (`summary.json`)
```
{
"scan_info": {
"target": "example.com",
"start_time": "2026-02-09T14:30:00Z",
"end_time": "2026-02-09T15:45:00Z",
"duration": "1h 15m 0s",
"version": "3.1.0"
},
"statistics": {
"subdomains_found": 127,
"live_hosts": 89,
"vulnerabilities": 23,
"endpoints_discovered": 456,
"js_files_analyzed": 34
},
"findings": {
"critical": 3,
"high": 8,
"medium": 12,
"low": 15,
"info": 47
}
}
```
#### Markdown 报告 (`executive_report.md`)
包含发现、统计和建议的专业摘要
#### HTML 报告 (`full_report.html`)
带有图表、图形和过滤功能的交互式仪表板
## 🏗️ 架构
### 系统设计
```
┌─────────────────────────────────────────────────────────────┐
│ ReconMaster Core │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Scheduler │───▶│ Orchestrator│───▶│ Reporter │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Task Manager │ │Circuit Breaker│ │ Exporter │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌────────────────┐ ┌────────────┐ ┌────────────────┐
│ Discovery │ │ Validation│ │ Exploitation │
│ Module │ │ Module │ │ Module │
├────────────────┤ ├────────────┤ ├────────────────┤
│ • Subfinder │ │ • DNSX │ │ • Nuclei │
│ • Assetfinder │ │ • HTTPx │ │ • Katana │
│ • Amass │ │ • TLS Scan │ │ • JS Analysis │
│ • CT Logs │ │ • Port Scan│ │ • Custom Scans │
└────────────────┘ └────────────┘ └────────────────┘
```
### 异步工作流
```
async def reconnaissance_pipeline(target):
# Phase 1: Discovery (Parallel)
subdomains = await asyncio.gather(
run_subfinder(target),
run_assetfinder(target),
run_amass(target)
)
# Phase 2: Validation (Throttled)
live_hosts = await validate_hosts(
merge_subdomains(subdomains),
max_concurrent=50
)
# Phase 3: Analysis (Adaptive)
results = await asyncio.gather(
analyze_http(live_hosts),
scan_vulnerabilities(live_hosts),
crawl_endpoints(live_hosts)
)
# Phase 4: Reporting
await generate_reports(results)
```
### 模块系统
```
class ReconModule:
"""Base class for all recon modules"""
def __init__(self, name, config):
self.name = name
self.config = config
self.semaphore = asyncio.Semaphore(config.max_concurrent)
async def execute(self, target):
"""Execute module logic"""
async with self.semaphore:
return await self._run(target)
async def _run(self, target):
"""Override in subclasses"""
raise NotImplementedError
```
## 🎯 高级功能
### 熔断器模式
自动检测并处理速率限制:
```
class CircuitBreaker:
def __init__(self, threshold=5, timeout=300):
self.failure_count = 0
self.threshold = threshold
self.timeout = timeout
self.state = "CLOSED"
async def call(self, func, *args):
if self.state == "OPEN":
if time.time() - self.open_time > self.timeout:
self.state = "HALF_OPEN"
else:
raise CircuitOpenError()
try:
result = await func(*args)
if self.state == "HALF_OPEN":
self.state = "CLOSED"
self.failure_count = 0
return result
except RateLimitError:
self.failure_count += 1
if self.failure_count >= self.threshold:
self.state = "OPEN"
self.open_time = time.time()
raise
```
### 智能缓存
减少冗余操作:
```
from functools import lru_cache
import aiofiles
import json
class CacheManager:
def __init__(self, cache_dir=".cache"):
self.cache_dir = cache_dir
async def get(self, key):
cache_file = f"{self.cache_dir}/{key}.json"
if os.path.exists(cache_file):
async with aiofiles.open(cache_file, 'r') as f:
return json.loads(await f.read())
return None
async def set(self, key, value, ttl=3600):
cache_file = f"{self.cache_dir}/{key}.json"
async with aiofiles.open(cache_file, 'w') as f:
await f.write(json.dumps({
'data': value,
'expires': time.time() + ttl
}))
```
### 自定义插件开发
创建您自己的扫描模块:
```
from reconmaster.core import Plugin, PluginResult
class WordPressScanner(Plugin):
"""Custom WordPress vulnerability scanner"""
def __init__(self):
super().__init__(
name="wordpress-scanner",
version="1.0.0",
description="WordPress vulnerability detection"
)
async def execute(self, target):
# Check if WordPress is present
is_wp = await self.detect_wordpress(target)
if not is_wp:
return PluginResult(success=False, message="Not a WordPress site")
# Enumerate plugins
plugins = await self.enumerate_plugins(target)
# Check for vulnerabilities
vulns = await self.check_vulnerabilities(plugins)
return PluginResult(
success=True,
data={'plugins': plugins, 'vulnerabilities': vulns}
)
async def detect_wordpress(self, target):
# Implementation
pass
```
## 🔍 故障排除
### 常见问题
找不到工具错误
**问题:** `subfinder: command not found`
**解决方案:**
```
# 安装缺失的工具
./scripts/install_tools.sh
# 或单独安装
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
```
权限被拒绝
**问题:** `Permission denied: /usr/local/bin/tool`
**解决方案:**
```
# 以提升的权限运行
sudo ./scripts/install_tools.sh
# 或更改安装目录
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
```
速率限制 / WAF 检测
**问题:** 扫描因 429/403 错误停止
**解决方案:**
```
# 降低速率限制
python reconmaster.py -d target.com --rate-limit 5
# 使用被动模式
python reconmaster.py -d target.com --passive-only
# 增加延迟
python reconmaster.py -d target.com --delay 2
```
内存问题
**问题:** `MemoryError` 或系统变慢
**解决方案:**
```
# 限制并发任务
python reconmaster.py -d target.com --max-concurrent 10
# 禁用重型模块
python reconmaster.py -d target.com --modules subdomain,dns,http
# 使用带有资源限制的 Docker
docker run --memory="4g" --cpus="2" reconmaster ...
```
Docker 问题
**问题:** 容器无法启动
**解决方案:**
```
# 检查 Docker 安装
docker --version
# 重建镜像
docker build --no-cache -t reconmaster .
# 检查日志
docker logs
# 使用详细输出运行
docker run -e RECON_VERBOSE=3 reconmaster ...
```
### 调试模式
启用详细日志记录:
```
# 最大详细程度
python reconmaster.py -d target.com --verbose 3 --debug
# 保存调试日志
python reconmaster.py -d target.com --save-logs --log-level DEBUG
# 实时监控
tail -f recon_results/*/logs/scan.log
```
### 获取帮助
1. **查看文档**:[https://github.com/VIPHACKER100/ReconMaster/wiki](https://github.com/VIPHACKER100/ReconMaster/wiki)
2. **搜索 Issues**:[https://github.com/VIPHACKER100/ReconMaster/issues](https://github.com/VIPHACKER100/ReconMaster/issues)
3. **询问社区**:[https://discord.gg/reconmaster](https://discord.gg/reconmaster)
4. **报告 Bug**:[https://github.com/VIPHACKER100/ReconMaster/issues/new](https://github.com/VIPHACKER100/ReconMaster/issues/new)
## 🤝 贡献
我们欢迎您的贡献!以下是入门方法:
### 开发设置
```
# Fork 并克隆
git clone https://github.com/YOUR_USERNAME/ReconMaster.git
cd ReconMaster
# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate
# 安装开发依赖
pip install -r requirements-dev.txt
# 安装 pre-commit hooks
pre-commit install
# 运行测试
pytest tests/
```
### 代码风格
我们遵循 PEP 8,并进行了一些修改:
```
# 良好
async def scan_subdomain(target: str, timeout: int = 30) -> List[str]:
"""
Enumerate subdomains for a given target.
Args:
target: Domain to scan
timeout: Maximum execution time in seconds
Returns:
List of discovered subdomains
"""
results = []
async with aiohttp.ClientSession() as session:
# Implementation
pass
return results
# 糟糕
def scan(t):
# No type hints, no docstring
r = []
# Implementation
return r
```
### Pull Request 流程
1. **创建功能分支**:`git checkout -b feature/amazing-feature`
2. **进行更改**:遵循代码风格并添加测试
3. **运行测试**:`pytest tests/ && flake8`
4. **提交**:`git commit -m "Add amazing feature"`
5. **推送**:`git push origin feature/amazing-feature`
6. **开启 PR**:描述更改并链接任何相关问题
### 贡献领域
- 🐛 **Bug 修复**:查看 [未解决的 issues](https://github.com/VIPHACKER100/ReconMaster/issues)
- ✨ **新功能**:在 [讨论区](https://github.com/VIPHACKER100/ReconMaster/discussions) 提议
- 📝 **文档**:改进指南,添加示例
- 🧪 **测试**:增加覆盖率,添加边缘情况
- 🔌 **插件**:创建新的扫描模块
- 🌐 **翻译**:帮助翻译文档
## ⚖️ 法律与道德声明
⚠️ 关键:使用前请阅读 ⚠️
**ReconMaster** 是一个功能强大的侦察工具,专为**合法、授权的安全测试**而设计。
### 法律要求
✅ **您必须拥有:**
- 目标所有者的书面授权
- 执行安全测试的明确许可
- 清晰的范围定义和界限
- 遵守当地法律法规
❌ **您严禁:**
- 未经许可扫描系统
- 超出授权范围
- 造成损害或中断
- 访问或窃取数据
- 违反计算机欺诈法律
### 免责声明
```
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```
作者不承担以下责任:**
- 工具的滥用或误用
- 未经授权扫描造成的损害
- 非法活动的法律后果
- 数据丢失或系统中断
- 因使用而产生的任何其他损害
### 负责任的披露
如果您使用 ReconMaster 发现了漏洞:
1. **不要利用**:切勿将漏洞利用超出概念验证范围
2. **负责任地报告**:遵循协同披露实践
3. **尊重隐私**:不要访问或保留敏感数据
4. **妥善记录**:保留详细的发现记录
5. **遵循准则**:遵守漏洞赏金计划规则
### 确认
使用 ReconMaster 即表示您确认已阅读、理解并同意本法律声明。您对自己的行为承担全部责任,并同意仅在获得适当授权的情况下将本工具用于合法目的。
需要使用 `--i-understand-this-requires-authorization` 标志来确认这些条款。
## 📊 版本追踪
### 发布信息
| 版本 |
支持状态 |
| v3.1.0 |
✅ 当前版本 |
| v3.0.0 |
✅ 支持 |
| v2.0.0 LTS |
✅ LTS |
| v1.0.0 |
❌ EOL |
### 支持政策
- **当前版本**:全面支持,积极开发
- **LTS 版本**:仅安全更新和关键错误修复
- **EOL 版本**:无支持,建议升级
### 升级路径
```
# 从 v2.x 到 v3.x
git pull origin main
pip install -r requirements.txt --upgrade
python reconmaster.py --migrate-config
# 从 v1.x 到 v3.x
# 需要手动迁移配置
python scripts/migrate_v1_to_v3.py
```
## 📝 更新日志
### v3.1.0 - 当前
**新功能:**
- 🚀 增强的异步性能,改进了并发控制
- 🔌 插件系统 v2.0,支持热重载
- 📊 高级 HTML 报告,带有交互式图表
- 🔒 改进的 OpSec,具有随机化时间和 User-Agent 轮换
- 🌐 多语言支持(EN, ES, FR, DE)
**改进:**
- ⚡ 子域枚举速度提高 40%
- 🎯 更好的范围过滤,支持正则表达式
- 💾 内存占用减少 25%
- 🔍 增强的 JavaScript 分析引擎
- 📝 全面的文档更新
**错误修复:**
- 修复了熔断器误报
- 解决了 Docker 卷权限问题
- 修正了报告中的时区处理
- 修复了持续模式下的内存泄漏
**安全性:**
- 将所有依赖项更新至最新版本
- 修补了插件系统中潜在的命令注入
- 增强了输入清理
### v3.0.0
**重大更改:**
- 使用 async/await 架构完全重写
- 用于扩展性的新插件系统
- 熔断器实现
- 专业导出格式(Burp, ZAP)
- 每日自动化模式
### v2.0.0 LTS
**功能:**
- 多源子域枚举
- Nuclei 集成
- 基础 Docker 支持
- Markdown 报告
### v1.0.0
**初始发布:**
- 核心侦察功能
- 基础工具编排
- 简单报告
## 🌟 致谢
ReconMaster 站在巨人的肩膀上。特别感谢:
- **ProjectDiscovery** - 提供了 Nuclei、Subfinder、HTTPx、Katana 和其他惊人的工具
- **OWASP** - 提供了 Amass 和安全标准
- **TomNomNom** - 提供了 Assetfinder 和灵感
- **Bug Bounty 社区** - 提供了持续的反馈和功能请求
- **开源贡献者** - 让这个项目变得更好
### 集成工具
- [Subfinder](https://github.com/projectdiscovery/subfinder)
- [Assetfinder](https://github.com/tomnomnom/assetfinder)
- [Amass](https://github.com/OWASP/Amass)
- [DNSX](https://github.com/projectdiscovery/dnsx)
- [HTTPx](https://github.com/projectdiscovery/httpx)
- [Nuclei](https://github.com/projectdiscovery/nuclei)
- [Katana](https://github.com/projectdiscovery/katana)
## 📞 联系与支持
### 联系我们
[](https://github.com/VIPHACKER100)
[](https://twitter.com/viphacker100)
[](https://discord.gg/reconmaster)
[](mailto:viphacker100@protonmail.com)
### 💖 支持项目
如果 ReconMaster 在您的 Bug Bounty 之旅或安全研究中帮助了您:
[](https://github.com/VIPHACKER100/ReconMaster)
[](https://github.com/sponsors/VIPHACKER100)
**由 [VIPHACKER100 ( Aryan Ahirwar )](https://github.com/VIPHACKER100) 用 ❤️ 开发**
为安全社区用 🔥 构建 | 采用 MIT 许可