jdnbwz6fzg-cloud/DarkHunter
GitHub: jdnbwz6fzg-cloud/DarkHunter
一款 Python 渗透测试工具箱,集成 11 个 CLI 子工具用于信息探测、弱口令爆破与 CVE 匹配。
Stars: 5 | Forks: 0
# DarkHunter
[]()
[]()
[]()
[]()
## 特性
- **零依赖探测** — `recon/*` 6 个工具全部走 Python 标准库 (socket / urllib / struct)
- **手写协议爆破** — `brute/*` 5 个工具自写 MySQL v10 / Redis RESP2 / SSH (paramiko) / Web (urllib3) 协议 + 凭据横移
- **服务指纹 + CVE 匹配** — scan-port 加 `--service` / `--cve` flag 抓 banner 查静态 CVE 表 (~200 条覆盖 14 常见服务/框架)
- **Web 应用指纹** — `scan-fingerprint` 识别 RuoYi / WordPress / Spring Boot / ThinkPHP / Laravel / Struts2 / Drupal / Joomla / Tomcat 等 9 类框架
- **凭据横移复用** — `brute-reuse` 把一个命中凭据自动投到目标网段所有支持端口 (ssh/mysql/redis/web)
- **统一并发模型** — `ThreadPoolExecutor + as_completed` + per-worker jitter, 避免频率检测
- **统一结果落盘** — `tools.result_writer` POSIX 0600 + Windows `icacls` 自动收紧 ACL
- **统一 4 态语义** — FOUND/SUCCESS · NOT_FOUND/DENIED · UNREACHABLE · ERROR
- **跨 Python 版本** — 3.8 / 3.10 / 3.12 双跑通过, 不依赖 3.10+ 语法
- **统一调度入口** — `darkhunter` 命令一键列出/调度 12 个子工具
## 子工具一览
| 类别 | 子工具 | 功能 | 协议/库 |
|------|--------|------|---------|
| 探测 | `scan-host` | 内网主机存活扫描 (ICMP ping) | 标准库 subprocess |
| 探测 | `scan-port` | TCP 端口扫描 (真实 connect) | 标准库 socket |
| 探测 | `scan-dir` | HTTP 目录/路径扫描 | 标准库 urllib |
| 探测 | `scan-subdomain` | 子域+DNS 解析 | 标准库 socket.gethostbyname |
| 探测 | `scan-ip2domain` | IP 反查域名 (PTR + crt.sh) | 标准库 + 可选 HTTPS |
| 探测 | `scan-fingerprint` | Web 应用指纹识别 (CMS/框架/版本) | 标准库 urllib |
| 爆破 | `mysql-brute` | MySQL 弱口令爆破 | 自写 v10 协议 |
| 爆破 | `redis-brute` | Redis 弱口令爆破 | 自写 RESP2 协议 |
| 爆破 | `ssh-brute` | SSH 弱口令爆破 | paramiko |
| 爆破 | `web-brute` | Web 表单登录爆破 | urllib3 + UA + 89ip 代理 |
| 爆破 | `brute-reuse` | 凭据横移复用 (一个命中自动投到目标网段所有端口) | 复用 4 个 brute 协议层 |
## 快速开始
### 0. 创建虚拟环境 (推荐)
cd D:\Woniu\DarkHunter
python -m venv venv
.\venv\Scripts\Activate.ps1
### 1. 安装依赖 (两种方式任选)
**方式 A**: 可编辑安装 (推荐, 自动注册 12 个 console_script)
pip install -e .
安装后任意目录可执行:
scan-host -H 192.168.88.0/24
scan-port -H target.com --top 100 --service --cve
scan-fingerprint -H target.com --cve
web-brute -H target.com --port 8080
brute-reuse --cred root:666888 --target 192.168.88.0/24 --ports 22,3306
**方式 B**: 手动装依赖 (无需安装项目, 直接 `python darkhunter.py` 也能跑)
pip install -r requirements.txt
python darkhunter.py scan-host -H 192.168.88.0/24
### 2. 调用子工具
**通过统一入口 `darkhunter`** (任意目录):
darkhunter # 列出全部 12 个子工具
darkhunter scan-host --help # 查看 scan-host 参数
darkhunter scan-host -H 192.168.88.0/24 -t 200 --output alive.txt
darkhunter scan-fingerprint -H 192.168.88.66 --port 8080 --cve # 识别 RuoYi + 查 CVE
darkhunter scan-port -H 192.168.88.66 -p 22,3306,6379 --service # 抓 banner
darkhunter web-brute -H target.com --port 8080 --path /login
darkhunter brute-reuse --cred root:666888 --target 192.168.88.0/24 --ports 22,3306
**通过独立子命令** (需 `pip install -e .`):
scan-host -H 192.168.88.0/24
web-brute -H target.com --port 8080
**直接跑脚本** (无需安装):
cd recon
python scan_host.py -H 192.168.88.0/24
cd ..\brute
python web_brute.py -H target.com --port 8080
## 目录结构
DarkHunter/
├── darkhunter.py # 顶层统一调度入口 (console_script: darkhunter)
├── pyproject.toml # PEP 621 项目元数据 + console_scripts 注册
├── README.md # 本文件
├── QUICKSTART.md # 5 分钟速查表
├── LICENSE # MIT
├── requirements.txt # 运行依赖: paramiko + urllib3
├── requirements-dev.txt # 开发依赖: pytest / flake8
├── .gitignore # Python 标准 + 项目特定
│
├── recon/ # 5 个探测 CLI
│ ├── __init__.py # 触发 recon.tools 副作用注册
│ ├── scan_host.py # ICMP ping (console_script: scan-host)
│ ├── scan_port.py # TCP connect (console_script: scan-port)
│ ├── scan_dir.py # HTTP 目录 (console_script: scan-dir)
│ ├── scan_subdomain.py # DNS 解析 (console_script: scan-subdomain)
│ ├── scan_ip2domain.py # PTR 反查 (console_script: scan-ip2domain)
│ └── tools/ # 探测子包内部工具 (7 模块)
│ ├── __init__.py # ast 拓扑排序 + 双注册 (darkhunter 修复)
│ ├── address_tool.py
│ ├── host_scanner.py
│ ├── port_scanner.py
│ ├── dir_scanner.py
│ ├── subdomain_scanner.py
│ ├── ip2domain_scanner.py
│ └── scan_result.py
│
├── brute/ # 4 个爆破 CLI
│ ├── __init__.py
│ ├── mysql_brute.py # 自写 v10 协议 (console_script: mysql-brute)
│ ├── redis_brute.py # 自写 RESP2 (console_script: redis-brute)
│ ├── ssh_brute.py # paramiko (console_script: ssh-brute)
│ ├── web_brute.py # urllib3 (console_script: web-brute)
│ └── tools/ # 爆破子包内部工具 (13 模块)
│ ├── __init__.py # ast 拓扑排序 + 双注册 (darkhunter 修复)
│ ├── brute_runner.py # 通用主循环 (delay / max_errors / 进度日志)
│ ├── login_result.py # 4 态枚举
│ ├── mysql_raw_client.py
│ ├── mysql_utils.py
│ ├── redis_raw_client.py
│ ├── redis_utils.py
│ ├── socket_split.py # 协议层大包拆分发送
│ ├── ssh_tools.py
│ ├── web_client.py
│ ├── web_utils.py
│ ├── web_autodetect.py # 自动识别 method/format/字段名/CSRF/vcode
│ ├── proxy_89ip.py # 89ip 免费代理池
│ └── vcode_solver.py # ddddocr 验证码识别 (按需安装)
│
├── tools/ # 跨子项目共享核心 (5 模块)
│ ├── __init__.py
│ ├── dict_loader.py # 字典加载 (用户/密码/端口/UA/子域)
│ ├── result_writer.py # 落盘 + ACL 收紧 + 凭据 mask
│ ├── redis_brute_io.py # Redis RESP 协议层封装
│ └── _shared_loader.py # 原始 shared-tools 机制 (参考)
│
├── wordlists/ # 内置字典 (12 个)
│ ├── subdomains_top200.txt
│ ├── subdomains_top1000.txt
│ ├── subdomains_wydomain_3000.txt
│ ├── dirs_400.dict
│ ├── dirs_1000.dict
│ ├── dirs_api.txt
│ ├── dirs_springboot_actuator.txt
│ ├── nmap-ports-top1000.txt
│ ├── tcp_ports.txt
│ ├── common-http-ports.txt
│ ├── rce_ports.txt
│ └── useragents.dict
│
├── document/ # 开发规范与方案文档
│ ├── 开发规范(本项目).md
│ └── 开发计划(方案)/
│ ├── 2026-06-26-python_tool独立项目化方案.md
│ ├── 2026-06-26-web_brute-3.8兼容重构方案.md
│ └── 2026-06-26-IP反查域名探测方案.md
│
└── USAGE.md # 各子工具详细参数文档
## 子项目导入机制 (darkhunter 修复)
源项目 `python_tool` 的 `recon/tools/__init__.py` 和 `brute/tools/__init__.py` 原本只通过
`SHARED_TOOLS = ("result_writer", "dict_loader", "redis_brute_io")` 这 3 个共享模块 re-export
到 `sys.modules['tools.']`, 但子工具实际 `from tools.X` 导入的本地模块 (如
`tools.address_tool`、`tools.host_scanner`、`tools.mysql_utils` 等) **全部未注册**,
导致 `python recon/scan_host.py` 在标准 Python 路径下全部 `ModuleNotFoundError`。
darkhunter 修复:
- 改为 `ast` 解析所有 `from tools.X / from .X` 导入, 构建依赖图
- Kahn 算法拓扑排序后按序 exec, 解决模块间依赖
- 双注册: `recon.tools.` **和** `tools.`, 兼容原代码写法
- 仍保留 3 个父级共享模块的 re-export, 跨子项目共享不变
## 系统要求
- **Python**: 3.8 / 3.10 / 3.12 (均已验证)
- **平台**: Windows / Linux / macOS
- **运行时依赖**: `paramiko>=3.0` (SSH) / `urllib3>=1.21` (HTTP)
- **可选依赖**: `ddddocr>=1.5` (验证码识别, 仅 `web-brute --vcode` 需要)
## 安全声明
本项目仅用于**已获明确书面授权**的渗透测试、安全评估、CTF 比赛等合法场景。
未经授权对计算机系统进行攻击、扫描、爆破等行为违反《网络安全法》《刑法》等法律法规,
由此产生的一切后果由使用者自行承担。项目作者不承担任何责任。
## 许可证
[MIT](LICENSE)
标签:Python, 插件系统, 无后门, 服务爆破, 逆向工具