divyadeepmishra/SubDomain_Enumeration_Tool

GitHub: divyadeepmishra/SubDomain_Enumeration_Tool

Wazwaan 是一款基于 Web 的子域名枚举工具,结合证书透明度被动查询与 DNS 暴力破解主动扫描,帮助安全研究人员发现并存活检测目标域名的隐藏子域。

Stars: 0 | Forks: 0

# Wazwaan - 子域名枚举工具 Wazwaan 是一个基于 Web 的子域名侦察工具。你只需提供一个域名(例如 `example.com`),它就能找出隐藏在其下的所有子域名——比如 `mail.example.com`、`api.example.com`、`dev.example.com` 等。 “Wazwaan”这个名字源于传统的克什米尔多道菜肴盛宴。这个比喻的意思是,每一个被发现的子域名就像是一道“菜肴”,被一一端到你面前。 本项目是作为**道德黑客与网络精通(Ethical Hacking & Network Mastery)**课程的一部分而开发的。 ## 它的实际功能是什么? 当你输入一个域名时,Wazwaan 会执行两项操作: ### 1. 被动扫描(证书透明度) 它会查询一个名为 [crt.sh](https://crt.sh) 的公共数据库,该数据库记录了所有已签发的 SSL 证书。如果有人为 `staging.example.com` 创建了证书,它就会出现在这里。这被称为**被动**扫描,因为我们没有向目标发送任何流量——我们只是在查阅公开记录。 ### 2. 主动扫描(DNS 暴力破解) 它会获取一个包含约 60 个常见子域名(例如 `www`、`mail`、`api`、`admin`、`dev`、`staging`)的列表,并尝试通过 DNS 逐一查找。如果 `admin.example.com` 解析到了一个 IP 地址,这就说明它是存在的。这被称为**主动**扫描,因为我们实际上发送了 DNS 查询请求。 在找到子域名后,它还会进行快速的**存活检查**——通过 HTTP 请求逐一 ping,以查看它们是否真正在提供网站服务。 ### 两种模式 - **演示模式(Demo Mode)** —— 使用虚拟的模拟数据来模拟扫描。适合用于测试和演示。不会发起任何真实的网络请求。 - **实战模式(Live Mode)** —— 真正去查询 crt.sh 并执行真实的 DNS 查找。请仅对你拥有或已获得授权的域名使用此模式。 ## 在应用中你能看到什么? 本应用共有 5 个页面: | 页面 | 显示内容 | |------|--------------| | **扫描** (`/`) | 主页 —— 输入域名并开始扫描。以终端样式显示实时日志,并实时展示传入的结果。 | | **结果** (`/results`) | 包含所有已发现子域名的完整表格,支持排序和筛选。还提供网络图谱视图。你可以将结果导出为 CSV 或 PDF。 | | **仪表盘** (`/dashboard`) | 图表与统计 —— 每次扫描的子域名数量、存活与失效比例、最常见的前缀、扫描耗时趋势。 | | **历史记录** (`/history`) | 保存在浏览器中的所有过往扫描记录。你可以重新加载任何一次以前的扫描记录或将其删除。 | | **关于** (`/about`) | 解释子域名枚举的工作原理、技术栈以及法律与道德相关的注意事项。 | ## 技术栈 - **Next.js 16** (App Router) —— 同时处理前端和 API 的框架 - **React 19 + TypeScript** —— 构建 UI - **Tailwind CSS 4** —— 负责样式,并在其基础上构建了自定义设计系统 - **Recharts** —— 用于仪表盘上的图表 - **jsPDF** —— 在客户端生成 PDF 报告 - **Node.js `dns.promises`** —— 用于实战扫描的内置 DNS 解析(无需外部依赖) 本项目没有使用数据库。扫描历史记录会保存在你浏览器的 `localStorage` 中。 ## 如何运行 你的机器上需要安装 **Node.js**(18 或更高版本)。 ``` # 1. Clone repo(或直接 cd 进入 project 文件夹) cd SubDomain_Enumeration_Tool # 2. 安装依赖 npm install # 3. 启动 dev server npm run dev ``` 然后在浏览器中打开 **http://localhost:3000**。大功告成。 如果你需要构建生产环境版本: ``` npm run build npm start ``` ## 项目结构(核心部分) ``` SubDomain_Enumeration_Tool/ ├── src/ │ ├── app/ │ │ ├── page.tsx ← Main scan page │ │ ├── layout.tsx ← Root layout (fonts, nav, providers) │ │ ├── globals.css ← All the styling (liquid glass design system) │ │ ├── results/page.tsx ← Results table + network graph │ │ ├── dashboard/page.tsx ← Charts and analytics │ │ ├── history/page.tsx ← Past scans list │ │ ├── about/page.tsx ← How it works + legal notice │ │ └── api/scan/route.ts ← Backend API that does the actual scanning │ │ │ ├── components/ │ │ └── MenuBar.tsx ← Navigation bar │ │ │ ├── context/ │ │ └── ScanContext.tsx ← Shared state across pages (scan results, status) │ │ │ └── lib/ │ ├── mockData.ts ← Fake subdomain data for demo mode │ ├── scanHistory.ts ← Save/load scans from localStorage │ ├── exportUtils.ts ← CSV and PDF export functions │ └── wordlist.ts ← List of common subdomain prefixes for brute-force │ ├── package.json ├── tsconfig.json ├── next.config.ts ├── postcss.config.mjs └── eslint.config.mjs ``` ## 补充说明 - 设计采用了 **Liquid Glass** 美学风格 —— 具有背景模糊的半透明面板、镜面高光以及动态渐变背景。这些全部由 CSS 实现,没有使用任何相关第三方库。 - **默认开启演示模式(Demo mode)。** 你不需要连接互联网即可进行体验。 - 扫描历史记录保存在你的浏览器中。如果你清除了浏览器数据,这些记录也会随之消失。 - 实战扫描会使用 Google 的 DNS (`8.8.8.8`) 和 Cloudflare 的 DNS (`1.1.1.1`) 来解析子域名。 - 实战扫描利用 **Server-Sent Events (SSE)** 实时流式传输结果 —— 你可以看到子域名在被发现时立即出现,而不是等到最后一次性显示。 ## ⚠️ 法律声明 请仅对你拥有或已获得书面测试授权的域名进行扫描。未经授权的扫描可能会触犯计算机犯罪法律(如美国的 CFAA、英国的 CMA、印度的 IT Act 等)。作为课程项目的一部分,本工具仅供**教育目的**使用。
标签:DNS解析, GitHub, MITM代理, Python, 子域名枚举, 实时处理, 开源项目, 无后门, 系统安全, 自动化攻击, 证书透明度