xzarate/oculix

GitHub: xzarate/oculix

一款零依赖的 Python 多源 IP 威胁情报聚合工具,整合四大情报源并自动处理 API 限速,支持级联回退和断点续传。

Stars: 0 | Forks: 0

# Oculix 多源 IP 威胁情报,支持级联回退。 **AbuseIPDB → VirusTotal → Shodan → AlienVault OTX** 如果主要服务商达到速率限制或失败,Oculix 会自动回退到下一个。生成包含分数、国家、ISP、类别和来源的 CSV、TXT、HTML 和 JSON 报告。 零外部依赖 —— 仅使用 Python 3 标准库。 ## 要求 - Python 3.8+ - 至少一个 API key(推荐:AbuseIPDB + VirusTotal) | 服务商 | 注册地址 | 免费额度 | |----------|-------------|-----------| | [AbuseIPDB](https://www.abuseipdb.com) | Settings → API | 1,000 次/天 | | [VirusTotal](https://www.virustotal.com) | 个人资料中的 API key | 4 次/分钟, 500 次/天 | | [Shodan](https://www.shodan.io) | Account → API | 1 次/秒 (受限) | | [AlienVault OTX](https://otx.alienvault.com) | 免费账户 | 无严格限制 (无 key 也可工作) | ## 快速开始 ``` # 克隆 git clone https://github.com/xzarate/oculix.git cd oculix # 设置 API keys(可选 -- 也可通过 CLI 或交互式提示传递) export ABUSEIPDB_KEY="your_key" export VIRUSTOTAL_KEY="your_key" export SHODAN_KEY="your_key" # 交互模式 python3 oculix.py # CLI 模式 python3 oculix.py --file ips_ejemplo.txt ``` ## 使用说明 ### 交互模式 (无参数) ``` python3 oculix.py ``` 逐步引导操作:API keys → IP 输入 (支持 CIDR,例如 `203.0.113.0/28`) → 配置 → 执行。 ### CLI 模式 ``` # 单一 provider python3 oculix.py --key ABUSE_KEY --file ips.txt # 多源 cascade python3 oculix.py --key ABUSE_KEY --vt-key VT_KEY --shodan-key SH_KEY --file ips.txt # IPs 作为参数(支持 CIDR) python3 oculix.py --key ABUSE_KEY --ips 1.2.3.4 203.0.113.0/28 # JSON output + 静默模式(用于自动化) python3 oculix.py --key ABUSE_KEY --file ips.txt --json --quiet # 恢复中断的运行 python3 oculix.py --key ABUSE_KEY --file ips.txt --resume ``` 可以通过环境变量设置 API keys: ``` export ABUSEIPDB_KEY="your_key" export VIRUSTOTAL_KEY="your_key" export SHODAN_KEY="your_key" export OTX_KEY="your_key" python3 oculix.py --file ips.txt ``` ## CLI 参数 | 参数 | 默认值 | 描述 | |----------|---------|-------------| | `--key` | env `ABUSEIPDB_KEY` | AbuseIPDB API key | | `--vt-key` | env `VIRUSTOTAL_KEY` | VirusTotal API key | | `--shodan-key` | env `SHODAN_KEY` | Shodan API key | | `--otx-key` | env `OTX_KEY` | AlienVault OTX API key (可选) | | `--file` | — | 包含 IP 的文本文件 (每行一个,支持 CIDR) | | `--ips` | — | 以空格分隔的 IP 参数 | | `--days` | `90` | 历史查询范围 (天) | | `--out` | `reports/ip_report` | 输出文件前缀 | | `--delay` | `0.6` | 请求之间的延迟秒数 | | `--retries` | `3` | 网络/服务器错误时的重试次数 | | `--resume` | `false` | 继续中断的运行 | | `--json` | `false` | 同时生成 JSON 报告 | | `--quiet` | `false` | 抑制控制台输出 | | `--about` | — | 显示版本和作者信息 | ## 私有 / 保留 IP Oculix 会自动检测私有和保留 IP(RFC 1918、loopback、link-local 等)并发出警告**跳过它们**。威胁情报 API 仅对全球可路由地址返回有意义的数据。 ## 级联回退 ``` AbuseIPDB --(rate limit/error)--> VirusTotal --(rate limit/error)--> Shodan --(rate limit/error)--> AlienVault OTX ``` - 第一个成功响应的服务商胜出 - 已耗尽的服务商将在本次运行的剩余时间内被跳过 - 如果所有服务商都已耗尽,运行将停止,并可以使用 `--resume` 恢复 - 报告中的 `source` 字段指示哪个服务商响应了该 IP - 所有服务商均支持 IPv6 地址(包括 AlienVault OTX) ## 输出 报告默认写入 `reports/` 目录。 | 文件 | 内容 | |------|---------| | `reports/ip_report.csv` | 完整表格:source, score, country, ISP, categories 等。 | | `reports/ip_report.txt` | 突出显示关键 IP 的执行摘要 | | `reports/ip_report.html` | 具有可排序列的交互式 HTML 报告 | | `reports/ip_report.json` | 机器可读输出 (需使用 `--json` 标志) | ## 分数标准化 每个服务商使用自己的指标,并标准化为 0–100: | 服务商 | 原始指标 | 标准化方式 | |----------|----------------|---------------| | AbuseIPDB | `abuseConfidenceScore` (0–100) | 直接使用 | | VirusTotal | 恶意/可疑引擎数 vs 总数 | `(mal + sus×0.5) / total × 100` | | Shodan | 漏洞 + 标签 | 基于 CVE 数量和威胁标签的启发式算法 | | AlienVault OTX | Pulse 数量 | 0→0, 1–2→15, 3–5→35, 6–10→55, 11–25→75, 26+→90 | ### 判定结果 | 判定 | 分数 | |---------|-------| | `MALICIOUS` | ≥ 80 | | `SUSPICIOUS` | 25–79 | | `LOW RISK` | 1–24 | | `CLEAN` | 0 | ## 退出代码 | 代码 | 含义 | |------|---------| | `0` | 所有 IP 干净 | | `1` | 至少发现一个恶意 IP | | `2` | 所有服务商已耗尽 (使用 `--resume`) | ## 大规模工作流 对于包含 1,000+ 个 IP 的列表: **第 1 天** — 运行直到服务商耗尽: ``` python3 oculix.py --key ABUSE_KEY --vt-key VT_KEY --file large_list.txt --out reports/client_x ``` **第 2 天** — 从中断处恢复: ``` python3 oculix.py --key ABUSE_KEY --vt-key VT_KEY --file large_list.txt --out reports/client_x --resume ``` ## 仓库结构 ``` . ├── oculix.py # Main tool ├── ips_ejemplo.txt # Example IP list ├── LICENSE └── README.md ``` ## 作者 **Alexis Zarate** - GitHub: [github.com/xzarate](https://github.com/xzarate) - LinkedIn: [linkedin.com/in/alexiszarate](https://www.linkedin.com/in/alexiszarate/) ## 许可证 [MIT](LICENSE)
标签:AbuseIPDB, API集成, Ask搜索, ESC4, FTP漏洞扫描, GitHub, HTTP/HTTPS抓包, IP信誉查询, IP黑名单, OSINT, Python, SOAR, VirusTotal, 可观测性, 多功能安全工具, 威胁情报, 安全编排, 开发者工具, 态势感知, 恶意IP检测, 插件系统, 无后门, 无线安全, 深度包检测, 混合加密, 网络安全, 网络安全分析, 聊天机器人, 自动化安全工具, 自动化报告, 蓝队防御, 软件开发安全, 隐私保护, 零依赖