
एक उच्च-प्रदर्शन, अतुल्यकालिक 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_PORTS सूची में प्रोटोकॉल विवरण जोड़ेंPROTOCOL_SIGNATURES डिक्शनरी में सिग्नेचर पैटर्न जोड़ेंVULNERABILITY_DATABASE में भेद्यता जानकारी जोड़ेंयोगदान का स्वागत है! कृपया इन चरणों का पालन करें:
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)इस प्रोजेक्ट को MIT लाइसेंस के तहत लाइसेंस प्राप्त है - विवरण के लिए LICENSE फ़ाइल देखें।
सॉफ़्टवेयर "जैसा है" (AS IS) प्रदान किया गया है, बिना किसी प्रकार की वारंटी, व्यक्त या निहित। लेखक इस सॉफ़्टवेयर के उपयोग से होने वाली किसी भी क्षति या हानि के लिए सभी दायित्व अस्वीकार करते हैं।