simple probe white osint scanner
  • Python 77%
  • Shell 23%
Find a file
2026-04-03 14:09:53 +07:00
.gitignore Initial commit 2026-04-03 10:32:12 +07:00
isp_probe.py feat: added workres parallelism 2026-04-03 14:09:53 +07:00
isp_recon.sh add isp_recon.sh with nmap -sn probes by lists 2026-04-03 11:53:51 +07:00
README.md add README.md with examples 2026-04-03 11:55:38 +07:00

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):

  1. Из каждой подсети берётся первый хост — один представительный IP на подсеть
  2. nmap -sn -T5 делает ICMP ping sweep по этим IP
  3. XML результат парсится в JSONL

Домены (isp_probe.py):

  1. Для каждого домена пробуется HTTPS, затем HTTP
  2. Фиксируется статус, редиректы, время ответа
  3. Если 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