intelharvestproject-del/osint_scanner

GitHub: intelharvestproject-del/osint_scanner

一款将 IP/WHOIS 信息与 HIBP API 及本地泄露数据库联动查询的开源情报扫描工具,用于自动化发现与目标关联的凭据泄露情况。

Stars: 0 | Forks: 0

# OSINT 扫描器 ![Python](https://img.shields.io/badge/python-3.8%2B-blue) ![License](https://img.shields.io/badge/license-MIT-green) ![Tests](https://img.shields.io/badge/tests-pytest-brightgreen) ![Docker](https://img.shields.io/badge/docker-ready-2496ed) ![HIBP](https://img.shields.io/badge/HIBP-v3-orange) ## 功能特性 - **WHOIS → email。** 为每个 IP 从 WHOIS 记录中提取联系邮箱。 - **HIBP v3。** 通过官方 API `haveibeenpwned.com/api/v3` 验证每个邮箱,并支持 API 密钥。 - **本地泄露数据库。** 通过 `mmap` 在任意大小的文件中搜索 `email:password` —— 文件不会被完全加载到内存中,即使在数 GB 的数据库上也能进行搜索。搜索锚定在行的开头,因此 `user@example.com` 不会在 `er@example.com` 上发生误报。 - **并发处理。** 使用 `ThreadPoolExecutor` + 任务队列;线程数 可以在配置文件中设置,或通过 `--threads` 参数指定。 - **重试机制。** 针对 HIBP 的网络错误和 `429/5xx` 响应 会采用指数退避策略进行重试。 - **日志记录。** 同时输出到控制台和轮转日志文件 (`osint_scanner.log`)。 - **多格式导出。** 支持 CSV、JSON 和独立的 HTML 报告。 - **通过 YAML 进行配置。** 没有硬编码常量 —— 所有参数均在 `config.yaml` 中, CLI 参数可覆盖这些设置。 - **容器化。** 提供现成的 `Dockerfile` 以便在 Docker 中运行。 ## 安装 ### 通过 pip (Windows, PowerShell) ``` git clone https://github.com/<ВАШ_НИК>/osint_scanner.git cd osint_scanner # 虚拟环境(可选,但推荐) python -m venv .venv .\.venv\Scripts\Activate.ps1 # runtime 依赖 pip install -r requirements.txt # 开发依赖 (pytest) — 可选 pip install -r requirements-dev.txt ``` 通过 `make` (需要 `make`,例如 Git Bash 或 WSL):`make install` / `make install-dev`。 ### 通过 Docker ``` docker build -t osint_scanner . ``` ## 配置 `config.yaml` **不存储在代码库中** (因为它可能包含敏感信息 —— HIBP 的 API 密钥 和泄露数据库路径)。请复制 `config.example.yaml` 模板并填入您的值: ``` Copy-Item config.example.yaml config.yaml ``` 或者生成默认值 (`api_key` 字段将为空): ``` python -c "from config import create_default_config; create_default_config()" # 或(需要 make):make config ``` `config.yaml` 示例 (模板是 `config.example.yaml`): ``` threads: 20 breach_file: null # путь к файлу утечек email:password hibp: api_url: "https://haveibeenpwned.com/api/v3/breachedaccount/" api_key: "" # HIBP v3 требует ключ: https://haveibeenpwned.com/API/Key user_agent: "OSINT-Scanner/1.0" timeout: 10 retries: 3 # повторных попыток при ошибках/429/5xx backoff: 1.5 # множитель экспоненциальной задержки output: format: "csv" # csv | json | html file: null # null => output. logging: level: "INFO" # DEBUG | INFO | WARNING | ERROR file: "osint_scanner.log" ``` ## 使用方法 ### 扫描 CIDR ``` python main.py --cidr 192.168.0.0/24 --output-format csv ``` ### 扫描包含 IP 地址的文件 ``` python main.py --ips-file ips.txt --threads 50 --output-format json ``` `ips.txt` —— 每行一个 IP: ``` 8.8.8.8 1.1.1.1 203.0.113.10 ``` ### 指定自定义泄露数据库 ``` python main.py --ips-file ips.txt --breach /data/leaks.txt --output-format html ``` 数据库格式为 `email:password`,每行一条记录。文件可以任意大:通过 `mmap` 进行搜索。 ### 所有 CLI 参数 | 参数 | 描述 | 覆盖项 | |--------------------|-------------------------------------------------------|-------------------------| | `--ips-file` | 包含 IP 地址的文件 (每行一个) | — | | `--cidr` | CIDR 范围 (例如 `192.168.0.0/24`) | — | | `--breach` | `email:password` 泄漏文件路径 | `breach_file` | | `--threads` | 线程数 | `threads` | | `--output-format` | `csv` \| `json` \| `html` | `output.format` | | `--output` | 输出文件名 (默认为 `output.`) | `output.file` | | `--config` | 备用 `config.yaml` 的路径 | — | ### 通过 Docker ``` # CIDR,挂载自己的泄露数据库 docker run --rm ` -v "$PWD/leaks.txt:/data/leaks.txt:ro" ` -v "$PWD/out:/out" ` osint_scanner ` --cidr 192.168.0.0/24 --breach /data/leaks.txt --output /out/report.html --output-format html ``` ### 通过 Make ``` make run ARGS="--ips-file ips.txt --breach leaks.txt --output-format json" make test ``` ## 结果格式 | 字段 | 含义 | |------------|-------------------------------------------------------| | `ip` | IP 地址 | | `email` | 来自 WHOIS 的联系邮箱 | | `hibp` | `true`/`false` (在 HIBP 中有/无泄露) 或 `error` | | `password` | 本地数据库中的密码 (如果未找到则为空) | JSON 示例: ``` [ { "ip": "203.0.113.10", "email": "abuse@example.net", "hibp": true, "password": "found-password" } ] ``` ## 测试 ``` python -m pytest -v # 或直接:pytest -v # 或(需要 make):make test ``` 测试覆盖率 (使用 mock,无网络调用): - `tests/test_whois_parser.py` —— 提取 email,模拟 `whois.whois`,错误处理。 - `tests/test_breach.py` —— `mmap` 搜索,包括大文件处理, 避免子字符串误报以及 unicode 密码支持。 - `tests/test_hibp.py` —— 模拟 `requests.get`,针对 `429/5xx` 的重试及网络错误,API 密钥支持。 - `tests/test_utils.py` —— 导出到 CSV/JSON/HTML 以及格式调度器。 ## 项目结构 ``` osint_scanner/ ├── main.py # CLI, оркестрация ├── config.py # загрузка config.yaml + значения по умолчанию ├── config.example.yaml # шаблон конфигурации (config.yaml — локальный, в .gitignore) ├── logger.py # настройка логирования (консоль + файл) ├── requirements.txt # runtime-зависимости ├── requirements-dev.txt # + pytest ├── Makefile # install / test / run / clean / config ├── Dockerfile # запуск в контейнере ├── modules/ │ ├── scanner.py # scan_single_ip: WHOIS -> HIBP + breach │ ├── whois_parser.py # WHOIS-запрос и извлечение email │ ├── hibp.py # HIBP v3 с повторными попытками │ ├── breach.py # mmap-поиск в файле утечек │ └── utils.py # параллелизм + экспорт CSV/JSON/HTML └── tests/ # pytest-тесты ``` ## 许可证 [MIT](LICENSE) © osint_scanner 贡献者。
标签:Docker, ESC4, OSINT, Python, 安全规则引擎, 安全防御评估, 实时处理, 情报搜集, 数据泄露, 无后门, 请求拦截, 逆向工具