Herramienta de análisis estático de código sensible al framework para la revisión automatizada del código fuente con reglas específicas de plataforma, análisis de contaminación, estimación de esfuerzo y líneas de base de supresión.
Author:
## Acerca de Daksh SCRA
Daksh SCRA (Source Code Review Assist) está diseñado para mejorar la eficiencia del proceso de revisión de código fuente, proporcionando un enfoque bien estructurado y organizado para los revisores de código.
En lugar de marcar indiscriminadamente todo como un posible problema, Daksh SCRA promueve un análisis reflexivo, instando a la investigación y confirmación de problemas potenciales. Este enfoque reduce la carrera por etiquetar cada posible preocupación como un error, recortando la confusión y el tiempo perdido en falsos positivos.
### Debut
Daksh SCRA se presentó inicialmente durante una sesión de formación sobre revisión de código fuente en Black Hat USA 2022 (6-9 de agosto), donde se mostró de forma discreta a un público específico. Su debut público oficial tuvo lugar en Black Hat USA 2023 en Las Vegas.
## Características y funcionalidades
- **Identifica áreas de interés en el código fuente:** Fomenta una investigación y confirmación centradas en lugar de etiquetar indiscriminadamente todo como un error.
- **Identifica áreas de interés en rutas de archivo (primicia mundial):** Reconoce patrones en las rutas de archivo para señalar secciones relevantes para la revisión.
- **Reconocimiento a nivel de software para identificar tecnologías utilizadas:** Identifica las tecnologías del proyecto, lo que permite a los revisores de código realizar escaneos precisos con reglas adecuadas.
- **Estimación científica automatizada del esfuerzo para la revisión de código (primicia mundial):** Proporciona un enfoque medible para estimar el esfuerzo requerido para una revisión de código.
- **Escaneo consciente del framework:** Aplica automáticamente reglas específicas del framework cuando se detecta el framework del proyecto.
- **Informes de análisis de taint:** Informes HTML de flujo de taint por plataforma con temas de modo hacker y modo profesional.
- **RDL (Rule Description Language):** Lógica de reglas externa referenciada con `rdl_ref` y ejecutada por el pipeline de `core/rdl_engine.py`: admite compuertas conscientes de archivos, expresiones booleanas, observaciones del proyecto y metadatos de lógica exportados en los informes.
- **Estado de escaneo / reanudación:** Marca escaneos largos y reanuda tras una interrupción.
- **Línea base de supresión:** Genera y aplica una línea base de falsos positivos conocidos para suprimirlos de futuros informes.
- **Interfaz web:** Lanzador de escaneos basado en navegador con feed de consola en tiempo real y navegador de artefactos de trabajos.
> Las mejoras activas están en curso. Se planean múltiples funciones y mejoras nuevas para próximas versiones.
Siéntete libre de contribuir a la actualización o adición de nuevas reglas y al desarrollo futuro.
Si encuentras algún error, repórtalo a [[email protected]](mailto:[email protected]).
Documentación detallada: [https://dakshlabs.com/#docs](https://dakshlabs.com/#docs)
---
## Primeros pasos
Hay dos formas de ejecutar Daksh SCRA: elige la que mejor se adapte a tu flujo de trabajo:
| | Mejor para | Ir a |
|---|---|---|
| 🌐 **Interfaz web (Docker)** | La forma más fácil de empezar: un solo comando, un panel en el navegador, progreso de escaneo en vivo y un navegador de informes/artefactos. Recomendado para la mayoría de los usuarios. | [Interfaz web (Docker)](#web-ui-docker) |
| 💻 **CLI (Python)** | Scripting, pipelines de CI o ejecución de escaneos sin Docker. | [Configuración CLI](#cli-setup) |
Ambas rutas ejecutan exactamente el mismo motor de escaneo: la interfaz web es un frontend de navegador sobre la misma CLI, por lo que los resultados son idénticos en ambos casos.
---
## Interfaz web (Docker)
La forma más rápida de ejecutar Daksh SCRA es a través de su interfaz web basada en navegador, lanzada con un solo comando de Docker Compose. Te ofrece un lanzador de escaneos, un feed de consola en vivo y un historial navegable de informes anteriores, sin necesidad de un entorno Python local.
La configuración de Docker ejecuta la interfaz web y la CLI como servicios independientes construidos a partir de la misma imagen, por lo que puedes usar cualquiera de los dos (o ambos) desde el mismo contenedor.
### Lanzar la interfaz web
Modo en primer plano (los registros se transmiten a tu terminal):```bash
docker compose up --build
Modo desacoplado / en segundo plano:```bash docker compose up --build -d
Luego abre [http://localhost:8080](http://localhost:8080).
Para usar un puerto diferente:```bash
DAKSH_PORT=9090 docker compose up
Detén la pila con:```bash docker compose down
### Iniciar sesión
La interfaz web requiere una cuenta. En el primer arranque, se crea una cuenta de administrador inicial a partir de `DAKSH_ADMIN_USERNAME` / `DAKSH_ADMIN_PASSWORD` (configúralas en `.env`); si `DAKSH_ADMIN_PASSWORD` se deja sin definir, se genera una contraseña aleatoria y se imprime una sola vez en el registro de inicio de la API: guárdala, ya que no se puede recuperar después.
Se te pedirá que establezcas tu propia contraseña (y, opcionalmente, nombre de usuario) la primera vez que inicies sesión. Una cuenta de administrador puede crear más cuentas mediante el endpoint de API `POST /api/v1/auth/users` (aún no hay una interfaz dedicada para esto). Consulta `.env.example` para ver la lista completa de ajustes relacionados con la autenticación (duración de la sesión, seguridad de cookies, CORS).
### Qué obtienes
- Constructor de comandos receptivo para los modos de escaneo, reconocimiento, estimación, reconocimiento+estimación, lista y PDF desde JSON
- Fuente de consola en tiempo real y progreso en vivo por etapa durante la ejecución
- Instantáneas de artefactos por trabajo para salidas HTML / PDF / JSON
- Navegación rápida en el navegador entre el formulario de ejecución, la fuente en vivo, los artefactos y los trabajos recientes
- Explorador de directorios integrado para seleccionar rutas de destino (consciente del sistema operativo: Windows, macOS, Linux / Docker)
Internamente, la CLI sigue siendo la fuente de verdad: realiza todo el escaneo y genera cada salida HTML / PDF / JSON. La interfaz web ejecuta un trabajo activo a la vez y guarda instantáneas de las salidas de cada trabajo completado en `runtime/webui/jobs/<job-id>/artifacts/` para que los informes anteriores sigan siendo accesibles.
### Ejecutar la CLI en Docker
Tampoco necesitas un entorno Python local para usar la CLI: está disponible como su propio servicio de Compose, construido a partir de la misma imagen:```bash
docker compose run --rm cli -h
docker compose run --rm cli -r auto -t /scan-targets/path/to/source
reports/ y runtime/Puntos de montaje clave:
| Montaje | Ruta dentro del contenedor |
|---|---|
| Código fuente del proyecto | /app |
| Raíz de escaneo predeterminada | /scan-targets |
| Alias de unidades del host | /host, /host/c, /host/d |
| Montajes WSL | /mnt, /run/desktop/mnt/host |
Variables de entorno (configúralas en .env):
| Variable | Descripción |
|---|---|
DAKSH_PORT | Puerto de la interfaz web (predeterminado: 8080) |
DAKSH_SCAN_ROOT | Directorio de destino predeterminado dentro del contenedor |
DAKSH_HOST_SOURCE | Ruta del host para montar como /scan-targets (predeterminado: /tmp) |
DAKSH_HOST_MOUNT | Raíz de montaje adicional del host |
DAKSH_HOST_C | Ruta de la unidad C: de Windows (WSL) |
DAKSH_HOST_D | Ruta de la unidad D: de Windows (WSL) |
DAKSH_DESKTOP_MOUNT | Ruta de montaje del escritorio WSL |
DAKSH_BROWSE_ROOTS | Anula las raíces del navegador de directorios (separadas por comas) |
DAKSH_ADMIN_USERNAME | Nombre de usuario administrador inicial (predeterminado: admin) |
DAKSH_ADMIN_PASSWORD | Contraseña de administrador inicial: se recomienda encarecidamente establecerla explícitamente |
Copia .env.example a .env y establece las rutas y credenciales para tu máquina antes de ejecutar Docker.
¿Prefieres ejecutar Daksh SCRA directamente con Python? Así es como se configura localmente.
requirements.txtO descarga el último zip desde [https://github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) y descomprímelo.
### 2. Configurar un Entorno Virtual
> 💡 El entorno virtual se puede crear en cualquier directorio: no es necesario que esté dentro de la carpeta DakshSCRA.
**Opción A: Configuración en un solo paso (recomendada)**```bash
python setup_env.py
Este script crea el entorno virtual, instala todas las dependencias e instala el navegador Chromium de Playwright (necesario para la exportación a PDF).
Opción B: Configuración manual
Windows:```bash python -m venv daksh-env .\daksh-env\Scripts\activate
macOS / Linux:```bash
python3 -m venv daksh-env
source daksh-env/bin/activate
Entonces instala las dependencias:```bash cd path/to/DakshSCRA pip install -r requirements.txt playwright install chromium
---
## Uso de la CLI
Usa `python` dentro de un entorno virtual, o `python3` fuera de uno.
### Opciones de la línea de comandos```
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]
| Opción | Descripción |
|---|---|
-r RULES | Reglas de la plataforma (p. ej., php, java, php,java) o auto para detección automática |
-f FILE_TYPES | Sobrescribir los tipos de archivo predeterminados para el escaneo |
-v | Nivel de verbosidad (-v, -vv, -vvv) |
-t TARGET_DIR | Directorio del código fuente objetivo |
-l {R,RF} | Listar reglas de la plataforma + frameworks [R] o incluir tipos de archivo [RF] |
--recon | Ejecutar reconocimiento (detección de plataforma / framework / lenguaje) |
--rs, --recon-strict | Reconocimiento estricto: solo detecciones de alta confianza (usar con --recon) |
--estimate | Estimar el esfuerzo de revisión de código según el tamaño del código base |
-rpt, --report FORMATS | Formatos de informe: html, pdf o html,pdf (predeterminado: html) |
--pdf-from-json | Generar informe(s) PDF a partir de salidas JSON existentes sin volver a escanear |
--json-input-dir PATH | Directorio de informes JSON (predeterminado: ./reports/data) |
--pdf-output PATH | Ruta de salida del PDF único (predeterminado: ./reports/scan/pdf/report.pdf) |
--pdf-multi-dir PATH | Directorio de salida del PDF de varios archivos (predeterminado: ./reports/scan/pdf/multi-file) |
--pdf-single-only | Generar solo el PDF combinado de un solo archivo; omitir el conjunto de varios archivos por plataforma |
-f(tipos de archivo) es opcional. Si no se especifica, DakshSCRA usa los tipos de archivo predeterminados para la(s) plataforma(s) seleccionada(s).```bash
python dakshscra.py -r php -t /path/to/source
python dakshscra.py -r php,java,cpp -t /path/to/source
python dakshscra.py -r auto -t /path/to/source
python dakshscra.py -r php -f dotnet -t /path/to/source
python dakshscra.py --recon -t /path/to/source
python dakshscra.py --recon -r php -t /path/to/source
python dakshscra.py --recon --rs -t /path/to/source
python dakshscra.py --estimate -t /path/to/source
python dakshscra.py -r auto -t /path/to/source -rpt html,pdf
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
python dakshscra.py -r auto -t /path/to/source --baseline-generate
python dakshscra.py -r auto -t /path/to/source --baseline-file config/suppressions.json
python dakshscra.py -r auto -t /path/to/source --no-baseline
python dakshscra.py -r auto -t /path/to/source --review-config config/review.json
python dakshscra.py -r auto -t /path/to/source --state
python dakshscra.py -r auto -t /path/to/source --resume-scan
python dakshscra.py -r auto -t /path/to/source --resume-scan --state-file runtime/scan_state.json
python dakshscra.py --pdf-from-json
python dakshscra.py --pdf-from-json --json-input-dir ./custom/reports/data
python dakshscra.py --pdf-from-json --pdf-output ./reports/scan/pdf/custom.pdf --pdf-multi-dir ./reports/scan/pdf/multi-file
python dakshscra.py --pdf-from-json --pdf-single-only
### Reglas y Frameworks de Plataforma Compatibles```bash
python dakshscra.py -l R # List platform rules and framework mappings
python dakshscra.py -l RF # List platform rules, framework mappings, and filetypes
Plataformas y frameworks compatibles actualmente:
| Plataforma | 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 | - |
Para obtener las plataformas y frameworks compatibles más recientes, ejecuta siempre:```bash python dakshscra.py -l R
---
## Referencia de Configuración
### `config/tool.yaml`
Los valores predeterminados del tiempo de ejecución de Daksh SCRA se controlan a través de `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
Opciones de configuración del analizador:
analysis.run_by_default
true: el analizador se ejecuta automáticamente durante el escaneofalse: el analizador está deshabilitado a menos que se vuelva a habilitar en la configuración o mediante CLIanalysis.include_frameworks
true: incluir entradas del analizador a nivel de framework donde exista detección de frameworkfalse: solo salida del analizador a nivel de plataformaanalysis.report_theme
hacker_mode: tema de analizador moderno oscuro de alto contraste (predeterminado)professional_mode: tema de analizador moderno claroboth: generar ambas variantes de tema lado a ladoRDL (Lenguaje de Descripción de Reglas) es la capa de lógica de reglas externalizada de DakshSCRA. En la arquitectura actual:
name, regex, descripciones y scan_config opcional.core/rdl_engine.py.rules/scanning/logic/... y se referencian desde XML usando <rdl_ref>.rdl_ref se resuelven relativos a rules/scanning/, por ejemplo:
logic/php/core/some_rule.rdl -> rules/scanning/logic/php/core/some_rule.rdllogic_engine, logic_source,
logic_reason, logic_trace, logic_consulted_files y logic_outcome.La forma antigua en línea <rdl> ya no es la arquitectura activa y no debe usarse para nuevas reglas.
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
#### Secuencia de escaneo
Para una regla de origen, DakshSCRA evalúa la lógica en este orden:
1. Recon selecciona las plataformas y frameworks coincidentes.
2. La regla XML se carga desde `rules/scanning/platform/...`.
3. `regex` encuentra líneas candidatas o coincidencias de archivo completo cuando están presentes.
4. `exclude` elimina el ruido obvio para esa regla, si está presente.
5. El archivo `.rdl` externo de `rdl_ref` se evalúa contra el texto del archivo actual, la ruta del archivo actual y la raíz del proyecto.
6. Si el script RDL pasa, DakshSCRA conserva el hallazgo y fusiona los metadatos de lógica exportados en la salida del informe.
7. Si el script RDL falla, la coincidencia se suprime con el motivo de fallo de RDL y los metadatos de seguimiento de decisión.
Para las reglas de ruta de archivo en `filepaths.xml`, se aplica el mismo modelo `rdl_ref`, pero el sujeto de coincidencia es
la ruta relativa normalizada en lugar del texto del código fuente. En ese modo, RDL recibe la cadena de ruta relativa
como el texto del archivo actual y el contexto de ruta.
#### Estructura de regla actual```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>
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.
#### Diseño actual```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 y WHEN CURRENT_FILE_MATCHES se evalúan contra el texto del archivo actual.WHEN FILE_NAME_IS y WHEN FILE_PATH_MATCHES se evalúan contra el contexto de la ruta del archivo actual.WHEN EXPR admite lógica booleana sobre los predicados PRESENT:, MISSING: y EXISTS:.OBSERVE PROJECT_HAS_GLOB ... AS ... no condiciona el hallazgo; registra archivos de proyecto relacionados en los metadatos de traza.REPORT AS, REASON, FAIL_REASON y TRACE controlan los metadatos de informe exportados./patrón/banderas, con soporte para i, m y s.| Comando | Comportamiento | Uso típico |
|---|---|---|
WHEN PRESENT <regex> | Requiere que un patrón exista en el texto del archivo actual | Requerir una API de riesgo o un campo sensible co-ocurrente |
WHEN MISSING <regex> | Requiere que un patrón esté ausente del texto del archivo actual | Suprimir cuando ya existe una mitigación |
WHEN EXPR <expr> | Evalúa expresiones booleanas usando PRESENT: / MISSING: / EXISTS: con &&, ` | |
WHEN CURRENT_FILE_MATCHES <regex> | Compara contra el texto completo del archivo actual | Revisar condiciones complejas de todo el archivo |
WHEN FILE_NAME_IS <name> | Requiere que el nombre del archivo actual coincida exactamente | Limitar reglas de plist / manifest / config |
WHEN FILE_PATH_MATCHES <glob> | Requiere que la ruta relativa actual coincida con un glob | Acotar reglas de rutas de framework/config |
UNLESS CURRENT_FILE_MATCHES <regex> | Falla cuando todo el archivo coincide con un patrón de exclusión | Bloquear casos estructurales seguros conocidos |
OBSERVE PROJECT_HAS_GLOB <glob> AS <label> | Registra archivos de proyecto relacionados en los metadatos de traza | Superficie de config de soporte o archivos complementarios |
REPORT AS <outcome> | Establece el resultado de la regla, normalmente area_of_interest | Resultados explícitos a prueba de futuro |
REASON <text> | Razón mostrada cuando la regla pasa | Explicar por qué el hallazgo permaneció visible |
FAIL_REASON <text> | Razón mostrada cuando la regla suprime una coincidencia | Explicar por qué el acierto fue filtrado |
TRACE <text> | Añadir líneas de traza de depuración/decisión | Soporte de migración/depuración |
Las expresiones booleanas en WHEN EXPR admiten:
PRESENT:<regex>MISSING:<regex>EXISTS:<regex>&&, ||, ! y paréntesisRegla 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>
External 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.
Regla 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.
Regla XML:```xml Admin Section File Path <rdl_ref>logic/filepaths/core/admin_section.rdl</rdl_ref>
External 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 lo suficientemente amplio para captar candidatos y luego usa RDL para filtrar el contexto.rdl_ref para toda la lógica de reglas y mantén el archivo .rdl junto al árbol de lógica de la plataforma/marco correspondiente.<rdl> en línea.WHEN PRESENT / WHEN MISSING para compuertas simples y WHEN EXPR solo cuando la lógica sea genuinamente booleana.REASON y las explicaciones de supresión en FAIL_REASON.PRESENT y MISSING como comprobaciones de archivo completo. Una mitigación en cualquier parte del archivo puede suprimir todas las coincidencias de ese archivo.OBSERVE PROJECT_HAS_GLOB para enriquecer los hallazgos con contexto del proyecto, no como una compuerta de aprobado/reprobado.logic/... estables y con ámbito de plataforma para que las reglas XML sigan siendo delgadas y la capa de lógica siga siendo reutilizable.Todas las salidas se escriben bajo el directorio 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
Los archivos de ejecución (estado del escaneo, registros, inventario) se escriben en `runtime/`.
Cuando se ejecuta a través de la interfaz web, las salidas de cada trabajo también se guardan como instantáneas en `runtime/webui/jobs/<job-id>/artifacts/` (consulte [Interfaz web (Docker)](#web-ui-docker)).
---
## Autor
| | |
|---|---|
| Sitio web | [coffeeandsecurity.com](https://www.coffeeandsecurity.com) |
| Correo electrónico | [email protected] |
| Twitter / X | [@coffeensecurity](https://x.com/coffeensecurity) |
| Fuente | [github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) |
| Licencia | GNU General Public License v3.0 (GPL-3.0) |
Si DakshSCRA ha ayudado a tu equipo a ahorrar tiempo, esfuerzo o costes significativos, ha reducido la dependencia de herramientas comerciales caras, ha mejorado la cobertura de las revisiones o ha hecho que la revisión de código sea más estructurada y eficaz, no dudes en ponerte en contacto y compartir tu experiencia. Siempre estoy abierto a comentarios reflexivos y conversaciones interesantes.
¿Has encontrado un error o quieres contribuir? Abre un issue o pull request en GitHub.
--skip-analysis | Deshabilitar la etapa de análisis para esta ejecución |
--loc | Contar líneas de código efectivas |
--baseline-file PATH | Archivo de línea base de supresión (JSON) |
--baseline-generate | Generar línea base de supresión a partir de los hallazgos actuales |
--no-baseline | Deshabilitar la supresión de línea base para esta ejecución |
--review-config PATH | Archivo de triaje de hallazgos (JSON); suprimir falsos positivos ya revisados de los informes |
--resume-scan | Reanudar un escaneo previamente interrumpido desde el archivo de estado |
--state-file PATH | Ruta personalizada del archivo de estado / punto de control del escaneo |
--no-state | Deshabilitar el guardado de puntos de control del escaneo para esta ejecución |
--state | Forzar la habilitación del guardado de puntos de control del escaneo para esta ejecución |