C++17 और Qt 6 के साथ बनाया गया वेब vulnerability scanner, जिसमें GUI, CLI, configurable crawling, और JSON reports शामिल हैं। शैक्षिक उद्देश्यों के लिए पुनर्निर्मित।
C++17 और Qt 6 के साथ बनाया गया एक वेब वल्नरेबिलिटी स्कैनर, जिसमें ग्राफिकल और कमांड-लाइन इंटरफ़ेस शामिल हैं।
यह रिपॉज़िटरी शैक्षिक उद्देश्यों के लिए SmartScanner 3.0.0 का पुनर्निर्माण शामिल करती है। यह एक वेब क्रॉलिंग इंजन, वल्नरेबिलिटी डिटेक्शन मॉड्यूल, और JSON रिपोर्टिंग को जोड़ती है।
robots.txt और साइटमैप हैंडलिंग, कॉन्फ़िगर करने योग्य क्रॉल गहराई और स्कोप।निष्पादित होने वाले मॉड्यूल कॉन्फ़िगरेशन और स्कैन के दौरान खोजे गए संसाधनों पर निर्भर करते हैं।
| घटक | संस्करण / विवरण |
|---|
| CMake | 3.21 या बाद का |
| कंपाइलर | C++17-संगत |
| Qt | 6.2 या बाद का |
| Qt मॉड्यूल | Core, Gui, Widgets, Network, WebChannel, WebEngineWidgets, Xml |
| Ninja | शामिल Windows बिल्ड स्क्रिप्ट्स के लिए आवश्यक |
नीचे दिए गए निर्देश Windows को लक्षित करते हैं, Visual Studio C++ बिल्ड टूल्स और एक संगत Qt MSVC किट का उपयोग करते हुए। GUI एंट्री पॉइंट सीधे Windows API (windows.h) का उपयोग करता है, इसलिए Linux या macOS पर पूर्ण प्रोजेक्ट बनाने के लिए संशोधनों की आवश्यकता होती है।
CLI के लिए प्रोजेक्ट कॉन्फ़िगर करते समय Qt GUI निर्भरताएँ भी आवश्यक हैं, क्योंकि दोनों एक्ज़ीक्यूटेबल्स एक ही लाइब्रेरी साझा करते हैं।
Visual Studio बिल्ड वातावरण के साथ कॉन्फ़िगर किया गया PowerShell टर्मिनल खोलें, फिर रिपॉज़िटरी रूट पर जाएँ। अपनी इंस्टॉलेशन से मेल खाने के लिए Qt पथ समायोजित करें।
.\build.ps1 -QtPath "C:\Qt\6.8.3\msvc2022_64" -BuildType Release
.\deploy.ps1 -QtPath "C:\Qt\6.8.3\msvc2022_64"
पहली स्क्रिप्ट Ninja के साथ प्रोजेक्ट बनाती है। दूसरी उपलब्ध Qt लाइब्रेरीज़, प्लगइन्स, और WebEngine संसाधनों को build डायरेक्टरी में कॉपी करती है।
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="C:\Qt\6.8.3\msvc2022_64"
cmake --build build --parallel
.\deploy.ps1 -QtPath "C:\Qt\6.8.3\msvc2022_64"
बिल्ड दो एक्ज़ीक्यूटेबल्स उत्पन्न करता है:
build/sms.exe: कमांड-लाइन इंटरफ़ेस।build/gui.exe: ग्राफिकल इंटरफ़ेस।assets डायरेक्टरी बिल्ड के दौरान स्वचालित रूप से एक्ज़ीक्यूटेबल्स के साथ कॉपी हो जाती है। इसे उनके साथ रखें, क्योंकि डिफ़ॉल्ट कॉन्फ़िगरेशन लोड करने के लिए यह आवश्यक है।
.\build\gui.exe
निम्नलिखित उदाहरण http://localhost:8080 पर एक स्थानीय टेस्ट एप्लिकेशन का उपयोग करते हैं।
# Display help and version information
.\build\sms.exe --help
.\build\sms.exe --version
# Scan a target and save a JSON report
.\build\sms.exe -u http://localhost:8080 -o report.json
# Scan multiple targets
.\build\sms.exe -u http://localhost:8080 -u http://localhost:8081
# Load a file containing one URL per line
.\build\sms.exe -f targets.txt -o report.json
# Limit crawl depth
.\build\sms.exe -u http://localhost:8080 --crawl-depth 2
# Use HTTP Basic authentication
.\build\sms.exe -u http://localhost:8080 --auth-basic "username:password"
# Use an HTTP proxy
.\build\sms.exe -u http://localhost:8080 --proxy http://localhost:8082
# Select a test module
.\build\sms.exe -u http://localhost:8080 -t httpheaders@o=owasp,others
| विकल्प | विवरण |
|---|---|
-u, --url <URL> | एक लक्ष्य जोड़ें; दोहराया जा सकता है |
-f, --file <FILE> | फ़ाइल से लक्ष्य पढ़ें |
-c, --config <FILE> | एक JSON कॉन्फ़िगरेशन लोड करें |
-o, --output <FILE> | JSON रिपोर्ट सहेजें |
-d, --crawl-depth <DEPTH> | क्रॉल गहराई सेट करें: 0 क्रॉलिंग अक्षम करता है, 1 केवल इनपुट URL प्राप्त करता है, और 2 या अधिक लिंक का अनुसरण करता है |
--no-discovery | --crawl-depth 0 के समतुल्य |
--no-follow | --crawl-depth 1 के समतुल्य |
-s, --scope <REGEX> | रेगुलर एक्सप्रेशन का उपयोग करके स्कोप परिभाषित करें |
-t, --test <TESTS> | मॉड्यूल चुनें; दोहराया जा सकता है |
--auth-basic <user:pass> | HTTP Basic क्रेडेंशियल्स सेट करें |
--proxy <URL> | स्पष्ट पोर्ट के साथ प्रॉक्सी कॉन्फ़िगर करें |
--proxy-auth <user:pass> | प्रॉक्सी क्रेडेंशियल्स सेट करें |
--user-agent <STRING> | एक कस्टम User-Agent सेट करें |
--exit-on <LEVEL> | informational, low, medium, या high गंभीरता सीमा पर स्कैन रोकें |
CLI http:// और socks:// स्कीम्स का उपयोग करने वाली प्रॉक्सी स्वीकार करता है। इसके वर्तमान हेल्प टेक्स्ट में उल्लिखित socks5:// स्कीम पार्सर द्वारा अस्वीकार कर दी जाती है।
--exit-on के साथ, स्कैन तब रुक जाता है जब कोई समस्या अनुरोधित गंभीरता को पूरा करती है या उससे अधिक होती है। हालाँकि, वर्तमान कार्यान्वयन exit code 1 केवल तब लौटाता है जब कोई फ़ाइंडिंग अनुरोधित गंभीरता से बिल्कुल मेल खाती है।
assets/default-scan-config.json फ़ाइल डिफ़ॉल्ट कॉन्फ़िगरेशन प्रदान करती है: सक्षम मॉड्यूल, HTTP टाइमआउट, समानांतर अनुरोध, क्रॉलिंग, बहिष्करण, प्रमाणीकरण, और फ़ॉर्म पैरामीटर।
अपना स्वयं का कॉन्फ़िगरेशन बनाने के लिए:
Copy-Item assets/default-scan-config.json scan-config.json
# Edit scan-config.json, then start the scan
.\build\sms.exe -c scan-config.json -u http://localhost:8080 -o report.json
--test द्वारा स्वीकार किए जाने वाले मॉड्यूल पहचानकर्ता इस फ़ाइल में tests.scripts के अंतर्गत सूचीबद्ध हैं। --test विकल्प कॉन्फ़िगरेशन से मॉड्यूल चयन को प्रतिस्थापित करता है।
स्कैन के दौरान निष्कर्ष कंसोल में दिखाई देते हैं। --output विकल्प स्कैन के अंत में एक JSON रिपोर्ट लिखता है, जिसमें शामिल हैं:
गंतव्य डायरेक्टरी पहले से मौजूद होनी चाहिए। मौजूदा रिपोर्ट फ़ाइल अधिलेखित कर दी जाती है।
स्मोक टेस्ट (*_smoke.cpp) BUILD_TESTS के साथ सक्षम किए जा सकते हैं:
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="C:\Qt\6.8.3\msvc2022_64" -DBUILD_TESTS=ON
cmake --build build --parallel
ctest --test-dir build --output-on-failure
वर्तमान CTest कॉन्फ़िगरेशन सभी परीक्षणों को बिना आर्गुमेंट के चलाता है। कुछ परीक्षण, जिनमें sms_cli_smoke, issuedb_smoke, और httpheader_smoke शामिल हैं, एक आर्गुमेंट की आवश्यकता रखते हैं और उन्हें उपयुक्त पथों के साथ अलग से चलाया जाना चाहिए। इसलिए पूर्ण CTest सूट चलाने पर इस कॉन्फ़िगरेशन के कारण विफलताएँ रिपोर्ट हो सकती हैं।
उदाहरण के लिए, CLI परीक्षण इस प्रकार चलाएँ:
.\build\sms_cli_smoke.exe .\build\sms.exe
GUI परीक्षणों के लिए Qt और WebEngine को प्रारंभ करने में सक्षम वातावरण आवश्यक है।
SmartScanner-Source/
├── CMakeLists.txt # Shared library, executables, and tests
├── src/ # Engine, crawler, detectors, CLI, and GUI
├── tests/ # Smoke tests
├── assets/ # Configuration, definitions, and scan resources
├── gui_assets/ # Embedded web interface: HTML, CSS, and JavaScript
├── sms_resources.qrc # CLI Qt resources
├── gui_resources.qrc # GUI Qt resources
├── build.bat # Windows build script
├── build.ps1 # PowerShell build script
└── deploy.ps1 # Copies Qt dependencies for Windows
मूल दस्तावेज़ीकरण इस प्रोजेक्ट को proprietary, reconstructed for educational purposes (“Proprietary — Reconstructed for educational purposes”) के रूप में वर्णित करता है। इस रिपॉज़िटरी में कोई अलग LICENSE फ़ाइल शामिल नहीं है।