
फ्रेमवर्क-जागरूक स्थैतिक कोड विश्लेषण उपकरण जो प्लेटफ़ॉर्म-विशिष्ट नियमों, टेंट विश्लेषण, प्रयास अनुमान और दमन आधार रेखाओं के साथ स्वचालित स्रोत कोड समीक्षा के लिए है।
Author:
## दक्ष SCRA के बारे में
दक्ष SCRA (स्रोत कोड समीक्षा सहायता) उपकरण स्रोत कोड समीक्षा प्रक्रिया की दक्षता बढ़ाने के लिए बनाया गया है, जो कोड समीक्षकों के लिए एक सुव्यवस्थित और संगठित दृष्टिकोण प्रदान करता है।
हर चीज़ को संभावित समस्या के रूप में अंधाधुंध फ़्लैग करने के बजाय, दक्ष SCRA विचारशील विश्लेषण को बढ़ावा देता है, संभावित समस्याओं की जांच और पुष्टि पर जोर देता है। यह दृष्टिकोण हर संभावित चिंता को बग के रूप में टैग करने की होड़ को कम करता है, जिससे गलत सकारात्मक परिणामों पर होने वाला भ्रम और बर्बाद समय कम होता है।
## पदार्पण
दक्ष SCRA को प्रारंभ में ब्लैक हैट यूएसए 2022 (6-9 अगस्त) में एक स्रोत कोड समीक्षा प्रशिक्षण सत्र के दौरान पेश किया गया था, जहां इसे एक विशिष्ट दर्शकों के सामने सूक्ष्म रूप से प्रस्तुत किया गया था। इसकी आधिकारिक सार्वजनिक शुरुआत लास वेगास में ब्लैक हैट यूएसए 2023 में हुई।
## विशेषताएं और कार्यक्षमताएं
### विशिष्ट विशेषताएं
- **स्रोत कोड में रुचि के क्षेत्रों की पहचान करना:** हर चीज़ को अंधाधुंध बग के रूप में लेबल करने के बजाय केंद्रित जांच और पुष्टि को प्रोत्साहित करता है।
- **फ़ाइल पथों में रुचि के क्षेत्रों की पहचान करना (विश्व का पहला):** समीक्षा के लिए प्रासंगिक अनुभागों को इंगित करने के लिए फ़ाइल पथों में पैटर्न को पहचानता है।
- **उपयोग की गई प्रौद्योगिकियों की पहचान करने के लिए सॉफ़्टवेयर-स्तरीय टोही:** परियोजना प्रौद्योगिकियों की पहचान करता है, जिससे कोड समीक्षक उपयुक्त नियमों के साथ सटीक स्कैन कर सकते हैं।
- **कोड समीक्षा के लिए स्वचालित वैज्ञानिक प्रयास अनुमान (विश्व का पहला):** कोड समीक्षा प्रक्रिया के लिए आवश्यक प्रयासों का अनुमान लगाने का एक मापने योग्य दृष्टिकोण प्रदान करता है।
- **फ्रेमवर्क-जागरूक स्कैनिंग:** जब प्रोजेक्ट का फ्रेमवर्क पता चलता है तो स्वचालित रूप से फ्रेमवर्क-विशिष्ट नियम लागू करता है।
- **टेंट विश्लेषण रिपोर्ट:** हैकर-मोड और पेशेवर-मोड थीम के साथ प्रति-प्लेटफ़ॉर्म HTML टेंट प्रवाह रिपोर्ट।
- **RDL (नियम विवरण भाषा):** `rdl_ref` के साथ संदर्भित बाहरी नियम तर्क और वर्तमान `core/rdl_engine.py` पाइपलाइन द्वारा निष्पादित - फ़ाइल-जागरूक गेट, बूलियन अभिव्यक्तियाँ, परियोजना अवलोकन और रिपोर्ट में निर्यातित तर्क मेटाडेटा का समर्थन करता है।
- **स्कैन स्थिति / पुनरारंभ:** लंबे स्कैनों को चेकपॉइंट करें और बाधित होने के बाद पुनरारंभ करें।
- **दमन आधार रेखा:** ज्ञात झूठी सकारात्मकताओं का आधार रेखा उत्पन्न करें और लागू करें ताकि उन्हें भविष्य की रिपोर्टों से दबाया जा सके।
- **वेब UI:** वास्तविक समय कंसोल फ़ीड और जॉब आर्टिफैक्ट ब्राउज़र के साथ ब्राउज़र-आधारित स्कैन लॉन्चर।
> सक्रिय संवर्द्धन जारी है। आगामी रिलीज़ के लिए कई नई सुविधाओं और सुधारों की योजना बनाई गई है।
नियमों को अपडेट करने या नए जोड़ने और भविष्य के विकास में योगदान करने के लिए स्वतंत्र महसूस करें।
यदि आपको कोई बग मिलता है, तो कृपया [[email protected]](mailto:[email protected]) पर रिपोर्ट करें।
विस्तृत दस्तावेज़ीकरण: [https://dakshlabs.com/#docs](https://dakshlabs.com/#docs)
---
## उपकरण सेटअप
### पूर्व-आवश्यकताएँ
- Python 3.8+
- `requirements.txt` में सूचीबद्ध सभी लाइब्रेरीज़
### 1. दक्ष SCRA डाउनलोड करें```bash
git clone https://github.com/coffeeandsecurity/DakshSCRA.git
या नवीनतम ज़िप https://github.com/coffeeandsecurity/DakshSCRA से डाउनलोड करें और इसे अनज़िप करें।
💡 वर्चुअल वातावरण किसी भी निर्देशिका में बनाया जा सकता है - इसे DakshSCRA फ़ोल्डर के अंदर होने की आवश्यकता नहीं है।
python setup_env.py
यह स्क्रिप्ट वर्चुअल एनवायरनमेंट बनाती है, सभी निर्भरताएँ स्थापित करती है, और प्लेराइट का क्रोमियम ब्राउज़र (पीडीएफ निर्यात के लिए आवश्यक) स्थापित करती है।
#### विकल्प B: मैन्युअल सेटअप
**विंडोज:**```bash
python -m venv daksh-env
.\daksh-env\Scripts\activate
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
वर्चुअल एनवायरनमेंट के अंदर 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 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` | कोड की प्रभावी पंक्तियाँ गिनें |
| `--baseline-file PATH` | दमन आधार रेखा फ़ाइल (JSON) |
| `--baseline-generate` | वर्तमान निष्कर्षों से दमन आधार रेखा उत्पन्न करें |
| `--no-baseline` | इस रन के लिए आधार रेखा दमन अक्षम करें |
| `--review-config PATH` | निष्कर्ष ट्राइएज फ़ाइल (JSON); रिपोर्टों से पहले समीक्षित झूठी सकारात्मकताओं को दबाएं |
| `--resume-scan` | स्थिति फ़ाइल से पहले बाधित स्कैन को फिर से शुरू करें |
| `--state-file PATH` | कस्टम स्कैन स्थिति / चेकपॉइंट फ़ाइल पथ |
| `--no-state` | इस रन के लिए स्कैन स्थिति चेकपॉइंटिंग अक्षम करें |
| `--state` | इस रन के लिए स्कैन स्थिति चेकपॉइंटिंग को बलपूर्वक सक्षम करें |
### उपयोग उदाहरण
> `-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
python dakshscra.py -l R # List platform rules and framework mappings python dakshscra.py -l RF # List platform rules, framework mappings, and filetypes
वर्तमान समर्थित प्लेटफ़ॉर्म और फ्रेमवर्क मैपिंग:
| Platform | Frameworks |
|---|---|
| dotnet | aspnetcore, entityframework |
| php | codeigniter, drupal, laravel, symfony, wordpress |
| java | hibernate, spring, springboot |
| javascript | angular, express, nestjs, nextjs, react, vue |
| kotlin | ktor, springkotlin |
| python | django, fastapi, flask |
| go | echo, fiber, gin |
| c | freertos |
| cpp | boost, qt |
| android | cordova-android, flutter-android, ionic-android, jetpack, nativescript-android, reactnative-android, xamarin-android |
| ios | cordova-ios, flutter-ios, ionic-ios, nativescript-ios, reactnative-ios, swiftui, uikit, xamarin-ios |
| reactnative | reactnative |
| flutter | flutter |
| xamarin | xamarin |
| ionic | ionic |
| nativescript | nativescript |
| cordova | cordova |
| ruby | rails, sinatra |
| rust | actix, axum, rocket |
| common | - |
नवीनतम समर्थित प्लेटफ़ॉर्म और फ्रेमवर्क प्राप्त करने के लिए, हमेशा चलाएँ:```bash
python dakshscra.py -l R
config/tool.yamlDaksh SCRA runtime defaults को 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`](https://github.com/coffeeandsecurity/dakshscra/blob/HEAD/mnt/c/_Source/Developement/DakshSCRA/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/<platform>/<scope>/<rule>.rdl
-> core/rdl_engine.py
-> pass / fail
-> reason / fail_reason
-> trace / consulted_files / outcome
स्रोत नियम के लिए, DakshSCRA इस क्रम में तर्क का मूल्यांकन करता है:
rules/scanning/platform/... से लोड किया जाता है।regex मौजूद होने पर उम्मीदवार पंक्तियाँ या पूरी-फ़ाइल मिलान ढूंढता है।exclude मौजूद होने पर उस नियम के लिए स्पष्ट शोर हटाता है।rdl_ref से बाहरी .rdl फ़ाइल का मूल्यांकन वर्तमान फ़ाइल पाठ, वर्तमान फ़ाइल पथ और प्रोजेक्ट रूट के विरुद्ध किया जाता है।filepaths.xml में फ़ाइल-पथ नियमों के लिए, वही rdl_ref मॉडल लागू होता है, लेकिन मिलान का विषय स्रोत कोड पाठ के बजाय सामान्यीकृत सापेक्ष पथ होता है। उस मोड में, RDL को वर्तमान-फ़ाइल पाठ और पथ संदर्भ के रूप में सापेक्ष पथ स्ट्रिंग प्राप्त होती है।
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 निर्यातित रिपोर्टिंग मेटाडेटा को नियंत्रित करते हैं।WHEN EXPR में बूलियन अभिव्यक्तियाँ समर्थित हैं:
PRESENT:<regex>MISSING:<regex>EXISTS:<regex>&&, ||, !, and parenthesesXML नियम:```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>
बाहरी 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.
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>
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.
XML नियम:```xml Admin Section File Path <rdl_ref>logic/filepaths/core/admin_section.rdl</rdl_ref>
बाहरी 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 का उपयोग निष्कर्षों को परियोजना संदर्भ से समृद्ध करने के लिए करें, पास/फेल गेट के रूप में नहीं।सभी आउटपुट 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
रनटाइम फ़ाइलें (स्कैन स्थिति, लॉग्स, इन्वेंट्री) `runtime/` के अंतर्गत लिखी जाती हैं।
---
## वेब UI
Daksh SCRA में स्कैन लॉन्च करने और वास्तविक समय में प्रगति देखने के लिए एक ब्राउज़र-आधारित फ्रंटएंड शामिल है।```bash
docker compose up --build
फिर खोलें: http://localhost:8080
वेब यूआई क्षमताएं:
निष्पादन मॉडल:
runtime/ और reports/ पथों पर लिखता है)runtime/webui/jobs/<job-id>/artifacts/ में स्नैपशॉट करता है ताकि पिछली रिपोर्ट्स सुलभ रहेंDocker सेटअप एक ही इमेज से निर्मित अलग-अलग Compose सेवाओं का उपयोग करके वेब यूआई और CLI को स्वतंत्र रूप से समर्थन करता है।
वेब यूआई लॉन्च करें:```bash docker compose up --build
फिर खोलें: [http://localhost:8080](http://localhost:8080)
**Docker में CLI चलाएँ:**```bash
docker compose run --rm cli -h
docker compose run --rm cli -r auto -t /scan-targets/path/to/source
स्टैक को रोकें:```bash docker compose down
**Docker में क्या शामिल है:**
- FastAPI + वेब फ्रंटएंड
- एक अलग सेवा के रूप में पूर्ण Daksh SCRA CLI
- PDF निर्माण के लिए Playwright Chromium
- स्थायी `reports/` और `runtime/` वॉल्यूम
- होस्ट पथ माउंट ताकि स्कैन कंटेनर के अंदर से स्रोत ट्री तक पहुँच सकें
**मुख्य माउंट बिंदु:**
| माउंट | कंटेनर के अंदर का पथ |
|---|---|
| प्रोजेक्ट स्रोत | `/app` |
| डिफ़ॉल्ट स्कैन रूट | `/scan-targets` |
| होस्ट ड्राइव उपनाम | `/host`, `/host/c`, `/host/d` |
| WSL माउंट | `/mnt`, `/run/desktop/mnt/host` |
**पर्यावरण चर (`.env` में कॉन्फ़िगर करें):**
| चर | विवरण |
|---|---|
| `DAKSH_PORT` | वेब UI पोर्ट (डिफ़ॉल्ट: `8080`) |
| `DAKSH_SCAN_ROOT` | कंटेनर के अंदर डिफ़ॉल्ट लक्ष्य निर्देशिका |
| `DAKSH_HOST_SOURCE` | `/scan-targets` के रूप में माउंट करने के लिए होस्ट पथ (डिफ़ॉल्ट: `/tmp`) |
| `DAKSH_HOST_MOUNT` | अतिरिक्त होस्ट माउंट रूट |
| `DAKSH_HOST_C` | Windows C: ड्राइव पथ (WSL) |
| `DAKSH_HOST_D` | Windows D: ड्राइव पथ (WSL) |
| `DAKSH_DESKTOP_MOUNT` | WSL डेस्कटॉप माउंट पथ |
| `DAKSH_BROWSE_ROOTS` | निर्देशिका ब्राउज़र रूट को ओवरराइड करें (अल्पविराम से अलग) |
Docker चलाने से पहले `.env.example` को `.env` पर कॉपी करें और अपनी मशीन के लिए पथ सेट करें।
---
## लेखक
| | |
|---|---|
| वेबसाइट | [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 पर एक इश्यू या पुल रिक्वेस्ट खोलें।
/pattern/flags के रूप में लिखा जा सकता है, जिसमें i, m, और s समर्थित हैं।| Command | व्यवहार | सामान्य उपयोग |
|---|
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> | वर्तमान सापेक्ष पथ का एक ग्लोब से मिलान होना आवश्यक है | फ्रेमवर्क/कॉन्फ़िग पथ नियमों को संकीर्ण करें |
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> | डीबग/निर्णय ट्रेस पंक्तियाँ जोड़ें | माइग्रेशन/डीबगिंग समर्थन |
logic/... पथों को स्थिर और प्लेटफ़ॉर्म-स्कोप्ड रखें ताकि XML नियम पतले रहें और तर्क परत पुन: प्रयोज्य बनी रहे।