jdnbwz6fzg-cloud/DarkHunter

GitHub: jdnbwz6fzg-cloud/DarkHunter

一款 Python 渗透测试工具箱,集成 11 个 CLI 子工具用于信息探测、弱口令爆破与 CVE 匹配。

Stars: 5 | Forks: 0

# DarkHunter [![Python](https://img.shields.io/badge/python-3.8%20%7C%203.10%20%7C%203.12-blue)]() [![License: MIT](https://img.shields.io/badge/license-MIT-green)]() [![Version: 1.0.0](https://img.shields.io/badge/version-1.0.0-brightgreen)]() [![Status: Stable](https://img.shields.io/badge/status-stable-blue)]() ## 特性 - **零依赖探测** — `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, 插件系统, 无后门, 服务爆破, 逆向工具