shynsec/breadcrumb-engine
GitHub: shynsec/breadcrumb-engine
基于 Streamlit 和 Folium 的 IP 地理定位与威胁情报可视化工具,整合 VirusTotal 风险评分,支持批量 IP 的交互式地图标注和情报导出。
Stars: 0 | Forks: 0
# 🔍 Breadcrumb 引擎





## 📸 截图



```
🟢 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检测, 无后门, 沙箱, 网络安全, 网络调试, 自动化, 访问控制, 逆向工具, 隐私保护