carbon-evolution/osiris

GitHub: carbon-evolution/osiris

OSIRIS 是一个将航班、CCTV、灾害、冲突与网络威胁情报等多源实时数据聚合到 GPU 加速地图上的全球开源情报仪表盘。

Stars: 0 | Forks: 0

# ⬡ OSIRIS ### 开源情报与侦察集成系统 (Open Source Intelligence & Reconnaissance Integrated System) **一个实时全球情报仪表板**,将实时航班追踪、政府高速公路 CCTV 网络、地震与野火监控、冲突地区地图、网络威胁情报和 24/7 新闻聚合到一个 GPU 加速的地图中。 基于 **Next.js 16 · React 19 · MapLibre GL (WebGL)** 构建。
## 📸 截图 | 多图层地图上的实时 CCTV 画面 | CCTV 摄像头标记 | 威胁 / 情报图层 | |---|---|---| | ![带有实时 CCTV 画面的概览](https://raw.githubusercontent.com/carbon-evolution/osiris/master/docs/screenshots/01-overview-cctv-feed.jpg) | ![CCTV 标记](https://raw.githubusercontent.com/carbon-evolution/osiris/master/docs/screenshots/02-cctv-camera-markers.jpg) | ![情报图层](https://raw.githubusercontent.com/carbon-evolution/osiris/master/docs/screenshots/03-intel-layers.jpg) | *每种资源类型都有其专属的地图图标(相机 = CCTV,火焰 = 火灾,三角形 = 事件,⚓ = 港口等);没有专属图标的资源将回退显示为颜色编码的圆点。* ## 🗺️ 地图选项(图层)与数据源 图层在左侧面板中分组。每个图层可在地图上切换启用一种实时数据源。 | 分组 | 图层 | 来源 | 备注 / 限制 | |-------|-------|--------|---------------------| | **航空 (AVIATION)** | 商业 / 私人 / 喷气式飞机 / 军用航班 | OpenSky Network | 免 Key 数据源可用;配置 OpenSky app key 可提高速率限制。 | | **海事 (MARITIME)** | 港口 / 船舶 / 咽喉要道 | 静态海军情报 + AIS (`aisstream.io`) | 实时船舶位置需要免费的 `AIS_API_KEY`;港口/咽喉要道为静态数据。 | | | 海底电缆 | 源自 TeleGeography 的静态 GeoJSON | 静态参考数据。 | | | 卫星 | CelesTrak TLE(+ 可选 N2YO) | 无需 Key 的 TLE;`N2YO_API_KEY` 仅用于获取额外细节。 | | **监控 (SURVEIL)** | **CCTV 摄像头** | 政府交通管理部门 + `open-webcams`(全球约 6,000 个) | 请参阅下方的 **CCTV 覆盖范围** — *并非所有画面都能在所有地区正常工作*。 | | | 实时新闻流 | 精选的 24/7 YouTube/流媒体嵌入内容 | 部分流媒体可能会随时间离线。 | | **灾害 (HAZARD)** | 地震(24小时内) | **USGS + EMSC**,已合并并去重 | 免 Key。EMSC 补充了 USGS 遗漏的欧洲/亚洲强力覆盖。 | | | 活跃火灾 | **NASA FIRMS** — VIIRS S-NPP / NOAA-20 / NOAA-21 + MODIS,+ EONET 火山 | 免 Key。为保证性能,上限约为 3,000 个热点。 | | | 极端天气 | **NASA EONET + NOAA/NWS + GDACS** | 免 Key。NWS 预警仅限美国;GDACS 补充了全球的飓风/洪水/干旱。 | | **威胁 (THREAT)** | 核设施 / 发电厂 | 静态数据 + 开放数据集 | 参考数据。 | | | 全球事件 | **GDELT 2.0 GEO** + **ACLED**(可选启用)+ 模拟回退数据 | GDELT 的 GEO endpoint 上游有时会宕机;ACLED 需要具有 API 访问权限的账户(见下文);liveuamap **没有 API**(弹窗会外链至该网站)。只有在所有实时数据源均失效时,才会显示模拟数据集。 | | | GPS 干扰 | 聚合报告 | 稀疏 / 尽力而为。 | | | 勒索软件受害者 | `ransomware.live` | 公开数据源。 | | **网络 (NETWORK)** | 实时恶意软件 / 黑名单 IP / 钓鱼 / SSL 黑名单 | abuse.ch, Blocklist.de, PhishTank, AbuseIPDB | 如检测到 `.abuseipdb_key`,则用于 AbuseIPDB 的情报增强。 | | **网络情报 (CYBER INTEL)** | 活跃 CVE 威胁 | NVD | 免 Key。 | | | 路由情报 (DROP) | Spamhaus DROP | 免 Key。 | | | Tor 出口节点 | Tor Project | 免 Key。 | | | MITRE ATT&CK | MITRE ATT&CK STIX | 免 Key。 | | **显示 (DISPLAY)** | 昼夜 · 3D 地形 | 计算 / MapLibre 地形 | 仅用于视觉呈现。 | | **侦察 (RECON)**(工具包) | 端口扫描 · SSL · 标头 · DNS · WHOIS · 漏洞 | 配套的 **`osiris-scanner`** 辅助服务 | 独立的可选服务;需要 `SCANNER_KEY`(见下文)。 | ### 🎥 CCTV 覆盖范围 — 及其限制 CCTV 数据源自**官方政府交通运输部门画面**以及全球开放的摄像头数据集。亮点与**已知限制**: - **台湾**(THB 高速公路 + 省道,约 3,700 个摄像头) — 全球可用。 ✅ - **印度尼西亚**(Jasa Marga / Bina Marga) — 许多画面**受限于印尼当地 IP**,在海外会返回空白/黑屏;CORS 不一致的 HLS 流会通过同源代理进行路由。 ⚠️ - **欧盟 / 美国 / 香港 / 澳大利亚 / 新西兰 / 日本**及其他地区 — 已收录;覆盖范围和正常运行时间因管理部门而异。 - **`open-webcams`** — 覆盖 80+ 个国家的约 6,000 个公共摄像头(免 Key),因此即使没有国家级数据源,大多数地区也能显示出*一些内容*。 **CCTV 一般性注意事项:** 单个摄像头会离线;某些部门仅提供 `http` 或缓慢的 MJPEG(通过代理处理,进行 `http→https` 升级并根据负载刷新帧);受限的国家级画面无法从该国境外访问。 ## ⚠️ “并非所有数据都能正常工作” 这是一个聚合第三方开源数据的研究/教育类工具。请预期可能出现以下情况: - **上游服务宕机** — 例如 GDELT 的 GEO API 有时会向所有人返回 404 错误。 - **地理限制** — 某些 CCTV/政府信息源仅响应其国家境内的 IP。 - **受限数据** — ACLED 要求账户*被授予 API 访问权限*;某些信息源需要免费的 key。 - **过期 / 离线的 endpoint** — 单个摄像头、新闻流和报告时有时无。 所有路由均采用防御性编程编写:每个数据源都有其独立的超时设置,单一数据源的故障绝不会影响地图其余部分的运行。 ## 💻 环境要求 **软件** - **Node.js ≥ 20**(在 Node 26 上开发)以及 **npm**。 - 现代的 **WebGL2** 浏览器(Chrome/Edge/Firefox/Safari)。 - 操作系统:macOS / Linux / Windows。 - *(可选,用于 RECON)* `osiris-scanner` Node 辅助服务。 **硬件** - 强烈推荐使用支持 GPU 加速的浏览器(地图需要渲染数以千计的 WebGL 点)。 - 开发服务器需要约 2 GB 的可用 RAM;`node_modules`/构建过程需要约 1.5 GB 的磁盘空间。 **资源 / 账户** — *此应用无需任何 key 即可完全运行。* 密钥/凭证仅用于解锁额外的数据源(请参阅配置说明)。 ## 🚀 下载与运行 ``` # 1. Clone git clone https://github.com//osiris.git cd osiris # 2. Install dependencies npm install # 3. Configure(所有 key 都是 OPTIONAL — 复制 template 并填写你所需的内容) cp .env.example .env.local # edit .env.local 并添加你拥有的任何 keys/credentials # 4. Run the dashboard npm run dev # → 打开 http://localhost:3000 ``` **连同 RECON 扫描器一起运行**(可选):将 `osiris-scanner` 辅助服务放置在同级文件夹中,并使用自带的启动器同时启动两者: ``` npm run osiris # starts the scanner (:7700) + dashboard (:3000) ``` 构建生产版本: ``` npm run build && npm start ``` ## 🔑 配置 (`.env.local`) 将 `.env.example` 复制为 `.env.local`。**没有任何配置是必填的** — 每个变量都是可选的,如果未设置,相应的功能将直接保持关闭(免 Key 状态)。 | 变量 | 解锁功能 | 获取地址 | |----------|---------|-----------------| | `SCANNER_URL`, `SCANNER_KEY` | RECON 工具包(端口扫描、SSL、DNS、WHOIS、漏洞) | 生成一个 key,并将其设置为与 `osiris-scanner` 辅助服务中 `OSIRIS_KEY` 相同的值。 | | `ACLED_EMAIL`, `ACLED_PASSWORD` | 全球事件中的 ACLED 结构化冲突事件 | 在 注册免费账户。**要求您的账户具有 API 访问权限** — 请向 ACLED 申请(企业/商业用途可能需要许可证)。SSO/Google 账户必须设置密码。 | | `FIRMS_API_KEY` | 按区域划分的 FIRMS API(全球火灾 CSV 本身已免 Key) | | | `OPENSKY_CLIENT_ID/SECRET` | 更高的航空数据速率限制 | | | `AIS_API_KEY` | 实时船舶位置 (AIS) | | | `ISMALICIOUS_KEY` | IP/域名信誉增强 | | 编辑 `.env.local` 后,请**重启开发服务器**(Next.js 在启动时读取环境变量)。 ## 🧩 架构(简述) - **前端:** Next.js 16 App Router, React 19, MapLibre GL。地图和图层逻辑位于 `src/components/OsirisMap.tsx` 中;图层注册表位于 `src/components/LayerPanel.tsx` 中;各图层标记图标位于 `src/components/mapMarkers.ts` 中;CCTV 查看器位于 `src/components/CameraViewer.tsx` 中。 - **后端:** `src/app/api/*` 下的 Next.js API 路由 — 每个数据域(`cctv`、`earthquakes`、`fires`、`weather`、`gdelt` 等)对应一个路由。各国的 CCTV 数据源位于 `src/app/api/cctv/.ts` 中,由 `src/app/api/cctv/route.ts` 聚合。跨域摄像头流由 `src/app/api/cctv/proxy` (MJPEG) 和 `src/app/api/cctv/hls` (HLS) 进行代理。 - **RECON:** 可选的 `osiris-scanner` 辅助服务提供了仪表盘通过 `/api/scanner` 代理调用的扫描 endpoint。 ## 📜 许可证与归属说明 基于 **MIT License** 发布 — 详见 [`LICENSE`](LICENSE)。 OSIRIS 基于开源的 [simplifaisoul 的 OSIRIS 项目](https://github.com/simplifaisoul/osiris) 构建。所有第三方数据均归其各自提供商(NASA、USGS、EMSC、GDELT、ACLED、政府交通管理部门、abuse.ch、MITRE 等)所有,并受其使用条款约束 — 本项目仅供研究和教育使用。
标签:ESC4, GitHub, HTTP/HTTPS抓包, MapLibre, MITM代理, OSINT, 地图引擎, 实时处理, 密码管理, 态势感知, 情报收集, 漏洞研究, 自动化攻击