Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
DakshSCRA — फ्रेमवर्क-जागरूक स्थैतिक कोड विश्लेषण उपकरण जो प्लेटफ़ॉर्म-विशिष्ट नियमों, टेंट विश्लेषण, प्रयास अनुमान और दमन आधार रेखाओं के साथ स्वचालित स्रोत कोड समीक्षा के लिए है। | Kitploit
उपकरण/GitHubGitHub/coffeeandsecurity/dakshscra
स्थैतिक विश्लेषणभेद्यता स्कैनरस्थैतिक कोड विश्लेषण (SAST)भेद्यता विश्लेषणकोड विश्लेषणवेब सुरक्षापेनिट्रेशन टेस्टिंगDevSecOpsमोबाइल सुरक्षालर्निंग और शिक्षा
GitHubcoffeeandsecurity/dakshscra

DakshSCRA

4579217 दिन पहलेKitploit द्वारा समीक्षित

फ्रेमवर्क-जागरूक स्थैतिक कोड विश्लेषण उपकरण जो प्लेटफ़ॉर्म-विशिष्ट नियमों, टेंट विश्लेषण, प्रयास अनुमान और दमन आधार रेखाओं के साथ स्वचालित स्रोत कोड समीक्षा के लिए है।

रिपॉजिटरी देखें

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Daksh SCRA (सोर्स कोड रिव्यू असिस्ट)```

Author:

  • Debasis Mohanty ([email protected])
  • Twitter / X: @coffeensecurity
  • www.coffeeandsecurity.com
root@kitploit:~
## Daksh SCRA के बारे में

Daksh SCRA (Source Code Review Assist) सोर्स कोड समीक्षा प्रक्रिया की दक्षता बढ़ाने के लिए बनाया गया है, जो कोड समीक्षकों के लिए एक सुव्यवस्थित और संगठित दृष्टिकोण प्रदान करता है।

हर चीज़ को बिना सोचे-समझे संभावित समस्या के रूप में चिह्नित करने के बजाय, Daksh SCRA विचारशील विश्लेषण को बढ़ावा देता है, संभावित समस्याओं की जाँच और पुष्टि पर ज़ोर देता है। यह दृष्टिकोण हर संभावित चिंता को बग के रूप में टैग करने की होड़ को कम करता है, जिससे झूठे सकारात्मक परिणामों पर बर्बाद होने वाला समय और भ्रम घटता है।

### पहली उपस्थिति

Daksh SCRA को शुरुआत में Black Hat USA 2022 (6-9 अगस्त) में एक सोर्स कोड समीक्षा प्रशिक्षण सत्र के दौरान पेश किया गया था, जहाँ इसे एक विशिष्ट दर्शकों के सामने विनम्रता से प्रस्तुत किया गया। इसकी आधिकारिक सार्वजनिक शुरुआत लास वेगास में Black Hat USA 2023 में हुई।

## विशेषताएँ और कार्यक्षमताएँ

- **सोर्स कोड में रुचि के क्षेत्रों की पहचान करता है:** हर चीज़ को बिना सोचे-समझे बग के रूप में लेबल करने के बजाय केंद्रित जाँच और पुष्टि को प्रोत्साहित करता है।
- **फ़ाइल पथों में रुचि के क्षेत्रों की पहचान करता है (विश्व में पहली बार):** समीक्षा के लिए प्रासंगिक अनुभागों को इंगित करने हेतु फ़ाइल पथों में पैटर्न पहचानता है।
- **उपयोग की गई तकनीकों की पहचान के लिए सॉफ़्टवेयर-स्तरीय टोही:** प्रोजेक्ट की तकनीकों की पहचान करता है, जिससे कोड समीक्षक उपयुक्त नियमों के साथ सटीक स्कैन कर सकते हैं।
- **कोड समीक्षा के लिए स्वचालित वैज्ञानिक प्रयास अनुमान (विश्व में पहली बार):** कोड समीक्षा के लिए आवश्यक प्रयास का अनुमान लगाने का एक मापने योग्य दृष्टिकोण प्रदान करता है।
- **फ्रेमवर्क-जागरूक स्कैनिंग:** जब प्रोजेक्ट का फ्रेमवर्क पहचाना जाता है, तो स्वचालित रूप से फ्रेमवर्क-विशिष्ट नियम लागू करता है।
- **टेंट विश्लेषण रिपोर्ट:** हैकर-मोड और प्रोफेशनल-मोड थीम के साथ प्लेटफ़ॉर्म-वार HTML टेंट प्रवाह रिपोर्ट।
- **RDL (Rule Description Language):** बाहरी नियम तर्क जिसे `rdl_ref` के साथ संदर्भित किया जाता है और `core/rdl_engine.py` पाइपलाइन द्वारा निष्पादित किया जाता है - फ़ाइल-जागरूक गेट, बूलियन एक्सप्रेशन, प्रोजेक्ट अवलोकन, और रिपोर्ट में निर्यातित तर्क मेटाडेटा का समर्थन करता है।
- **स्कैन स्थिति / फिर से शुरू करना:** लंबे स्कैन को चेकपॉइंट करें और बाधा के बाद फिर से शुरू करें।
- **दमन आधार रेखा:** ज्ञात झूठे सकारात्मक परिणामों की आधार रेखा उत्पन्न करें और लागू करें ताकि उन्हें भविष्य की रिपोर्टों से दबाया जा सके।
- **वेब UI:** वास्तविक समय कंसोल फ़ीड और जॉब आर्टिफैक्ट ब्राउज़र के साथ ब्राउज़र-आधारित स्कैन लॉन्चर।

> सक्रिय संवर्द्धन जारी है। आगामी रिलीज़ के लिए कई नई सुविधाओं और सुधारों की योजना बनाई गई है।

नए नियमों को अपडेट करने या जोड़ने और भविष्य के विकास में योगदान देने के लिए स्वतंत्र महसूस करें।

यदि आपको कोई बग मिले, तो उन्हें [[email protected]](mailto:[email protected]) पर रिपोर्ट करें।

विस्तृत दस्तावेज़ीकरण: [https://dakshlabs.com/#docs](https://dakshlabs.com/#docs)

---

## आरंभ करना

Daksh SCRA चलाने के दो तरीके हैं - जो भी आपके वर्कफ़्लो के अनुकूल हो उसे चुनें:

| | सबसे उपयुक्त | यहाँ जाएँ |
|---|---|---|
| 🌐 **वेब UI (Docker)** | शुरू करने का सबसे आसान तरीका - एक कमांड, एक ब्राउज़र डैशबोर्ड, लाइव स्कैन प्रगति, और एक रिपोर्ट/आर्टिफैक्ट ब्राउज़र। अधिकांश उपयोगकर्ताओं के लिए अनुशंसित। | [वेब UI (Docker)](#web-ui-docker) |
| 💻 **CLI (Python)** | स्क्रिप्टिंग, CI पाइपलाइन, या Docker के बिना स्कैन चलाना। | [CLI सेटअप](#cli-setup) |

दोनों मार्ग बिल्कुल समान स्कैनिंग इंजन चलाते हैं - वेब UI उसी CLI के ऊपर एक ब्राउज़र फ्रंट एंड है, इसलिए परिणाम दोनों तरह से समान होते हैं।

---

## वेब UI (Docker)

Daksh SCRA चलाने का सबसे तेज़ तरीका इसके ब्राउज़र-आधारित वेब UI के माध्यम से है, जिसे एक ही Docker Compose कमांड से लॉन्च किया जाता है। यह आपको एक स्कैन लॉन्चर, एक लाइव कंसोल फ़ीड, और पिछली रिपोर्टों का ब्राउज़ करने योग्य इतिहास देता है, बिना स्थानीय Python वातावरण की आवश्यकता के।

Docker सेटअप वेब UI और CLI को उसी इमेज से निर्मित स्वतंत्र सेवाओं के रूप में चलाता है, इसलिए आप उसी कंटेनर से दोनों (या दोनों में से कोई भी) उपयोग कर सकते हैं।

### वेब UI लॉन्च करें

फोरग्राउंड मोड (लॉग आपके टर्मिनल पर स्ट्रीम होते हैं):```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:~
### लॉगिन करना

Web UI के लिए एक खाते की आवश्यकता होती है। पहली बार शुरू होने पर, `DAKSH_ADMIN_USERNAME` / `DAKSH_ADMIN_PASSWORD` से एक प्रारंभिक व्यवस्थापक खाता बनाया जाता है (इन्हें `.env` में सेट करें); यदि `DAKSH_ADMIN_PASSWORD` को खाली छोड़ दिया जाता है, तो एक यादृच्छिक पासवर्ड उत्पन्न होता है और API के स्टार्टअप लॉग में एक बार प्रिंट होता है - इसे सहेज लें, क्योंकि बाद में इसे पुनर्प्राप्त नहीं किया जा सकता।

पहली बार लॉगिन करने पर आपको अपना स्वयं का पासवर्ड (और, वैकल्पिक रूप से, उपयोगकर्ता नाम) सेट करना होगा। एक व्यवस्थापक खाता `POST /api/v1/auth/users` API एंडपॉइंट के माध्यम से अतिरिक्त खाते बना सकता है (इसके लिए अभी तक कोई समर्पित UI नहीं है)। प्रमाणीकरण से संबंधित सेटिंग्स (सत्र अवधि, कुकी सुरक्षा, CORS) की पूरी सूची के लिए `.env.example` देखें।

### आपको क्या मिलता है

- स्कैन, रिकॉन, अनुमान, रिकॉन+अनुमान, सूची, और PDF-से-JSON मोड के लिए प्रतिक्रियाशील कमांड बिल्डर
- निष्पादन के दौरान रीयल-टाइम कंसोल फ़ीड और प्रति-चरण लाइव प्रगति
- HTML / PDF / JSON आउटपुट के लिए प्रति-कार्य आर्टिफैक्ट स्नैपशॉट
- रन फॉर्म, लाइव फ़ीड, आर्टिफैक्ट्स, और हाल के कार्यों में तेज़ इन-ब्राउज़र नेविगेशन
- लक्ष्य पथ चुनने के लिए अंतर्निहित निर्देशिका ब्राउज़र (OS-जागरूक: Windows, macOS, Linux / Docker)

हुड के नीचे, CLI ही स्रोत सत्य है - यह सभी स्कैनिंग करता है और हर HTML / PDF / JSON आउटपुट उत्पन्न करता है। Web UI एक समय में एक सक्रिय कार्य चलाता है और प्रत्येक पूर्ण कार्य के आउटपुट को `runtime/webui/jobs/<job-id>/artifacts/` में स्नैपशॉट करता है ताकि पिछली रिपोर्टें सुलभ रहें।

### Docker में CLI चलाना

CLI का उपयोग करने के लिए आपको स्थानीय Python वातावरण की आवश्यकता नहीं है - यह अपनी स्वयं की 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_PORTWeb UI पोर्ट (डिफ़ॉल्ट: 8080)
DAKSH_SCAN_ROOTकंटेनर के अंदर डिफ़ॉल्ट लक्ष्य निर्देशिका
DAKSH_HOST_SOURCE/scan-targets के रूप में माउंट करने के लिए होस्ट पाथ (डिफ़ॉल्ट: /tmp)
DAKSH_HOST_MOUNTअतिरिक्त होस्ट माउंट रूट
DAKSH_HOST_CWindows C: ड्राइव पाथ (WSL)
DAKSH_HOST_DWindows D: ड्राइव पाथ (WSL)
DAKSH_DESKTOP_MOUNTWSL डेस्कटॉप माउंट पाथ
DAKSH_BROWSE_ROOTSडायरेक्टरी ब्राउज़र रूट ओवरराइड करें (कॉमा-सेपरेटेड)
DAKSH_ADMIN_USERNAMEप्रारंभिक एडमिन उपयोगकर्ता नाम (डिफ़ॉल्ट: admin)
DAKSH_ADMIN_PASSWORDप्रारंभिक एडमिन पासवर्ड - स्पष्ट रूप से सेट करने की दृढ़ता से अनुशंसा की जाती है

Docker चलाने से पहले .env.example को .env में कॉपी करें और अपनी मशीन के लिए पाथ और क्रेडेंशियल सेट करें।


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 फ़ोल्डर के अंदर होना आवश्यक नहीं है।

**विकल्प A: एक-चरणीय सेटअप (अनुशंसित)**```bash
python setup_env.py

यह स्क्रिप्ट वर्चुअल एनवायरनमेंट बनाती है, सभी डिपेंडेंसी इंस्टॉल करती है, और Playwright का Chromium ब्राउज़र इंस्टॉल करती है (PDF एक्सपोर्ट के लिए आवश्यक)।

विकल्प B: मैन्युअल सेटअप

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:~
---

## CLI उपयोग

वर्चुअल एनवायरनमेंट के अंदर `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पुनः स्कैन किए बिना मौजूदा JSON आउटपुट से PDF रिपोर्ट बनाएँ
--json-input-dir PATHJSON रिपोर्ट निर्देशिका (डिफ़ॉल्ट: ./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इस रन के लिए विश्लेषक चरण अक्षम करें

उपयोग उदाहरण

-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 (Rule Description Language) 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_ref` से बाहरी `.rdl` फ़ाइल का मूल्यांकन वर्तमान फ़ाइल टेक्स्ट, वर्तमान फ़ाइल पथ और प्रोजेक्ट रूट के विरुद्ध किया जाता है।
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 निर्यातित रिपोर्टिंग मेटाडेटा को नियंत्रित करते हैं।
  • रेगेक्स टोकन या तो कच्चे पैटर्न के रूप में या /pattern/flags के रूप में लिखे जा सकते हैं, जिनमें i, m, और s समर्थित हैं।

समर्थित RDL कमांड

कमांडव्यवहारविशिष्ट उपयोग
WHEN PRESENT <regex>वर्तमान फ़ाइल टेक्स्ट में पैटर्न के मौजूद होने की आवश्यकतासह-घटित जोखिमपूर्ण API या संवेदनशील फ़ील्ड की आवश्यकता
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 - PHP SQL इंजेक्शन गेटिंग

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 मैनिफेस्ट नियम

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:~
बाहरी 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 का उपयोग केवल तब करें जब तर्क वास्तव में बूलियन हो।
  • समीक्षक-उन्मुख तर्क 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/` के अंतर्गत लिखी जाती हैं।

वेब UI के माध्यम से चलाते समय, प्रत्येक जॉब के आउटपुट को अतिरिक्त रूप से `runtime/webui/jobs/<job-id>/artifacts/` के अंतर्गत स्नैपशॉट किया जाता है (देखें [Web UI (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) |
| लाइसेंस | GNU जनरल पब्लिक लाइसेंस v3.0 (GPL-3.0) |

यदि DakshSCRA ने आपकी टीम का महत्वपूर्ण समय, प्रयास, या लागत बचाने में मदद की है, महंगे वाणिज्यिक टूल्स पर निर्भरता कम की है, समीक्षा कवरेज में सुधार किया है, या कोड समीक्षा को अधिक संरचित और प्रभावी बनाया है, तो बेझिझक संपर्क करें और अपना अनुभव साझा करें। मैं हमेशा विचारशील प्रतिक्रिया और दिलचस्प बातचीत के लिए तैयार हूँ।

कोई बग मिला या योगदान देना चाहते हैं? GitHub पर एक issue या pull request खोलें।
टूल डाउनलोड करें
--loc
प्रभावी कोड की पंक्तियाँ गिनें
--baseline-file PATHदमन बेसलाइन फ़ाइल (JSON)
--baseline-generateवर्तमान निष्कर्षों से दमन बेसलाइन बनाएँ
--no-baselineइस रन के लिए बेसलाइन दमन अक्षम करें
--review-config PATHनिष्कर्ष ट्राइएज फ़ाइल (JSON); पहले समीक्षित झूठे सकारात्मक को रिपोर्ट से दबाएँ
--resume-scanस्टेट फ़ाइल से पहले बाधित स्कैन फिर से शुरू करें
--state-file PATHकस्टम स्कैन स्टेट / चेकपॉइंट फ़ाइल पथ
--no-stateइस रन के लिए स्कैन स्टेट चेकपॉइंटिंग अक्षम करें
--stateइस रन के लिए स्कैन स्टेट चेकपॉइंटिंग को बलपूर्वक सक्षम करें