
फ्रेमवर्क-जागरूक स्थैतिक कोड विश्लेषण उपकरण जो प्लेटफ़ॉर्म-विशिष्ट नियमों, टेंट विश्लेषण, प्रयास अनुमान और दमन आधार रेखाओं के साथ स्वचालित स्रोत कोड समीक्षा के लिए है।
Author:
## 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 स्टार्टअप हेल्पर के साथ लॉन्च किया जाता है। यह आपको एक स्कैन लॉन्चर, एक लाइव कंसोल फ़ीड, और पिछली रिपोर्टों का ब्राउज़ करने योग्य इतिहास देता है। स्टार्टअप हेल्पर को Python 3 (केवल मानक लाइब्रेरी) की आवश्यकता होती है; एप्लिकेशन और इसकी निर्भरताएँ Docker में चलती हैं।
Docker सेटअप वेब UI और CLI को एक ही इमेज से बनी स्वतंत्र सेवाओं के रूप में चलाता है, इसलिए आप एक ही कंटेनर से किसी एक (या दोनों) का उपयोग कर सकते हैं।
### वेब UI लॉन्च करें
GitHub से Daksh SCRA डाउनलोड करने के बाद, **पहले ZIP संग्रह को निकालें**।
निकाले गए प्रोजेक्ट फ़ोल्डर के अंदर एक टर्मिनल (Windows पर PowerShell या Command Prompt) खोलें जिसमें `docker-compose.yml` और `dakshscra.py` मौजूद हों।
**नीचे दिए गए सभी स्टार्टअप और Docker Compose कमांड उसी फ़ोल्डर से चलाएँ।**
यदि आपका टर्मिनल कहीं और खुलता है, तो पहले निकाले गए फ़ोल्डर में जाएँ:```text
cd "path/to/extracted/DakshSCRA-folder"
उदाहरण पथ को अपने वास्तविक डाउनलोड स्थान और फ़ोल्डर नाम से बदलें।
यदि आपने इसके बजाय रिपॉज़िटरी क्लोन की है, तो उसके पैरेंट फ़ोल्डर से cd DakshSCRA चलाएँ।
स्टार्टअप हेल्पर Windows, WSL, Linux और macOS को पहचानता है, फिर कंटेनर शुरू करने से पहले होस्ट रूट, उपलब्ध Windows ड्राइव और सामान्य फ़ोल्डरों को रीड-ओनली माउंट करता है। इसे Docker चला रहे कंप्यूटर पर चलाएँ।
Linux, macOS या WSL (फोरग्राउंड):```bash python3 tools/start_webui.py
Windows PowerShell या Command Prompt (foreground):```powershell
py tools/start_webui.py
Add --detach for background mode, or --dry-run to inspect detected paths.
Existing .env path overrides are respected. Accounts, scans and the runtime
volume are preserved when containers are recreated.
Docker Desktop may require permission to share the selected host paths. If it rejects a mount, allow that location in Docker Desktop and rerun the helper. A remote browser sees the Docker host's folders, not its own computer's drives. Automatic detection requires a local Docker engine; run the helper on the engine host when using a remote Docker context.
For manually configured mounts, docker compose up --build -d api web remains
available. Its baseline mounts the repository at /scan-targets and
${DAKSH_HOST_MOUNT:-/} at /host/root. Use the helper for Windows drive discovery
and common-folder shortcuts; plain Compose cannot detect the client OS.
Then open http://localhost:8080.
To use a different port:```bash DAKSH_PORT=9090 python3 tools/start_webui.py
स्टैक को इसके साथ रोकें:```bash
docker compose down
Web UI के लिए एक खाता आवश्यक है। पहली बार शुरू होने पर, DAKSH_ADMIN_USERNAME / DAKSH_ADMIN_PASSWORD से एक प्रारंभिक एडमिन खाता बनाया जाता है (इन्हें .env में सेट करें); यदि DAKSH_ADMIN_PASSWORD को सेट नहीं किया गया है, तो एक रैंडम पासवर्ड जनरेट किया जाता है और एक बार API के स्टार्टअप लॉग में प्रिंट किया जाता है - इसे सहेजें, क्योंकि इसे बाद में पुनर्प्राप्त नहीं किया जा सकता।
पहली बार लॉग इन करते समय आपको अपना पासवर्ड (और, वैकल्पिक रूप से, उपयोगकर्ता नाम) सेट करना होगा। एक एडमिन खाता POST /api/v1/auth/users API एंडपॉइंट के माध्यम से और खाते बना सकता है (इसके लिए अभी तक कोई समर्पित UI नहीं है)। प्रमाणीकरण-संबंधित सेटिंग्स (सत्र जीवनकाल, कुकी सुरक्षा, CORS) की पूरी सूची के लिए .env.example देखें।
अंदर ही अंदर, CLI ही सत्य का स्रोत बना रहता है - यह सारी स्कैनिंग करता है और हर HTML / PDF / JSON आउटपुट जनरेट करता है। Web UI एक समय में एक सक्रिय जॉब चलाता है और प्रत्येक पूर्ण जॉब के आउटपुट को runtime/webui/jobs/<job-id>/artifacts/ में स्नैपशॉट करता है ताकि पिछली रिपोर्टें सुलभ रहें।
CLI का उपयोग करने के लिए आपको स्थानीय Python वातावरण की भी आवश्यकता नहीं है - यह अपनी स्वयं की Compose सेवा के रूप में उपलब्ध है, जो उसी इमेज से बनाई गई है:```bash docker compose run --rm cli -h docker compose run --rm cli -r auto -t /scan-targets/path/to/source
### इमेज में क्या है