jemalSparklingWater/osint-dashboard
GitHub: jemalSparklingWater/osint-dashboard
一个基于 FastAPI 的 OSINT 威胁情报仪表板,将多来源公开侦察数据聚合为带风险评分和 AI 分析摘要的单页报告。
Stars: 0 | Forks: 0
# RECON — OSINT 表面情报仪表板
一款收集有关域名或 IP **公开侦察信息**的 Web 应用,并将其转化为简洁的单页威胁情报报告:子域名、DNS、WHOIS、开放端口与服务、可能的已知漏洞(CVE)、暴露的电子邮件、Cloudflare 源站发现以及 AI 评估的风险评分。
其收集的所有信息均来自**公开来源**(证书透明度日志、DNS、WHOIS、Shodan)。请仅扫描您拥有或已获授权测试的目标。
## 功能说明
| 功能 | 来源 | 备注 |
|---|---|
| **子域名** | crt.sh → certspotter(后备) | 证书透明度日志 |
| **DNS 记录** | 实时 DNS | A / AAAA / MX / NS / TXT |
| **WHOIS** | WHOIS | 注册商、组织、创建/过期时间、国家 |
| **开放端口与服务** | Shodan → InternetDB(后备) | 如果存在 key 则使用已认证的 Shodan |
| **已知漏洞** | NVD | 版本匹配的 CVE,**AI 评级的置信度** |
| **暴露的电子邮件** | 证书数据 | 证书中泄露的地址 |
| **Cloudflare 源站发现** | 直连探测 | 找到绕过 CDN 的子域名,随后*验证*源站 |
| **风险评分(0–100)** | `risk.py` | 确定性规则;当数据过少无法判断时显示 "Unknown" |
| **AI 分析师摘要** | OpenAI | 基于相同事实生成通俗易懂的叙述 |
| **变更追踪** | SQLite 历史 | 将每次扫描结果与前一次进行 diff 对比 |
风险评分是**基于规则且可复现的**(并非 AI 的主观判断)。AI 仅负责撰写叙述,并评估每个通过指纹识别出的 CVE 的可信度——因此数字保持一致,而文字依然易读。
## 设置
```
# 1. 创建 + 激活 virtual environment
python -m venv venv
venv\Scripts\activate # Windows
# source venv/bin/activate # macOS / Linux
# 2. 安装依赖
pip install -r requirements.txt
# 3. 添加你的 secrets(可选但推荐)
# 在此文件夹中创建一个名为 .env 的文件:
```
`.env`(切勿提交此文件——它已被 gitignored):
```
SHODAN_API_KEY=your_shodan_key_here
OPENAI_API_KEY=your_openai_key_here
```
这两个 key 都是**可选的**——如果没有它们,应用仍会运行并退回到使用免费来源(使用 InternetDB 获取端口;使用占位符消息代替 AI 摘要)。有了它们,您将获得经过认证的 Shodan 数据和 AI 分析师服务。
```
# 4. 运行它
venv\Scripts\python.exe -m uvicorn app:app --reload --port 8000
```
然后打开 **http://127.0.0.1:8000** 并扫描一个域名。
## 项目布局
```
osint-dashboard/
├── app.py # FastAPI routes + background scan jobs (the web server)
├── recon.py # the OSINT functions (subdomains, DNS, WHOIS, Shodan, origin discovery)
├── risk.py # deterministic risk scoring (score, level, findings)
├── cve.py # NVD CVE lookup + version matching
├── ai_summary.py # OpenAI: analyst summary + CVE-confidence rating
├── changes.py # diff a scan against the previous one
├── database.py # SQLite: save / load / history
├── templates/
│ └── index.html # the whole UI (light-theme app shell, one file)
├── requirements.txt
├── .env # secrets — gitignored, never commit
└── osint.db # SQLite database (created on first run)
```
## 扫描工作原理(流程)
1. 您提交一个域名 → `POST /scan/start` 启动一个**后台线程**,并立即返回一个 `job_id`(这样页面就不会卡住)。
2. 浏览器**轮询** `/scan/status/{job_id}` 并显示进度条动画。
3. `run_scan()` 调用各个 `recon.py` 函数,然后调用 `risk.assess()`,接着调用 AI 层,并**将结果保存**到 SQLite。
4. 您将被重定向到 `/scan/{scan_id}` ——完整的报告。
5. 每个部分都会在**扫描状态**面板中报告自身的成功/失败情况,因此当某项操作被阻止(如频率限制、Cloudflare、缺少 key)时,您会*直接看到*它,而不是得到一个默默为空的部分。
## 部署(后续)
1. `pip freeze > requirements.txt`(已完成)。
2. 推送到 GitHub ——**`.env` 已被 gitignored**,因此请在您主机提供商的控制面板中将 `SHODAN_API_KEY` 和 `OPENAI_API_KEY` 设置为环境变量。
3. 主机:[Render](https://render.com) 非常适合 FastAPI —— 启动命令:`uvicorn app:app --host 0.0.0.0 --port $PORT`。
## 安全须知
- **仅扫描您拥有或已获授权测试的内容。** 此工具仅触及公开数据,但对第三方的主动扫描可能依然是不受欢迎的。
- 将 API key 保存在 `.env` 中;切勿提交它们。如果某个 key 不慎被公开粘贴到了某处,请立即**轮换(替换)它**。
标签:AV绕过, ESC4, FastAPI, GitHub, GPT, OSINT, Petitpotam, 威胁情报, 安全仪表盘, 实时处理, 开发者工具, 漏洞管理, 资产测绘, 逆向工具