
ماسح ضعف ويب مبني باستخدام C++17 وQt 6، يتميز بواجهة رسومية وواجهة سطر أوامر وزحف قابل للتكوين وتقارير JSON. أُعيد بناؤه لأغراض تعليمية.
ماسح ثغرات ويب مبني باستخدام 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 متوافقة. تستخدم نقطة دخول الواجهة الرسومية واجهة برمجة تطبيقات Windows مباشرةً (windows.h)، لذا يتطلب بناء المشروع الكامل على Linux أو macOS إجراء تعديلات.
مطلوب أيضًا تبعيات واجهة Qt الرسومية عند تكوين المشروع لواجهة سطر الأوامر، لأن كلا الملفين التنفيذيين يتشاركان نفس المكتبة.
افتح طرفية PowerShell مع تكوين بيئة بناء Visual Studio، ثم انتقل إلى جذر المستودع. اضبط مسار 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) بمنفذ صريح |
--proxy-auth <user:pass> | تعيين بيانات اعتماد الوسيط |
--user-agent <STRING> | تعيين User-Agent مخصص |
--exit-on <LEVEL> | إيقاف الفحص عند عتبة الخطورة informational أو low أو medium أو high |
تقبل واجهة سطر الأوامر الوسطاء باستخدام مخططي http:// وsocks://. أما مخطط socks5:// المذكور في نص المساعدة الحالي فيرفضه المحلل.
مع --exit-on، يتوقف الفحص عندما تستوفي مشكلة الخطورة المطلوبة أو تتجاوزها. ومع ذلك، فإن التنفيذ الحالي يعيد رمز الخروج 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 الكاملة عن إخفاقات ناتجة عن هذا التكوين.
على سبيل المثال، شغّل اختبار واجهة سطر الأوامر باستخدام:
.\build\sms_cli_smoke.exe .\build\sms.exe
تتطلب اختبارات الواجهة الرسومية بيئة قادرة على تهيئة 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"). لا يوجد ملف LICENSE منفصل مضمن في هذا المستودع.