intelharvestproject-del/osint_scanner
GitHub: intelharvestproject-del/osint_scanner
一款将 IP/WHOIS 信息与 HIBP API 及本地泄露数据库联动查询的开源情报扫描工具,用于自动化发现与目标关联的凭据泄露情况。
Stars: 0 | Forks: 0
# OSINT 扫描器





## 功能特性
- **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, 安全规则引擎, 安全防御评估, 实时处理, 情报搜集, 数据泄露, 无后门, 请求拦截, 逆向工具