
Высокопроизводительный асинхронный сканер SCADA/ICS
Высокопроизводительный асинхронный сканер SCADA/ICS для обнаружения и фингерпринтинга промышленных систем управления в сетях. Выявляет уязвимости, определяет вендоров/продукты и формирует подробные отчеты о рисках.
ВНИМАНИЕ: Только для авторизованных оценок безопасности. Несанкционированное сканирование может нарушать законы и нормативные требования.
# Clone the repository
git clone https://github.com/geeknik/scada-scanner.git
cd scada-scanner
# Install dependencies
pip install -r requirements.txt
# Single target scan
python scada_scanner.py -t 192.168.1.100 -o results.json
# CIDR range scan
python scada_scanner.py -c 192.168.1.0/24 -o results.json
# Multiple CIDR ranges from file
python scada_scanner.py -f networks.txt -o results.json
# Export CSV instead of JSON
python scada_scanner.py -t 192.168.1.100 --format csv -o results.csv
# Respect an exclude list
python scada_scanner.py -c 10.0.0.0/24 --exclude exclude.txt
# Highlight unexpected protocol/port combos (logged and in findings)
python scada_scanner.py -t 203.0.113.10 -o results.json
# Enable live vuln enrichment via ProjectDiscovery vulnx (requires vulnx + PDCP API key)
vulnx auth
python scada_scanner.py -t 192.168.1.100 --vulnx --vulnx-limit 3
Required arguments (one of):
-t, --target Single target IP address
-c, --cidr CIDR range to scan (e.g., 192.168.1.0/24)
-f, --cidr-file File containing CIDR ranges (one per line)
Optional arguments:
-o, --output Output file (default: scan_results.json)
-r, --rate Max requests per second (default: 10.0)
--timeout Connection timeout in seconds (default: 5)
--max-concurrent Maximum concurrent connections (default: 50)
--safe-mode Enable safe mode (non-intrusive scans only)
--exclude File containing IPs to exclude from scan
-v, --verbosity Verbosity level: 0=quiet, 1=normal, 2=debug
--format Output format: json or csv (default: json)
--safe-mode{
"scan_summary": {
"timestamp": "2025-02-27T14:02:33.456789",
"total_hosts_scanned": 256,
"hosts_with_scada": 12,
"total_vulnerabilities": 37,
"high_risk_hosts": 5
},
"hosts": [
{
"ip": "192.168.1.100",
"ports": [
{
"port": 502,
"protocol": "MODBUS",
"fingerprint": {
"vendor": "Schneider",
"product": "M340",
"version": "2.6.0",
"risk_score": 0.75,
"evidence": [
"response:00010000000101",
"port_hint:502"
],
"findings": [
"Detected MODBUS protocol (confidence: 0.55)",
"Identified vendor: SCHNEIDER, product: M340",
"Overall risk assessment: High (score: 0.75)"
],
"unexpected_port": false
}
}
],
"vulnerabilities": [
{
"cve_id": "CVE-2025-55221",
"description": "Socomec DIRIS Digiware M-70 DoS via crafted Modbus TCP/RTU over TCP packets",
"severity": "high",
"source": "local_db"
}
]
}
]
}
Этот инструмент предназначен только для авторизованных оценок безопасности. Несанкционированное сканирование может нарушать:
Сканер поставляется со встроенной базой данных уязвимостей для основных протоколов (см. VULNERABILITY_DATABASE). Для получения более свежих данных можно включить опциональную интеграцию с ProjectDiscovery vulnx:
vulnx и настройте ваш PDCP API-ключ (vulnx auth).--vulnx (при необходимости настройте --vulnx-limit и --vulnx-timeout).source: "vulnx".Если vulnx отсутствует или недоступен, сканер незаметно переключается на локальную базу данных.
Записи локальной базы периодически обновляются из поисков vulnx для основных протоколов (зафиксированы в этом снимке репозитория) и помечаются как source: "local_db".
Запустите набор модульных тестов:
pytest
Сканер спроектирован модульным, что упрощает добавление поддержки новых протоколов:
SCADA_PORTSPROTOCOL_SIGNATURESVULNERABILITY_DATABASEВклад приветствуется! Пожалуйста, выполните следующие шаги:
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)Этот проект лицензирован по лицензии MIT — подробности см. в файле LICENSE.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ. АВТОРЫ ОТКАЗЫВАЮТСЯ ОТ ЛЮБОЙ ОТВЕТСТВЕННОСТИ ЗА ЛЮБОЙ УЩЕРБ ИЛИ ПОТЕРИ, ВОЗНИКШИЕ В РЕЗУЛЬТАТЕ ИСПОЛЬЗОВАНИЯ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.