
Ein leistungsstarker, asynchroner SCADA/ICS-Scanner
Ein leistungsstarker, asynchroner SCADA/ICS-Scanner zur Identifizierung und zum Fingerprinting industrieller Steuerungssysteme in Netzwerken. Erkennt Schwachstellen, identifiziert Hersteller/Produkte und erstellt umfassende Risikoberichte.
WARNUNG: Nur für autorisierte Sicherheitsbewertungen. Nicht autorisierte Scans können gegen Gesetze und Vorschriften verstoßen.
# 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-Flag aktivieren{
"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"
}
]
}
]
}
Dieses Tool ist ausschließlich für autorisierte Sicherheitsbewertungen bestimmt. Nicht autorisierte Scans können gegen folgende Gesetze verstoßen:
Der Scanner wird mit einer kleinen integrierten Schwachstellendatenbank für Kernprotokolle ausgeliefert (siehe VULNERABILITY_DATABASE). Für aktuellere Informationen können Sie die optionale ProjectDiscovery vulnx-Integration aktivieren:
vulnx und konfigurieren Sie Ihren PDCP-API-Schlüssel (vulnx auth).--vulnx aus (optional können Sie --vulnx-limit und --vulnx-timeout anpassen).source: "vulnx" markiert.Wenn vulnx fehlt oder nicht erreichbar ist, fällt der Scanner stillschweigend auf die lokale Datenbank zurück. Lokale Datenbankeinträge werden regelmäßig aus vulnx-Suchen für Kernprotokolle aktualisiert (im Snapshot dieses Repos erfasst) und mit source: "local_db" gekennzeichnet.
Führen Sie die Unit-Test-Suite aus:
pytest
Der Scanner ist modular aufgebaut, sodass die Unterstützung für neue Protokolle einfach hinzugefügt werden kann:
SCADA_PORTS-Liste hinzuPROTOCOL_SIGNATURES-Wörterbuch hinzuVULNERABILITY_DATABASE hinzuBeiträge sind willkommen! Bitte folgen Sie diesen Schritten:
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)Dieses Projekt ist unter der MIT-Lizenz lizenziert – siehe die Datei LICENSE für Details.
DIE SOFTWARE WIRD "WIE BESEHEN" BEREITGESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG. DIE AUTOREN LEHNEN JEGLICHE HAFTUNG FÜR SCHÄDEN ODER VERLUSTE AB, DIE AUS DER NUTZUNG DIESER SOFTWARE ENTSTEHEN.