shynsec/breadcrumb-engine

GitHub: shynsec/breadcrumb-engine

基于 Streamlit 和 Folium 的 IP 地理定位与威胁情报可视化工具,整合 VirusTotal 风险评分,支持批量 IP 的交互式地图标注和情报导出。

Stars: 0 | Forks: 0

# 🔍 Breadcrumb 引擎 ![Python](https://img.shields.io/badge/Python-3.10+-3776AB?style=flat-square&logo=python&logoColor=white) ![Streamlit](https://img.shields.io/badge/Streamlit-1.55-FF4B4B?style=flat-square&logo=streamlit&logoColor=white) ![VirusTotal](https://img.shields.io/badge/VirusTotal-Powered-394EFF?style=flat-square) ![License](https://img.shields.io/badge/License-MIT-green?style=flat-square) ![Status](https://img.shields.io/badge/Status-Active-brightgreen?style=flat-square) ## 📸 截图 ![Map View](https://raw.githubusercontent.com/shynsec/breadcrumb-engine/main/screenshots/screenshot_1.png) ![Intelligence Table](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/f26d774d0d200755.png) ![Map View](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/a3f4d0bcdb200807.png) ``` 🟢 Green → Risk score 0–4% (Clean — few or no vendors flagged it) 🟠 Orange → Risk score 5–14% (Suspicious — worth investigating) 🔴 Red → Risk score 15%+ (Malicious — flagged by multiple vendors) ``` ## ✨ 功能特性 - **交互式深色地图** — 由 Folium 驱动的 CartoDB dark_matter 底图 - **VirusTotal 集成** — 汇总每个 IP 超过 90 家安全厂商的投票结果 - **通过 ipinfo.io 进行地理定位** — HTTPS 加密,无中间人 (MITM) 风险 - **风险颜色编码** — 一目了然的即时视觉分诊 - **CSV 导出** — 一键下载完整的情报表格 - **输入验证** — 在错误格式的 IP 访问任何 API 之前将其拒绝 - **去重处理** — 重复的 IP 仅解析一次,而非多次 - **速率限制安全** — 采用保守延迟的线程化获取 ## 🚀 快速开始 ### 1. 克隆仓库 ``` git clone https://github.com/YOUR-USERNAME/IP_Mapper.git cd IP_Mapper ``` ### 2. 创建虚拟环境 ``` python3 -m venv .venv source .venv/bin/activate ``` ### 3. 安装依赖 ``` pip install -r requirements.txt ``` ### 4. 设置 API 密钥 应用从环境变量中读取您的 VirusTotal 密钥。**切勿将其硬编码。** ``` export VT_API_KEY="your_key_here" ``` 为了在 Mac 上永久生效,请将其添加到您的 `~/.zshrc` 中: ``` echo 'export VT_API_KEY="your_key_here"' >> ~/.zshrc source ~/.zshrc ``` ### 5. 运行应用 ``` streamlit run app.py ``` 应用将在 `http://localhost:8501` 打开。 ## 🔑 API 密钥 | Service | Required | Free Tier | Get Key | |---|---|---|---| | [VirusTotal](https://www.virustotal.com) | 是 | 500 次请求/天 | [注册](https://www.virustotal.com/gui/join-us) | | [ipinfo.io](https://ipinfo.io) | 否 (匿名) | 50,000 次请求/月 | [注册](https://ipinfo.io/signup) 以获取更高限额 | ## 🏗️ 项目结构 ``` IP_Mapper/ ├── app.py # Main Streamlit application ├── requirements.txt # Python dependencies ├── .gitignore # Keeps secrets and cache out of Git └── README.md # This file ``` ## ⚙️ 配置 所有配置均位于 `app.py` 的顶部: | Variable | Location | Description | |---|---|---| | `VT_API_KEY` | 环境变量 | VirusTotal API 密钥 | | `MAX_IPS` | `app.py` | 每次运行的最大 IP 数(默认值:500)| | `RATE_LIMIT_DELAY` | `app.py` | API 调用之间的秒数(默认值:1.4s)| | `MAX_WORKERS` | `app.py` | 并行获取线程数(默认值:2)| ## 🛡️ 安全说明 - **API 密钥** 从 `os.environ` 加载 —— 永远不要提交到源代码管理中 - **地理定位** 使用 `https://ipinfo.io`(仅限 HTTPS —— 防止 MITM 攻击) - **输入验证** 使用正则 + 八位组范围检查来剥离并验证每个 IP - **状态字段** 已从所有输出中移除,以避免在导出文件中暴露工具指纹 - **输入上限** 为 500 个 IP,防止 API 配额耗尽 ## 📦 依赖项 核心包(完整固定版本请参见 `requirements.txt`): | Package | Purpose | |---|---| | `streamlit` | Web UI 框架 | | `folium` | 交互式地图渲染 | | `streamlit-folium` | Folium ↔ Streamlit 桥接 | | `pandas` | 数据处理和 CSV 导出 | | `requests` | 对地理和威胁情报 API 的 HTTP 调用 | ## 🗺️ 路线图 - [ ] IPv6 支持 - [ ] CIDR 范围扩展(例如 `192.168.1.0/24`) - [ ] 通过 CSV 文件输入批量上传 - [ ] AbuseIPDB 双源富化 - [ ] 保存调查历史记录 ## 📄 许可证 MIT —— 可免费使用、修改和分发。

为威胁猎人、蓝队成员和好奇心旺盛的人而构建。

标签:Ask搜索, ESC4, Folium, HTTP/HTTPS抓包, IP地理定位, Kubernetes, Mutation, OSINT, Python, Streamlit, VirusTotal, 交互式地图, 可视化, 威胁情报, 库, 应急响应, 开发者工具, 态势感知, 恶意IP检测, 无后门, 沙箱, 网络安全, 网络调试, 自动化, 访问控制, 逆向工具, 隐私保护