12Lemon123456/linkscan-dns-asset-discovery

GitHub: 12Lemon123456/linkscan-dns-asset-discovery

全栈 DNS 资产发现平台,将子域名枚举、DNS 解析与 TCP 端口扫描整合为一条自动化扫描流水线并通过 Web 仪表板可视化呈现。

Stars: 0 | Forks: 0

# LinkScan — DNS 资产发现平台 ## 项目概述 LinkScan 是一个全栈安全侦察原型,在单个工作流中自动执行子域名枚举、DNS 解析和 TCP 端口扫描。安全分析师和工程师可以提交根域名、配置扫描选项,并通过 Web 仪表板查看结果。后端将结构化结果持久化存储在 MySQL 中;前端则可视化展示 KPI、图表和每个任务的详细信息。已完成的扫描可以导出为 JSON 或 CSV 格式。 ## 主要功能 - 带有 OpenAPI 文档和健康检查的 RESTful FastAPI 后端 - 基于字典的子域名枚举(内置词表、自定义词汇或文件路径) - 针对 A、AAAA、CNAME、MX 和 NS 记录的并发 DNS 解析 - 具有可配置端口集和基本服务映射的 TCP 端口扫描 - 串联扫描 pipeline:枚举 → DNS → 端口,包含阶段进度和日志 - 带有 ECharts 可视化的 Vue 3 仪表板 - 具有实时状态轮询的任务管理 UI - 针对已完成扫描的 JSON 和 CSV 导出 ## 技术栈 | 层级 | 技术 | | --- | --- | | 后端 | Python, FastAPI, SQLAlchemy, Pydantic, Alembic, dnspython, Celery(可选) | | 前端 | Vue 3, TypeScript, Vite, Element Plus, ECharts, Axios | | 数据库 | MySQL, Redis(可选) | | 测试 | pytest | ## 系统架构 ``` flowchart LR User[User] --> Frontend[Vue Frontend] Frontend --> API[FastAPI Backend] API --> DB[(MySQL)] API --> BG[Background Tasks] BG --> Enum[Subdomain Enumeration] Enum --> DNS[DNS Resolver] DNS --> Port[TCP Port Scanner] Port --> DB API -. optional .-> Redis[(Redis / Celery)] ``` 另请参阅:`docs/system-architecture.png`、`docs/scan-sequence.png`、`docs/database-er.png` ## 项目结构 ``` Github_Portfolio/ ├── backend/ │ ├── alembic/ # Database migrations │ ├── app/ │ │ ├── api/routes/ # REST endpoints │ │ ├── models/ # SQLAlchemy ORM models │ │ ├── services/ # Scan engine, DNS, port scanner │ │ └── tasks/ # Background task handlers │ ├── scripts/ # Demo seeding and test reports │ └── tests/ # Unit tests ├── frontend/ │ └── src/ # Vue views, charts, API client ├── docs/ # Architecture diagrams ├── models/ # Model documentation index ├── screenshots/ # UI demo images ├── requirements.txt └── .env.example ``` ## 我的贡献 - 设计了用于多阶段扫描结果的数据库 schema - 构建了用于任务生命周期、仪表板统计和导出的 FastAPI endpoint - 实现了具有弹性错误处理的串联扫描引擎 - 集成了并发 DNS 解析和 TCP 端口扫描 - 开发了包含图表、任务工作流和导出操作的 Vue 3 前端 - 添加了 Alembic 迁移、pytest 覆盖率和系统测试工具 ## 成果 已完成扫描的代表性输出: - 带有 DNS 解析状态的子域名候选项 - DNS 记录细分(A / CNAME / MX) - 具有映射服务(http、https、ssh、mysql、redis 等)的开放端口 - 高危端口计数和各阶段执行时间 - 跨所有扫描的聚合仪表板统计数据 API 响应示例(`POST /api/scans`): ``` { "scan_id": 1, "status": "pending", "stage": "enum" } ``` 正式的机器学习评估指标不适用于本项目。 ## 截图 | 仪表板 | 创建扫描 | | --- | --- | | ![仪表板](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/e7a3aa985e095302.png) | ![创建扫描](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/294e97df96095308.png) | | 任务列表 | 任务详情 | | --- | --- | | ![任务列表](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/d2c1ba16a1095314.png) | ![任务详情](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/2dc877e8ba095319.png) | | DNS 结果 | 端口结果 | | --- | --- | | ![DNS 结果](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/769b95e996095324.png) | ![端口结果](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/67f3057d14095330.png) | ## 如何运行 ### 前置条件 - Python 3.10+ - Node.js 18+ - MySQL 8+ - Redis(可选) ### 设置 ``` cp .env.example .env # 编辑 .env 中的 DATABASE_URL pip install -r requirements.txt ``` ### 后端 ``` cd backend uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 ``` - 健康检查:http://localhost:8000/health - API 文档:http://localhost:8000/docs ### 前端 ``` cd frontend npm install npm run dev ``` 打开 http://localhost:5173 ### 测试 ``` cd backend pytest tests/ ``` ## 未来改进 - 用于一键本地设置的 Docker Compose - 使用生产级 Celery worker 替代进程内后台任务 - 用户身份验证和基于角色的访问控制 - 基于浏览器的字典文件上传 - CI/CD pipeline 和扩展的集成测试 - 英文 UI 本地化 ## 许可证 MIT 许可证 — 详见 [LICENSE](LICENSE)。
标签:AV绕过, FastAPI, GitHub, Vue 3, 子域名枚举, 安全侦察, 安全规则引擎, 插件系统, 搜索引擎查询, 数据统计, 端口扫描, 系统安全, 逆向工具