emperor-sec/Atmosphere

GitHub: emperor-sec/Atmosphere

一款基于 Go 的道德 OSINT 侦察面板,提供 IP 地理定位、设备指纹识别和 DNS 诊断功能。

Stars: 1 | Forks: 0

# Atmosphere 一款使用 Go 编写的道德 OSINT 侦察面板,用于 IP 地理定位、设备指纹识别和 DNS 诊断。 ## 视图 1. **Self Scan** — 显示当前正在查看该面板的设备的信息。 2. **IP Lookup** — 对任何 IP 地址进行手动地理定位查询,并提供地图预览和地图链接。 3. **Batch Lookup** — 在单个请求中解析最多 20 个 IP 地址。 4. **DNS Tools** — 正向主机名解析和反向 PTR 查询。 5. **About** — 工具概述、功能介绍及道德使用指南。 ## 功能 - 公网 IP 解析,支持自动多提供商地理定位回退(ip-api.com, ipwho.is, ipapi.co),以提高可靠性和准确性 - 通过 WebRTC ICE 候选者发现本地 IP(仅限 Self Scan,在客户端进行) - User-Agent 解析:浏览器名称/版本、OS 名称/版本、渲染引擎 - 设备分类:Desktop、Mobile、Tablet、Bot,以及厂商和型号检测 - 在可用时提供移动网络、Proxy/VPN 和 Hosting/Datacenter 标志 - 纬度/经度坐标,附带直达 Google Maps 和 OpenStreetMap 的链接 - 面板内直接渲染的嵌入式交互式地图 - 正向和反向 DNS 解析工具 - Claude-desktop 风格的可折叠侧边栏导航,完全响应式 - GitHub Dark 主题 UI,仅使用 Font Awesome 图标,无表情符号 - 为每种报告类型提供 JSON 导出 ## 关于海拔的说明 基于 IP 的地理定位提供商,包括本项目使用的所有提供商,均不提供海拔数据。海拔需要物理 GPS 传感器和明确的设备权限,这超出了 IP 到地理位置映射所能提供的范围。`Altitude` 字段被有意标记为“Not Available From IP Geolocation”,而不是显示伪造的值。 ## 道德使用 Atmosphere 不会在未经知情或同意的情况下收集第三方数据。此面板中的所有功能仅适用于: 1. 访问者自身的连接和浏览器 (Self Scan) 2. 操作者明确输入的 IP 地址、IP 列表或主机名 (IP Lookup, Batch Lookup, DNS Tools) 没有跟踪链接生成器,没有隐蔽的捕获机制,也没有对访问者数据的持久化存储——报告仅在请求期间存在。请仅在您获得授权进行测试的系统和目标上使用此工具。 ## 项目结构 ``` atmosphere/ ├── cmd/ │ └── server/ │ └── main.go # Entry point, routing, server bootstrap ├── internal/ │ ├── handler/ │ │ ├── api.go # /api/report, /api/lookup, /api/batch-lookup, /api/dns-resolve, /api/reverse-dns │ │ └── page.go # Serves the main panel page │ ├── middleware/ │ │ └── logger.go # Request logging & security headers │ ├── model/ │ │ └── visitor.go # All shared data structures │ └── service/ │ ├── geolocate.go # Multi-provider geolocation with fallback chain │ ├── useragent.go # Browser/OS/device parsing │ └── dnsresolve.go # Forward and reverse DNS resolution ├── web/ │ ├── static/ │ │ ├── css/style.css # GitHub Dark theme, sidebar layout, responsive │ │ ├── js/app.js # Client-side logic (class AtmosphereClient) │ │ └── img/logo.svg # Application logo │ └── templates/ │ └── index.html # Sidebar shell and all views ├── go.mod └── README.md ``` ## 安装与运行 要求 Go >= 1.22。 ``` cd atmosphere go mod tidy go run ./cmd/server ``` 默认情况下,服务器运行在 `http://localhost:8080`。使用环境变量来指定不同的端口: ``` ATMOSPHERE_PORT=9090 go run ./cmd/server ``` 构建生产环境二进制文件: ``` go build -o atmosphere-server ./cmd/server ./atmosphere-server ``` ## 端点 | 方法 | 路径 | 描述 | |--------|---------------------|-----------------------------------------------------------| | GET | / | 主面板页面 | | POST | /api/report | 请求设备的 Self-scan 报告 | | POST | /api/lookup | 针对 `{"TargetIp": "8.8.8.8"}` 的地理定位查询 | | POST | /api/batch-lookup | 针对 `{"TargetIps": ["8.8.8.8", "1.1.1.1"]}` 的地理定位查询(最多 20 个) | | POST | /api/dns-resolve | 针对 `{"TargetHost": "example.com"}` 的正向 DNS 解析 | | POST | /api/reverse-dns | 针对 `{"TargetIp": "1.1.1.1"}` 的反向 DNS/PTR 查询 | ## 部署说明 如果部署在反向代理(Nginx/Caddy)之后,请确保转发 `X-Forwarded-For` 标头,以便 Self Scan 能够准确检测访问者的公网 IP,因为 `service.ExtractClientIp` 会优先使用该标头,然后再回退到 `RemoteAddr`。
标签:DNS解析, ESC4, EVTX分析, GitHub, Go, IP地理定位, OSINT, Ruby工具, Web面板, 多模态安全, 实时处理, 开源项目, 数据可视化, 日志审计