
jshunter es una herramienta de línea de comandos diseñada para analizar archivos JavaScript y extraer endpoints. Esta herramienta se especializa en identificar datos sensibles, como endpoints de API y posibles vulnerabilidades de seguridad, lo que la convierte en un recurso esencial para cazadores de bugs y investigadores de seguridad.
Herramienta Profesional de Análisis de Seguridad en JavaScript
Descubrimiento completo de endpoints, detección de datos sensibles y análisis avanzado de código para profesionales de seguridad
JSHunter es una herramienta integral de línea de comandos para el análisis de seguridad de JavaScript y el descubrimiento de endpoints. Diseñada para profesionales de seguridad, testers de penetración y desarrolladores, ofrece capacidades de análisis de nivel empresarial con algoritmos de detección de alta precisión y funciones de generación de informes profesionales.
https://github.com/user-attachments/assets/5a5f60fa-f8dc-4aac-bd06-2e93779f9af4
JSHunter en acción: una captura real de terminal de la CLI (cada secreto mostrado son datos de prueba falsos)
Precisión de nivel empresarial con algoritmos de análisis avanzados
Autenticación y Cabeceras:
-H): Cabeceras de autenticación repetibles y cabeceras de solicitud personalizadas-c): Cookies de sesión para acceder a recursos protegidos-U): Cadenas UA personalizadas o rotación basada en archivos para sigiloRendimiento y Fiabilidad:
-R): Retrasos de solicitud configurables (milisegundos) para evitar la detección-T): Configuración de timeout personalizada para diferentes condiciones de red-y): Mecanismo automático de reintento con retroceso exponencial para solicitudes fallidasIntegración Profesional:
-p): Integración completa con Burp Suite y proxies personalizados (HTTP/HTTPS/SOCKS5)-k): Omisión opcional de verificación de certificados para entornos de prueba-t): Manejo configurable de solicitudes concurrentes para un rendimiento óptimoHerramientas de Análisis Principal:
-d): Desempaqueta JavaScript minificado y ofuscado para un análisis profundo-m): Extrae y analiza el código fuente original de los source maps-z): Identifica y clasifica técnicas y patrones de ofuscaciónAnálisis Dinámico:
-e): Analiza la ejecución dinámica de código (eval(), Function(), generación en tiempo de ejecución)Inteligencia de Código:
Uso Profesional: Combine herramientas de análisis con detección de seguridad para una cobertura máxima Ejemplo:
jshunter -u target.js -d -m -e -s -g(desofuscación completa + análisis de seguridad)
Detección de Seguridad Principal:
-s): Claves de API, tokens de acceso, contraseñas y credenciales hardcodeadas-x): Extracción de tokens de autenticación, validación e inspección de payload-F): Análisis de configuración, claves de API y detección de URLs de base de datosAnálisis Avanzado:
-P): Parámetros de formulario ocultos, variables y claves de configuración-PU): Análisis avanzado de parámetros con contexto completo de URL-g): Detección de esquemas, extracción de consultas y descubrimiento de endpoints-B): Patrones de evasión de seguridad y técnicas de bypassAlcance y Contexto:
-i): Identificación y clasificación de recursos privados/internos-L): Extracción integral de URLs y mapeo de relacionesFormatos de Salida Principal:
-o): Guarda resultados completos en ubicaciones de archivo personalizadas-j): Formato de datos estructurado para automatización y procesamiento programático-C): Formato compatible con hojas de cálculo para informes ejecutivos y análisisIntegración Profesional:
-n): Integración directa con Burp Suite Professional para pruebas inmediatas-r): Coincidencia de patrones personalizada para el filtrado dirigido de resultados-v): Salida de análisis detallada con información de depuración y contextoGestión de Resultados:
--found-only): Oculta resultados vacíos para informes de seguridad enfocados-q): Suprime el banner para scripting automatizado e integración CI/CDgo install -v github.com/cc1a2b/jshunter/cmd/jshunter@latest
jshunter --help
### Compilar desde el código fuente```bash
git clone https://github.com/cc1a2b/jshunter.git
cd jshunter
go build -o jshunter ./cmd/jshunter
jshunter -u "https://example.com/app.js"
jshunter -l urls.txt
jshunter -f app.js
### Análisis de Seguridad Completo```bash
# Find API keys, secrets, and credentials
jshunter -u "https://target.com/app.js" -s
# Full analysis with deobfuscation, GraphQL, and Firebase detection
jshunter -u "https://target.com/app.js" -d -s -g -F -x -L
# Professional security assessment with all tools
jshunter -u "https://target.com/app.js" -d -m -e -s -x -P -g -F -B -L
# Export comprehensive results for reporting
jshunter -l targets.txt -s -g -F -j -o security_findings.json
jshunter -u "https://example.com/app.js"
jshunter -l urls.txt
cat urls.txt | grep ".js" | jshunter
jshunter -u "https://example.com/app.js" -s -x -F
jshunter -u "https://target.com/app.js" -d -m -e -s -x -P -g -F -B -L
jshunter -u "https://target.com/bundle.js" -d -m -s -g -F
jshunter -l targets.txt -s -x -F -g -j -o security_findings.json
jshunter -l targets.txt -p 127.0.0.1:8080 -s -g -F -n -o burp_findings.txt
jshunter -l targets.txt -p socks5://127.0.0.1:9050 -s -x -F
jshunter -l urls.txt -R 2000 -H "Authorization: Bearer token" -s -x -F -g -q
jshunter -l urls.txt -ep -P -PU -L -w 2
jshunter -f obfuscated.js -d -z -e -s -v
---
## Referencia de Comandos
Obtén la ayuda completa en cualquier momento con `jshunter --help````
Usage:
-u, --url URL Input a URL
-l, --list FILE.txt Input a file with URLs (.txt)
-f, --file FILE.js Path to JavaScript file
--har FILE Ingest a Chrome DevTools HAR archive
Basic Options:
-t, --threads INT Number of concurrent threads (default: 5)
-c, --cookies <cookies> Authentication cookies for protected resources
-p, --proxy host:port HTTP/SOCKS5 proxy (e.g., 127.0.0.1:8080 for Burp Suite)
-q, --quiet Suppress ASCII art output
--no-color Disable ANSI color (auto-off when not a TTY)
-o, --output FILENAME Output file path
-r, --regex <pattern> RegEx for filtering results
--update, --up Update the tool to latest version
-ep, --end-point Extract endpoints from JavaScript files
-k, --skip-tls Skip TLS certificate verification
-fo, --found-only Only show results when sensitive data is found
HTTP Configuration:
-H, --header "Key: Value" Custom HTTP headers (repeatable, including Auth)
-U, --user-agent UA Custom User-Agent string or file path
-R, --rate-limit MS Request rate limiting delay (milliseconds)
-T, --timeout SEC HTTP request timeout (seconds)
-y, --retry INT Retry attempts for failed requests (default: 2)
--per-host INT Per-host outbound concurrency cap (default: 4)
--max-bytes N Cap response body read in bytes (default: 32MiB)
--allow-internal Permit localhost / RFC1918 / link-local targets
--cache-dir DIR Persist responses on disk; revalidate via ETag
JavaScript Analysis:
-d, --deobfuscate Deobfuscate minified and obfuscated JavaScript
-m, --sourcemap Fetch and parse source maps + sourcesContent[]
-e, --eval Analyze dynamic code execution (eval, Function)
-z, --obfs-detect Detect code obfuscation patterns and techniques
--inline-html Scan inline <script> tags + SRI/CSP in HTML responses
--csp-origins Emit CSP-allowed origins as candidate endpoints
Security Analysis:
-s, --secrets Detect API keys, tokens, and credentials
-x, --tokens Extract JWT and authentication tokens
-P, --params Discover hidden parameters and variables
-PU, --param-urls Advanced parameter extraction with URL context
-i, --internal Filter for internal/private endpoints
-g, --graphql Analyze GraphQL endpoints and queries
-B, --bypass Detect WAF bypass patterns and techniques
-F, --firebase Analyze Firebase configurations and keys
-L, --links Extract and analyze all embedded links
Detection Tuning:
-mc, --min-confidence FLOAT Minimum confidence (0.0-1.0) for a finding (default: 0.50)
-sc, --show-confidence Print [conf=X.XX] alongside each finding
--no-fp-filter Disable the false-positive filter (debug)
--ignore-file FILE Permanent suppressions (.jshunterignore)
--diff PREVIOUS.json Report only NEW findings vs previous JSON envelope
--rules-file FILE.json Load an external JSON rule pack
--only-rules id,glob Run only matching rules (supports * glob)
--disable-rule id,glob Disable matching rules (supports * glob)
Verification:
--verify Probe findings against provider read-only endpoints
--verify-timeout SEC Timeout per verification probe (default: 10)
--verify-workers INT Concurrent verifier worker pool (default: 8)
Scope & Discovery:
-w, --crawl DEPTH Recursive JavaScript discovery depth (default: 1)
-D, --domain DOMAIN Limit analysis to specific domain
-E, --ext Filter by JavaScript file extensions
--robots Fetch /robots.txt for each input host and exit
Output Formats:
-j, --json Structured JSON output (schema_version 2)
--ndjson Newline-delimited JSON (jq / SIEM streaming)
--sarif SARIF 2.1.0 (GitHub code-scanning compatible)
-C, --csv CSV format for spreadsheet analysis
-v, --verbose Detailed analysis and debug output
-n, --burp Burp Suite compatible export format
--stats Per-stage counters on stderr at end of run
Registry:
--list-rules Print the rule registry as a table and exit
--explain RULE_ID Print full rule details and exit
--self-test Run rule registry against built-in TP/FP fixtures
-h, --help Display this help message
Cada coincidencia de clase secreta se puntúa en [0.0, 1.0]. La puntuación parte de una prioridad por regla y se ajusta mediante:
El valor predeterminado --min-confidence 0.50 filtra la cola larga de coincidencias solo por patrón. Usa --min-confidence 0.80 para un triaje de alta precisión, --no-fp-filter para salida cruda y sin filtrar.
Un validador es una comprobación de consistencia por regla que se ejecuta después de que la expresión regular coincida.
Es la defensa más sólida contra falsos positivos: una cadena aleatoria que casualmente
se ajusta a la forma aún debe superar una suma de comprobación, una decodificación estructural o una
prueba de longitud/conjunto de caracteres antes de ser reportada (y superarla añade +0.10).
El registro curado incluye más de 85 detectores que abarcan gestores de nube y secretos
(AWS, Azure, GCP/PKCS#8, HashiCorp Vault, Terraform, Fly.io, Tailscale), control de
versiones y CI/CD (GitHub, GitLab, Docker Hub, Atlassian, Sentry, CircleCI,
Buildkite), pagos (Stripe, Square, Braintree, Plaid), proveedores de IA/LLM
(OpenAI, Anthropic, Groq, Perplexity, Replicate, OpenRouter, Fireworks,
HuggingFace), mensajería (Slack, Discord, Telegram, Twilio, Intercom, SendGrid,
Mailgun), SaaS y bases de datos (Notion, Airtable, Figma, Postman, Databricks,
PlanetScale, Grafana, New Relic, Dropbox, RubyGems, Supabase) y material PKI
(claves privadas RSA/EC/DSA/OpenSSH/PGP/PKCS#8, .ppk de PuTTY, URIs de conexión
a bases de datos). Ejecuta jshunter --list-rules para la tabla autoritativa y
jshunter --explain <rule_id> para el patrón, validador y
fixtures de cualquier regla individual. Las formas de "hash simple" sin prefijo solo se incluyen cuando un
validador estructural o una puerta de contexto obligatoria pueden mantenerlas libres de falsos positivos.
jshunter -l targets.txt -d -m -e -z -s -x -P -PU -g -F -B -L -j -v -o complete_assessment.json
jshunter -l targets.txt -d -m -z -e -s -g -F --found-only -o deobfuscated_findings.json
jshunter -l targets.txt -R 2000 -U "Mozilla/5.0..." -H "X-Forwarded-For: 1.1.1.1" -s -x -F -q
jshunter -l targets.txt -p 127.0.0.1:8080 -s -x -g -F -B -n -o burp_comprehensive.txt
jshunter -l targets.txt -ep -P -PU -L -w 3 -i -j -o endpoint_discovery.json
### Integración Empresarial y Automatización```bash
# CI/CD Security Pipeline Integration
jshunter -f dist/bundle.js -d -s -x -F -j --found-only > security-scan.json
# Comprehensive automated security reporting
jshunter -l production-js.txt -d -s -x -P -g -F -B -C -o enterprise-security-report.csv
# Source map analysis for development security
jshunter -f app.js -m -s -x -F -v -o sourcemap-analysis.json
# Firebase and GraphQL focused assessment
jshunter -l targets.txt -g -F -L -j -o api_security_findings.json
¡Agradecemos las contribuciones! Así es como puedes ayudar:
git clone https://github.com/cc1a2b/jshunter.git cd jshunter go mod tidy go build -o jshunter ./cmd/jshunter
---
## Licencia
JSHunter se publica bajo la **Licencia MIT**. Consulta [LICENSE](https://github.com/cc1a2b/jshunter/blob/master/LICENSE) para más detalles.```
Copyright (c) 2024-2026 Hussain Alsharman
Licensed under MIT License - free for commercial and personal use
Si JSHunter te ayuda con tu investigación de seguridad o trabajo profesional:
Dale una estrella a este repositorio • Sigue a @cc1a2b • Compártelo con otros
JSHunter - Análisis Profesional de Seguridad en JavaScript
Creado por cc1a2b para la comunidad de seguridad
Funciones para Profesionales de Seguridad: Diseñado para pruebas de penetración y evaluaciones de seguridad Ejemplo:
jshunter -l targets.txt -p 127.0.0.1:8080 -H "Authorization: Bearer token" -R 1000
Consejo Profesional: Combine flags para un análisis completo (p. ej.,
jshunter -u target.js -s -x -F -g)
Flujo de Trabajo de Informes: Use JSON para automatización, CSV para informes de gestión y exportación a Burp para pruebas inmediatas Ejemplo:
jshunter -l targets.txt -s -j -o security-findings.json(informe de seguridad estructurado)
| Señal | Efecto |
|---|
| La ruta de origen parece un paquete vendor/chunk | −0.15 |
| El contexto circundante contiene lenguaje de fixtures | −0.30 |
| Validador específico del proveedor superado | +0.10 |
| Palabra clave de contexto requerida presente (regla genérica) | +0.05 |
| Entropía de Shannon ≥ 4.5 | +0.05 |
| Diversidad de clases de caracteres ≥ 3 | +0.05 |
| Coincidencia en la lista de denegación de ruido vendor | descartada antes de puntuar |
| Longitud / entropía por debajo del umbral de la regla | descartada antes de puntuar |
La línea es un marcador //# sourceMappingURL= | descartada antes de puntuar |
| Proveedor | Validador |
|---|
| AWS | Familia de prefijos (AKIA/ASIA/A3T…) + cuerpo base32 de 16 caracteres |
| Stripe | Familia de claves (sk/rk/pk_live/test_) y cuerpo base62 de webhook whsec_ |
| GitHub | Suma de comprobación CRC32 base62 verificada contra cuerpo aleatorio |
| OpenAI | Prefijo de familia + ventana de longitud (sk-/sk-proj-/sk-svcacct-) |
| Slack | Forma de segmentos con guiones (segmentos internos numéricos, cola alfanumérica) |
| JWT | Cabecera JSON decodificada en base64url con campo alg + payload JSON |
| Twilio | Cuerpo de 32 hex + puerta de entropía |
| Azure | El cuerpo base64 de AccountKey= se decodifica exactamente a 64 bytes; AD …<dígito>Q~… |
| Telegram | División <id de 8-10 dígitos>:AA…, secreto base64url + puerta de entropía |
| Intercom | base64 se decodifica a un payload con prefijo tok: |
| Sentry | El payload del token de organización sntrys_ se decodifica en base64 a JSON con una reclamación url |
| Terraform | Estructura de tres segmentos <14>.atlasv1.<60-70> |
| Square | Familia sq0atp-/sq0csp-/sq0idp- + longitud exacta del cuerpo + entropía |
| Braintree | Estructura de cuatro segmentos access_token$<env>$<16 base36>$<32 hex> |
| Airtable | División de dos segmentos pat<14>.<64 hex> |
| Postman | Longitudes de segmento PMAK-<24 hex>-<34 hex> + entropía |
| Database | contraseña de URI de conexión rechazada si está parametrizada/predeterminada/de baja entropía |