Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/coffeeandsecurity/dakshscra
التحليل الثابتماسحات الثغرات الأمنيةتحليل الشفرة الثابت (SAST)تحليل الثغرات الأمنيةتحليل الكودأمن الويباختبار الاختراقDevSecOpsأمن الجوالالتعلم والتعليم
GitHubcoffeeandsecurity/dakshscra

DakshSCRA

45790منذ 16 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →

أداة تحليل كود ثابتة مدركة للإطار لمراجعة تلقائية للكود المصدري مع قواعد خاصة بالمنصة، وتحليل التلوث، وتقدير الجهد، وخطوط أساس للكبت.

عرض المستودع
مشاركة

Daksh SCRA (Source Code Review Assist)```

Author:

  • Debasis Mohanty ([email protected])
  • Twitter / X: @coffeensecurity
  • www.coffeeandsecurity.com
root@kitploit:~
## حول Daksh SCRA

تم تصميم Daksh SCRA (مساعد مراجعة الكود المصدري) لتعزيز كفاءة عملية مراجعة الكود المصدري، مما يوفر نهجاً منظماً ومنسقاً جيداً لمراجعي الكود.

بدلاً من الإبلاغ العشوائي عن كل شيء كمشكلة محتملة، يشجع Daksh SCRA على التحليل المدروس، ويحث على التحقيق في المشكلات المحتملة وتأكيدها. يقلل هذا النهج من التسرع في وضع علامة على كل مصدر قلق محتمل كخلل، مما يقلل من الارتباك والوقت الضائع في النتائج الإيجابية الخاطئة.

### الظهور الأول

تم تقديم Daksh SCRA في البداية خلال جلسة تدريبية لمراجعة الكود المصدري في Black Hat USA 2022 (6-9 أغسطس)، حيث تم عرضه بشكل خفي على جمهور محدد. وكان ظهوره العام الرسمي في Black Hat USA 2023 في لاس فيغاس.

## الميزات والوظائف

- **تحديد مجالات الاهتمام في الكود المصدري:** يشجع على التحقيق والتركيز والتأكيد بدلاً من تصنيف كل شيء بشكل عشوائي كخلل.
- **تحديد مجالات الاهتمام في مسارات الملفات (الأول عالمياً):** يتعرف على الأنماط في مسارات الملفات لتحديد الأقسام ذات الصلة للمراجعة.
- **استطلاع على مستوى البرمجيات لتحديد التقنيات المستخدمة:** يحدد تقنيات المشروع، مما يمكن مراجعي الكود من إجراء عمليات فحص دقيقة بقواعد مناسبة.
- **تقدير الجهد العلمي الآلي لمراجعة الكود (الأول عالمياً):** يوفر نهجاً قابلاً للقياس لتقدير الجهد المطلوب لمراجعة الكود.
- **الفحص المدرك للأطر:** يطبق تلقائياً قواعد خاصة بإطار العمل عند اكتشاف إطار عمل المشروع.
- **تقارير تحليل التلوث:** تقارير تدفق التلوث بتنسيق HTML لكل منصة مع سمات وضع الهاكر ووضع المحترفين.
- **RDL (لغة وصف القواعد):** منطق قواعد خارجي يُشار إليه بـ `rdl_ref` ويُنفذ عبر خط أنابيب `core/rdl_engine.py` - يدعم بوابات مدركة للملفات، وتعبيرات منطقية، وملاحظات المشروع، وبيانات وصفية للمنطق المُصدَّر في التقارير.
- **حالة الفحص / الاستئناف:** حفظ نقاط تفتيش للفحوصات الطويلة واستئنافها بعد الانقطاع.
- **خط الأساس للقمع:** إنشاء وتطبيق خط أساس من النتائج الإيجابية الخاطئة المعروفة لقمعها من التقارير المستقبلية.
- **واجهة الويب:** مشغل فحص قائم على المتصفح مع تغذية وحدة تحكم في الوقت الفعلي ومتصفح لأصول المهام.

> التحسينات النشطة مستمرة. تم التخطيط للعديد من الميزات والتحسينات الجديدة للإصدارات القادمة.

لا تتردد في المساهمة في تحديث أو إضافة قواعد جديدة والتطوير المستقبلي.

إذا وجدت أي أخطاء، أبلغ عنها إلى [[email protected]](mailto:[email protected]).

التوثيق المفصل: [https://dakshlabs.com/#docs](https://dakshlabs.com/#docs)

---

## البدء

هناك طريقتان لتشغيل Daksh SCRA - اختر ما يناسب سير عملك:

| | الأفضل لـ | الانتقال إلى |
|---|---|---|
| 🌐 **واجهة الويب (Docker)** | أسهل طريقة للبدء - أمر واحد، لوحة تحكم في المتصفح، تقدم فحص مباشر، ومتصفح للتقارير والأصول. موصى به لمعظم المستخدمين. | [واجهة الويب (Docker)](#web-ui-docker) |
| 💻 **سطر الأوامر (Python)** | البرمجة النصية، خطوط أنابيب CI، أو تشغيل الفحوصات بدون Docker. | [إعداد سطر الأوامر](#cli-setup) |

يعمل كلا المسارين على نفس محرك الفحص تماماً - واجهة الويب هي واجهة أمامية للمتصفح فوق نفس سطر الأوامر، لذا تكون النتائج متطابقة في كلتا الحالتين.

---

## واجهة الويب (Docker)

أسرع طريقة لتشغيل Daksh SCRA هي من خلال واجهة الويب القائمة على المتصفح، والتي يتم تشغيلها بأمر Docker Compose واحد. تمنحك مشغل فحص، وتغذية وحدة تحكم مباشرة، وسجلاً قابلاً للتصفح للتقارير السابقة، دون الحاجة إلى بيئة Python محلية.

يعمل إعداد Docker على تشغيل واجهة الويب وسطر الأوامر كخدمات مستقلة مبنية من نفس الصورة، لذا يمكنك استخدام أي منهما (أو كليهما) من نفس الحاوية.

### تشغيل واجهة الويب

وضع المقدمة (تتدفق السجلات إلى الطرفية):```bash
docker compose up --build

وضع الفصل / الخلفية:```bash docker compose up --build -d

root@kitploit:~
ثم افتح [http://localhost:8080](http://localhost:8080).

لاستخدام منفذ مختلف:```bash
DAKSH_PORT=9090 docker compose up

أوقف الحزمة باستخدام:```bash docker compose down

root@kitploit:~
### تسجيل الدخول

تتطلب واجهة الويب حسابًا. عند أول تشغيل، يتم إنشاء حساب مسؤول أولي من `DAKSH_ADMIN_USERNAME` / `DAKSH_ADMIN_PASSWORD` (قم بتعيينهما في `.env`)؛ إذا تُرك `DAKSH_ADMIN_PASSWORD` غير معيّن، يتم إنشاء كلمة مرور عشوائية وطباعتها مرة واحدة في سجل بدء تشغيل API - احفظها، حيث لا يمكن استعادتها لاحقًا.

سيُطلب منك تعيين كلمة المرور الخاصة بك (واختياريًا اسم المستخدم) في أول مرة تسجل فيها الدخول. يمكن لحساب المسؤول إنشاء حسابات إضافية عبر نقطة نهاية API `POST /api/v1/auth/users` (لا توجد واجهة مخصصة لهذا بعد). راجع `.env.example` للحصول على القائمة الكاملة لإعدادات المصادقة (مدة الجلسة، أمان ملفات تعريف الارتباط، CORS).

### ما ستحصل عليه

- منشئ أوامر متجاوب لأوضاع الفحص، والاستطلاع، والتقدير، والاستطلاع+التقدير، والقائمة، وPDF من JSON
- بث وحدة التحكم في الوقت الفعلي وتقدم مباشر لكل مرحلة أثناء التنفيذ
- لقطات مصنّفة لكل مهمة لمخرجات HTML / PDF / JSON
- تنقل سريع داخل المتصفح عبر نموذج التشغيل، والبث المباشر، والملفات المصنّفة، والمهام الأخيرة
- متصفح أدلة مدمج لاختيار مسارات الهدف (مراعٍ لنظام التشغيل: Windows، macOS، Linux / Docker)

تحت الغطاء، يظل CLI هو مصدر الحقيقة - فهو يقوم بكل الفحص ويولّد كل مخرجات HTML / PDF / JSON. تشغّل واجهة الويب مهمة نشطة واحدة في كل مرة وتلتقط لقطات لمخرجات كل مهمة مكتملة في `runtime/webui/jobs/<job-id>/artifacts/` بحيث تبقى التقارير السابقة قابلة للوصول.

### تشغيل CLI في Docker

لا تحتاج إلى بيئة Python محلية لاستخدام CLI أيضًا - فهو متاح كخدمة Compose خاصة به، مبنية من نفس الصورة:```bash
docker compose run --rm cli -h
docker compose run --rm cli -r auto -t /scan-targets/path/to/source

ما في الصورة

  • خلفية FastAPI + واجهة أمامية لـ Web UI
  • كامل واجهة Daksh SCRA CLI، كخدمة منفصلة
  • Playwright Chromium، لتوليد ملفات PDF
  • وحدات تخزين دائمة reports/ و runtime/
  • تثبيت مسارات المضيف بحيث يمكن للفحوصات الوصول إلى أشجار المصدر من داخل الحاوية

نقاط التثبيت الرئيسية:

نقطة التثبيتالمسار داخل الحاوية
مصدر المشروع/app
جذر الفحص الافتراضي/scan-targets
أسماء محركات أقراص المضيف/host, /host/c, /host/d
تثبيتات WSL/mnt, /run/desktop/mnt/host

متغيرات البيئة (قم بتكوينها في .env):

المتغيرالوصف
DAKSH_PORTمنفذ Web UI (الافتراضي: 8080)
DAKSH_SCAN_ROOTدليل الهدف الافتراضي داخل الحاوية
DAKSH_HOST_SOURCEمسار المضيف لتثبيته كـ /scan-targets (الافتراضي: /tmp)
DAKSH_HOST_MOUNTجذر تثبيت مضيف إضافي
DAKSH_HOST_Cمسار محرك الأقراص C: في Windows (WSL)
DAKSH_HOST_Dمسار محرك الأقراص D: في Windows (WSL)
DAKSH_DESKTOP_MOUNTمسار تثبيت سطح المكتب في WSL
DAKSH_BROWSE_ROOTSتجاوز جذور متصفح الدليل (مفصولة بفواصل)
DAKSH_ADMIN_USERNAMEاسم مستخدم المسؤول الأولي (الافتراضي: admin)
DAKSH_ADMIN_PASSWORDكلمة مرور المسؤول الأولية - يُوصى بشدة بتعيينها صراحةً

انسخ .env.example إلى .env واضبط المسارات وبيانات الاعتماد لجهازك قبل تشغيل Docker.


إعداد CLI

هل تفضل تشغيل Daksh SCRA مباشرةً مع Python؟ إليك كيفية إعداده محليًا.

المتطلبات الأساسية

  • Python 3.8+
  • جميع المكتبات المدرجة في requirements.txt

1. تنزيل Daksh SCRA```bash

git clone https://github.com/coffeeandsecurity/DakshSCRA.git

root@kitploit:~
أو قم بتنزيل أحدث ملف مضغوط من [https://github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) وفك ضغطه.

### 2. إعداد بيئة افتراضية

> 💡 يمكن إنشاء البيئة الافتراضية في أي مجلد - لا يلزم أن تكون داخل مجلد DakshSCRA.

**الخيار أ: الإعداد بخطوة واحدة (موصى به)**```bash
python setup_env.py

هذا السكربت ينشئ البيئة الافتراضية، ويُثبّت جميع التبعيات، ويُثبّت متصفح Chromium الخاص بـ Playwright (المطلوب لتصدير PDF).

الخيار ب: الإعداد اليدوي

Windows:```bash python -m venv daksh-env .\daksh-env\Scripts\activate

root@kitploit:~
macOS / Linux:```bash
python3 -m venv daksh-env
source daksh-env/bin/activate

ثم قم بتثبيت التبعيات:```bash cd path/to/DakshSCRA pip install -r requirements.txt playwright install chromium

root@kitploit:~
---

## استخدام سطر الأوامر

استخدم `python` داخل بيئة افتراضية، أو `python3` خارجها.

### خيارات سطر الأوامر```
usage: dakshscra.py [-h] [-r RULES] [-f FILE_TYPES] [-v] [-t TARGET_DIR]
                    [-l {R,RF}] [--recon] [--rs] [--estimate]
                    [-rpt FORMATS] [--pdf-from-json]
                    [--json-input-dir PATH] [--pdf-output PATH]
                    [--pdf-multi-dir PATH] [--pdf-single-only]
                    [--skip-analysis] [--loc]
                    [--baseline-file PATH] [--baseline-generate] [--no-baseline]
                    [--review-config PATH]
                    [--resume-scan] [--state-file PATH] [--no-state] [--state]
الخيارالوصف
-r RULESقواعد المنصة (مثل php، java، php,java) أو auto للاكتشاف التلقائي
-f FILE_TYPESتجاوز أنواع الملفات الافتراضية للفحص
-vمستوى التفصيل (-v، -vv، -vvv)
-t TARGET_DIRدليل الكود المصدري المستهدف
-l {R,RF}عرض قواعد المنصة + الأطر [R] أو تضمين أنواع الملفات [RF]
--reconتشغيل الاستطلاع (اكتشاف المنصة / الإطار / اللغة)
--rs, --recon-strictاستطلاع صارم: اكتشافات عالية الثقة فقط (يُستخدم مع --recon)
--estimateتقدير جهد مراجعة الكود بناءً على حجم قاعدة الكود
-rpt, --report FORMATSصيغ التقرير: html، pdf، أو html,pdf (الافتراضي: html)
--pdf-from-jsonإنشاء تقارير PDF من مخرجات JSON الموجودة دون إعادة الفحص
--json-input-dir PATHدليل تقارير JSON (الافتراضي: ./reports/data)
--pdf-output PATHمسار إخراج PDF واحد (الافتراضي: ./reports/scan/pdf/report.pdf)
--pdf-multi-dir PATHدليل إخراج PDF متعدد الملفات (الافتراضي: ./reports/scan/pdf/multi-file)
--pdf-single-onlyإنشاء ملف PDF المدمج الفردي فقط؛ تخطي مجموعة الملفات المتعددة لكل منصة
--skip-analysisتعطيل مرحلة المحلل لهذا التشغيل
--locحساب الأسطر الفعالة من الكود

مثال على الاستخدام

-f (أنواع الملفات) اختياري. إذا لم يتم تحديده، يستخدم DakshSCRA أنواع الملفات الافتراضية للمنصة (المنصات) المحددة.```bash

Single platform scan

python dakshscra.py -r php -t /path/to/source

Multiple platforms

python dakshscra.py -r php,java,cpp -t /path/to/source

Auto-detect platform and apply matching rules

python dakshscra.py -r auto -t /path/to/source

Override filetypes

python dakshscra.py -r php -f dotnet -t /path/to/source

Reconnaissance only (no scanning)

python dakshscra.py --recon -t /path/to/source

Reconnaissance + scanning

python dakshscra.py --recon -r php -t /path/to/source

Strict recon (high-confidence detections only)

python dakshscra.py --recon --rs -t /path/to/source

Effort estimation

python dakshscra.py --estimate -t /path/to/source

Scan with HTML + PDF report output

python dakshscra.py -r auto -t /path/to/source -rpt html,pdf

Verbosity levels

python dakshscra.py -r php -v -t /path/to/source # default python dakshscra.py -r php -vvv -t /path/to/source # show all pattern checks

Generate suppression baseline from current findings

python dakshscra.py -r auto -t /path/to/source --baseline-generate

Apply suppression baseline (suppress known FPs)

python dakshscra.py -r auto -t /path/to/source --baseline-file config/suppressions.json

Disable baseline for this run

python dakshscra.py -r auto -t /path/to/source --no-baseline

Apply findings triage / review config

python dakshscra.py -r auto -t /path/to/source --review-config config/review.json

Scan with checkpoint state enabled

python dakshscra.py -r auto -t /path/to/source --state

Resume an interrupted scan

python dakshscra.py -r auto -t /path/to/source --resume-scan

Resume with a custom state file

python dakshscra.py -r auto -t /path/to/source --resume-scan --state-file runtime/scan_state.json

Generate PDF from existing JSON outputs (no re-scan)

python dakshscra.py --pdf-from-json

Generate PDF from a custom JSON directory

python dakshscra.py --pdf-from-json --json-input-dir ./custom/reports/data

Custom output paths for PDF

python dakshscra.py --pdf-from-json --pdf-output ./reports/scan/pdf/custom.pdf --pdf-multi-dir ./reports/scan/pdf/multi-file

Single combined PDF only (skip per-platform set)

python dakshscra.py --pdf-from-json --pdf-single-only

root@kitploit:~
### قواعد وأُطر المنصات المدعومة```bash
python dakshscra.py -l R    # List platform rules and framework mappings
python dakshscra.py -l RF   # List platform rules, framework mappings, and filetypes

المنصات وأطر العمل المدعومة حاليًا:

المنصةأطر العمل
dotnetaspnetcore, entityframework
phpcodeigniter, drupal, laravel, symfony, wordpress
javahibernate, spring, springboot
javascriptangular, express, nestjs, nextjs, react, vue
kotlinktor, springkotlin
pythondjango, fastapi, flask
goecho, fiber, gin
cfreertos
cppboost, qt
androidcordova-android, flutter-android, ionic-android, jetpack, nativescript-android, reactnative-android, xamarin-android
ioscordova-ios, flutter-ios, ionic-ios, nativescript-ios, reactnative-ios, swiftui, uikit, xamarin-ios
reactnativereactnative
flutterflutter
xamarinxamarin
ionicionic
nativescriptnativescript
cordovacordova
rubyrails, sinatra
rustactix, axum, rocket
common-

للحصول على أحدث المنصات وأطر العمل المدعومة، قم دائمًا بتشغيل:```bash python dakshscra.py -l R

root@kitploit:~
---

## مرجع الإعدادات

### `config/tool.yaml`

يتم التحكم في الإعدادات الافتراضية لوقت تشغيل Daksh SCRA من خلال `config/tool.yaml`.```yaml
state_management:
  enabled: false
  resume_mode: manual
  persist_after_seconds: 300
  persist_interval_seconds: 30
  default_state_file: runtime/scan_state.json
  cleanup_on_success: false

analysis:
  run_by_default: true
  include_frameworks: true
  report_theme: hacker_mode

خيارات تكوين المحلل:

  • analysis.run_by_default
    • true: يعمل المحلل تلقائيًا أثناء الفحص
    • false: يتم تعطيل المحلل ما لم يتم إعادة تمكينه في التكوين أو عبر CLI
  • analysis.include_frameworks
    • true: تضمين إدخالات المحلل على مستوى الأطر حيث يوجد اكتشاف للأطر
    • false: إخراج المحلل على مستوى المنصة فقط
  • analysis.report_theme
    • hacker_mode: سمة محلل حديثة داكنة عالية التباين (افتراضي)
    • professional_mode: سمة محلل حديثة فاتحة
    • both: إنشاء كلا متغيري السمة جنبًا إلى جنب

تأليف قواعد RDL

RDL (لغة وصف القواعد) هي طبقة منطق القواعد الخارجية في DakshSCRA. في البنية الحالية:

  • تظل قواعد XML هي مخزون القواعد وتحمل بيانات وصفية مثل name وregex والأوصاف وscan_config اختياريًا.
  • يتم تنفيذ منطق RDL بواسطة core/rdl_engine.py.
  • توجد ملفات منطق القواعد تحت rules/scanning/logic/... ويتم الإشارة إليها من XML باستخدام <rdl_ref>.
  • يتم حل قيم rdl_ref نسبيًا إلى rules/scanning/، على سبيل المثال: logic/php/core/some_rule.rdl -> rules/scanning/logic/php/core/some_rule.rdl
  • يتم تصدير نتائج المنطق إلى JSON التقرير كبيانات وصفية مثل logic_engine وlogic_source وlogic_reason وlogic_trace وlogic_consulted_files وlogic_outcome.

لم يعد نموذج <rdl> المضمّن الأقدم هو البنية النشطة ولا ينبغي استخدامه للقواعد الجديدة.

بنية RDL في لمحة```text

XML rule -> regex / exclude / scan_config / descriptions -> rdl_ref -> rules/scanning/logic///.rdl -> core/rdl_engine.py -> pass / fail -> reason / fail_reason -> trace / consulted_files / outcome

root@kitploit:~
#### تسلسل الفحص

بالنسبة لقاعدة المصدر، يقوم DakshSCRA بتقييم المنطق بهذا الترتيب:

1. يقوم Recon باختيار المنصات والأطر المطابقة.
2. يتم تحميل قاعدة XML من `rules/scanning/platform/...`.
3. يقوم `regex` بالعثور على الأسطر المرشحة أو مطابقات الملف الكامل عند وجودها.
4. يقوم `exclude` بإزالة الضوضاء الواضحة لتلك القاعدة، إذا كانت موجودة.
5. يتم تقييم ملف `.rdl` الخارجي من `rdl_ref` مقابل نص الملف الحالي، ومسار الملف الحالي، وجذر المشروع.
6. إذا نجح سكربت RDL، يحتفظ DakshSCRA بالنتيجة ويدمج بيانات تعريف المنطق المُصدَّرة في مخرجات التقرير.
7. إذا فشل سكربت RDL، يتم كتم المطابقة مع سبب فشل RDL وبيانات تعريف تتبع القرار.

بالنسبة لقواعد مسارات الملفات في `filepaths.xml`، ينطبق نفس نموذج `rdl_ref`، لكن موضوع المطابقة هو
المسار النسبي المُطبَّع بدلاً من نص الكود المصدري. في هذا الوضع، يستقبل RDL سلسلة المسار النسبي
كنص الملف الحالي وسياق المسار.

#### هيكل القاعدة الحالي```xml
<rule>
  <name>Rule Name</name>
  <regex><![CDATA[regex_to_match]]></regex>
  <rdl_ref>logic/common/core/insecure_sql_query_unsafe_string_concatenation.rdl</rdl_ref>
  <exclude><![CDATA[pattern_to_exclude_lines]]></exclude>  <!-- optional -->
  <scan_config>...</scan_config>                           <!-- optional -->
  <rule_desc>Short description of what the rule detects.</rule_desc>
  <vuln_desc>Why the pattern matters.</vuln_desc>
  <developer>Fix guidance for developers.</developer>
  <reviewer>Manual confirmation guidance for reviewers.</reviewer>
</rule>

بنية .rdl الحالية```text

VERSION 1 WHEN PRESENT /\b(?:mysql_query|mysqli_query|->query)\s*\(/i WHEN EXPR PRESENT:\$_(GET|POST|REQUEST|COOKIE) && MISSING:\b(?:prepare|bindParam|bindValue|PDO::prepare)\b REPORT AS area_of_interest REASON SQL query execution appears reachable without parameterisation in this file. FAIL_REASON Matching query API was found, but the file also contains prepared-statement indicators. TRACE SQLi gate: input source present and mitigation missing.

root@kitploit:~
#### التخطيط الحالي```text
rules/
└── scanning/
    ├── platform/
    │   ├── php/php.xml
    │   ├── java/java.xml
    │   └── ...
    └── logic/
        ├── common/core/
        ├── php/core/
        ├── php/framework/laravel/
        ├── mobile/android/core/
        ├── filepaths/core/
        └── ...

دلالات التنفيذ

  • يتم تقييم WHEN PRESENT وWHEN MISSING وWHEN CURRENT_FILE_MATCHES مقابل نص الملف الحالي.
  • يتم تقييم WHEN FILE_NAME_IS وWHEN FILE_PATH_MATCHES مقابل سياق مسار الملف الحالي.
  • يدعم WHEN EXPR المنطق البولياني عبر مسندات PRESENT: وMISSING: وEXISTS:.
  • لا يقيّم OBSERVE PROJECT_HAS_GLOB ... AS ... النتيجة؛ بل يسجل ملفات المشروع ذات الصلة في بيانات التتبع.
  • تتحكم REPORT AS وREASON وFAIL_REASON وTRACE في بيانات التقارير المُصدَّرة.
  • يمكن كتابة رموز regex إما كأنماط خام أو كـ /pattern/flags، مع دعم i وm وs.

أوامر RDL المدعومة

الأمرالسلوكالاستخدام النموذجي
WHEN PRESENT <regex>يتطلب وجود نمط في نص الملف الحالييتطلب واجهة برمجية خطيرة متزامنة أو حقلًا حساسًا
WHEN MISSING <regex>يتطلب غياب نمط من نص الملف الحالييمنع الظهور عندما يكون التخفيف موجودًا بالفعل
WHEN EXPR <expr>يقيّم التعبيرات البوليانية باستخدام PRESENT: / MISSING: / EXISTS: مع && و`
WHEN CURRENT_FILE_MATCHES <regex>يطابق النص الكامل للملف الحالييعيد فحص شروط الملف الكامل المعقدة
WHEN FILE_NAME_IS <name>يتطلب تطابق اسم الملف الحالي تمامًايحدد قواعد plist / manifest / config
WHEN FILE_PATH_MATCHES <glob>يتطلب تطابق المسار النسبي الحالي مع globيضيّق قواعد مسارات الأطر/الإعدادات
UNLESS CURRENT_FILE_MATCHES <regex>يفشل عندما يطابق الملف الكامل نمط استبعاديمنع الحالات الهيكلية الآمنة المعروفة
OBSERVE PROJECT_HAS_GLOB <glob> AS <label>يسجل ملفات المشروع ذات الصلة في بيانات التتبعيُظهر ملفات الإعدادات الداعمة أو الملفات المصاحبة
REPORT AS <outcome>يحدد نتيجة القاعدة، عادةً area_of_interestنتائج صريحة مقاومة للمستقبل
REASON <text>السبب المعروض عندما تنجح القاعدةيشرح لماذا بقيت النتيجة مرئية
FAIL_REASON <text>السبب المعروض عندما تمنع القاعدة تطابقًايشرح لماذا تمت تصفية النتيجة
TRACE <text>يضيف أسطر تتبع للتصحيح/القراردعم الترحيل/التصحيح

تدعم التعبيرات البوليانية في WHEN EXPR:

  • PRESENT:<regex>
  • MISSING:<regex>
  • EXISTS:<regex>
  • && و|| و! والأقواس

مثال 1 - بوابة حقن SQL في PHP

قاعدة XML:```xml Possible SQL Injection in Query Execution query)\s*\(]]> <rdl_ref>logic/common/core/insecure_sql_query_unsafe_string_concatenation.rdl</rdl_ref> <rule_desc>...</rule_desc>

root@kitploit:~
ترجمة:

RDL الخارجي:```text
VERSION 1
WHEN PRESENT /\b(?:mysql_query|mysqli_query|->query)\s*\(/i
WHEN EXPR PRESENT:\$_(GET|POST|REQUEST|COOKIE) && MISSING:\b(?:prepare|bindParam|bindValue|PDO::prepare)\b
REPORT AS area_of_interest
REASON Query execution appears to rely on direct input without parameterisation.
FAIL_REASON Query API matched, but parameterised query indicators were also found in the file.

مثال 2 - قاعدة ملف Android manifest مع فحوصات مدركة للملفات

قاعدة XML:```xml Exported Components Without Permission activity|service|receiver|provider)\s[^>]*android:name="(?P[^"]+)"[^>]*android:exported="true"[^>]*(?:/>|>)]]> <rdl_ref>logic/mobile/android/core/exported_components.rdl</rdl_ref> <scan_config>...</scan_config>

root@kitploit:~
External RDL:```text
VERSION 1
WHEN FILE_NAME_IS AndroidManifest.xml
WHEN CURRENT_FILE_MATCHES /android:exported\s*=\s*"true"/i
WHEN MISSING /android:permission\s*=\s*"/i
REPORT AS area_of_interest
REASON Exported component appears reachable without a permission guard.

مثال 3 - قاعدة منطقة الاهتمام لمسار الملف

قاعدة XML:```xml Admin Section File Path <rdl_ref>logic/filepaths/core/admin_section.rdl</rdl_ref>

root@kitploit:~
ترجمة المحتوى:

RDL الخارجي:```text
VERSION 1
WHEN CURRENT_FILE_MATCHES /(^|\/)(admin|administrator|root)(\/|$)/i
UNLESS CURRENT_FILE_MATCHES /(^|\/)(tests?|docs?|samples?|examples?)(\/|$)/i
REPORT AS area_of_interest
REASON File path suggests privileged application functionality.
FAIL_REASON Path matched an excluded documentation or sample location.

إرشادات التأليف

  • اجعل regex واسعًا بما يكفي لالتقاط المرشحين، ثم استخدم RDL لتصفية السياق.
  • فضّل rdl_ref لجميع منطق القواعد واحتفظ بملف .rdl بجوار شجرة المنطق المناسبة للمنصة/الإطار.
  • لا تُضف كتل <rdl> سطرية جديدة.
  • استخدم WHEN PRESENT / WHEN MISSING للبوابات البسيطة وWHEN EXPR فقط عندما يكون المنطق منطقيًا فعليًا (boolean).
  • ضع التبرير الموجّه للمراجعين في REASON وتفسيرات الكبت في FAIL_REASON.
  • تعامل مع PRESENT وMISSING كفحوصات على مستوى الملف بأكمله. أي تخفيف في أي مكان بالملف يمكن أن يكبت كل تطابق من ذلك الملف.
  • استخدم OBSERVE PROJECT_HAS_GLOB لإثراء النتائج بسياق المشروع، وليس كبوابة نجاح/فشل.
  • حافظ على استقرار مسارات logic/... واجعلها مقيّدة بالمنصة بحيث تبقى قواعد XML رقيقة وتظل طبقة المنطق قابلة لإعادة الاستخدام.

هيكل مخرجات التقرير

تُكتب جميع المخرجات تحت دليل reports/:``` reports/ ├── scan/ │ ├── html/ │ │ ├── report.html # Single-file HTML scan report │ │ └── multi-file/ # Per-platform HTML report set │ ├── pdf/ │ │ ├── report.pdf # Single-file PDF scan report │ │ └── multi-file/ # Per-platform PDF report set │ ├── recon/ │ │ └── reconnaissance.html # Reconnaissance HTML report │ └── estimate/ │ └── estimation.html # Effort estimation HTML report ├── analysis/ │ └── / │ ├── analysis.html # Taint analysis report (default theme) │ ├── analysis_professional.html # Professional theme (if theme=both) │ ├── analysis_xref.html # Cross-reference report │ └── analysis.json # Structured analysis data └── data/ ├── areas_of_interest.json # AoI findings ├── filepaths_aoi.json # File path AoI findings ├── summary.json # Scan summary ├── recon.json # Recon summary └── analysis.json # Analyzer output

root@kitploit:~
تُكتب ملفات التشغيل (حالة الفحص، السجلات، المخزون) تحت `runtime/`.

عند التشغيل عبر واجهة الويب، يتم أيضًا التقاط لقطات من مخرجات كل وظيفة تحت `runtime/webui/jobs/<job-id>/artifacts/` (انظر [واجهة الويب (Docker)](#web-ui-docker)).

---

## المؤلف

| | |
|---|---|
| الموقع الإلكتروني | [coffeeandsecurity.com](https://www.coffeeandsecurity.com) |
| البريد الإلكتروني | [email protected] |
| تويتر / X | [@coffeensecurity](https://x.com/coffeensecurity) |
| المصدر | [github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) |
| الترخيص | رخصة جنو العمومية العامة الإصدار 3.0 (GPL-3.0) |

إذا ساعدك DakshSCRA في توفير وقت أو جهد أو تكلفة كبيرة لفريقك، أو قلل الاعتماد على الأدوات التجارية باهظة الثمن، أو حسّن تغطية المراجعة، أو جعل مراجعة الكود أكثر تنظيمًا وفعالية، فلا تتردد في التواصل ومشاركة تجربتك. أنا دائمًا منفتح على الملاحظات المدروسة والمحادثات المثيرة للاهتمام.

وجدت خطأ أو تريد المساهمة؟ افتح مشكلة (issue) أو طلب سحب (pull request) على GitHub.
تنزيل الأداة
--baseline-file PATHملف خط الأساس للقمع (JSON)
--baseline-generateإنشاء خط أساس للقمع من النتائج الحالية
--no-baselineتعطيل قمع خط الأساس لهذا التشغيل
--review-config PATHملف فرز النتائج (JSON)؛ قمع النتائج الإيجابية الخاطئة التي تمت مراجعتها سابقًا من التقارير
--resume-scanاستئناف فحص تمت مقاطعته سابقًا من ملف الحالة
--state-file PATHمسار ملف حالة / نقطة تفتيش الفحص المخصص
--no-stateتعطيل حفظ نقاط تفتيش حالة الفحص لهذا التشغيل
--stateفرض تمكين حفظ نقاط تفتيش حالة الفحص لهذا التشغيل