simple probe white osint scanner
- Python 77%
- Shell 23%
| .gitignore | ||
| isp_probe.py | ||
| isp_recon.sh | ||
| README.md | ||
isp-recon
Инструмент для исследования доступности ресурсов в условиях вайтлист-фильтрации мобильного провайдера.
Файлы
| Файл | Описание |
|---|---|
isp_recon.sh |
Главный скрипт. ICMP sweep по CIDR + HTTP probe по доменам |
isp_probe.py |
Python-модуль HTTP/HTTPS проверки. Используется recon-скриптом, можно запускать отдельно |
Зависимости
# Kali (proot/native)
apt install nmap python3-pip
pip3 install requests
# Termux (без Kali)
pkg install python nmap
pip install requests
Входные файлы
Все файлы — plain text, одна запись на строку, комментарии через #.
| Файл | Формат | Пример |
|---|---|---|
cidrwhitelist.txt |
CIDR подсети | 2.63.0.0/17 |
whitelist.txt |
Домены | alfabank.ru, xn--80ajg... |
Запуск
chmod +x isp_recon.sh
# полный прогон
./isp_recon.sh --cidr cidrwhitelist.txt --domains whitelist.txt
# только домены
./isp_recon.sh --domains whitelist.txt
# только CIDR
./isp_recon.sh --cidr cidrwhitelist.txt
# кастомная папка результатов
./isp_recon.sh --cidr cidrwhitelist.txt --domains whitelist.txt --out-dir ./run1
Как работает
CIDR (isp_recon.sh):
- Из каждой подсети берётся первый хост — один представительный IP на подсеть
- nmap
-sn -T5делает ICMP ping sweep по этим IP - XML результат парсится в JSONL
Домены (isp_probe.py):
- Для каждого домена пробуется HTTPS, затем HTTP
- Фиксируется статус, редиректы, время ответа
- Если nmap доступен — CIDR сканирование идёт через
nmap -sT, иначе python socket
Результаты
Складываются в ./isp_results_ДАТА/:
isp_results_20260403_1200/
├── cidr_probes.txt # список IP для ping sweep
├── cidr_ping.xml # сырой nmap output
├── cidr_ping.jsonl # распарсенные результаты
└── domains.jsonl # результаты по доменам
Формат JSONL — CIDR:
{"ts": "2026-04-03T12:00:00Z", "type": "icmp", "target": "2.63.0.1",
"reachable": true, "state": "up", "reason": "echo-reply"}
Формат JSONL — домены:
{"ts": "2026-04-03T12:00:00Z", "type": "domain", "target": "alfabank.ru",
"reachable": true, "checks": [
{"url": "https://alfabank.ru", "ok": true, "status": 200, "elapsed_ms": 312},
{"url": "http://alfabank.ru", "ok": true, "status": 301, "redirect": "https://alfabank.ru/"}
]}
Анализ результатов
# сколько подсетей отвечает на ping
grep '"reachable": true' isp_results_*/cidr_ping.jsonl | wc -l
# какие домены недоступны
python3 -c "
import json
for l in open('isp_results_$(ls -t isp_results_* | head -1)/domains.jsonl'):
r = json.loads(l)
if not r['reachable']:
print(r['target'])
"
# статусы HTTP по доменам
python3 -c "
import json
for l in open('isp_results_$(ls -t isp_results_* | head -1)/domains.jsonl'):
r = json.loads(l)
for c in r.get('checks', []):
if c['ok']:
print(f\"{r['target']}: {c['url']} → {c['status']}\")
"
Ограничения
- ICMP sweep проверяет по одному IP на подсеть — факт маршрутизации, не все хосты внутри
- proot окружение: raw sockets недоступны, nmap работает только в
-sT/-snрежимах - Большие CIDR листы (30К+ подсетей) — sweep занимает 10-20 минут при
-T5