Skip to content

ByteCodeSecure/laravelScanner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel Scanner


⚠️ LEGAL DISCLAIMER / AVISO LEGAL

This tool is intended exclusively for authorized security audits on systems you own or have explicit written permission to test, and for educational/research purposes. Scanning systems without authorization is illegal and may violate laws such as the CFAA (USA), Computer Misuse Act (UK), or equivalent legislation in your country. The author assumes no liability for misuse. Results may contain sensitive credentials — handle and store them securely.


🌐 Language / Idioma


English

Table of Contents

  1. Overview
  2. Features
  3. Project Structure
  4. System Requirements
  5. Installation
  6. Quick Start
  7. Interface Guide
  8. Configuration Profiles
  9. Custom Paths (path.ini)
  10. Resource Optimizer
  11. Output & Logs
  12. Export Formats
  13. Detection Logic
  14. Performance Guide
  15. How It Works
  16. Troubleshooting

Overview

Laravel Scanner is a modern GUI-based security tool built with Python and PySide6 (Qt6) that scans domains for publicly exposed Laravel .env configuration files. When a Laravel application is misconfigured and leaves its .env file accessible from the web, sensitive data — including database credentials, API keys, and encryption secrets — becomes publicly readable.

This scanner automates the detection of such misconfigurations across large lists of domains using a multi-threaded engine with intelligent resource management, 590+ path patterns, and real-time progress tracking.

What It Detects

  • Publicly accessible .env files on Laravel applications
  • Exposed database credentials (DB_USERNAME, DB_PASSWORD, DB_DATABASE, DB_HOST, DB_PORT)
  • Application environment configuration leaks (APP_KEY, APP_ENV, APP_DEBUG)
  • Over 590 common .env file path variants

Use Cases

  • Authorized penetration testing engagements
  • Security audits of Laravel applications you own or manage
  • Bug bounty reconnaissance (on in-scope targets only)
  • Red team assessments with written authorization
  • Security research and education

Features

Feature Description
Modern GUI Dark-themed PySide6 (Qt6) interface with tabbed layout
590+ Path Patterns Scans root, subdirectory, and environment-specific .env variants
Adaptive Thread Pool 1–300 threads with auto-optimization based on CPU/RAM
Smart Mode Real-time CPU/memory monitoring with dynamic thread adjustment
4 Built-in Profiles Balanced, Fast, Conservative, Comprehensive
Custom Profiles Create, save, import, and export your own scan profiles
Path Analysis Statistical breakdown of path depths and patterns
Real-time Output Live feed of scan events with color-coded results
Results Table Sortable table with URL, database, credentials, and timestamp
CSV & JSON Export Export all results for reporting
Auto-Save Continuously writes found credentials to log files
Dual Logging Separate envdata.log (found data) and error.log (errors)
Windows Launcher run_gui.bat automates dependency install and launch

Project Structure

laravelScanner-main/
├── gui_main.py              # Application entry point — initializes Qt app
├── requirements.txt         # Python dependencies
├── path.ini                 # 590+ custom .env path patterns
├── run_gui.bat              # Windows launcher (auto-installs dependencies)
└── gui/
    ├── __init__.py          # Package init
    ├── main_window.py       # Main window — UI layout and event handling
    ├── scanner_core.py      # Core scanning engine with Qt signals/QThread
    ├── config_manager.py    # Profile persistence and settings management
    ├── resource_optimizer.py# System resource monitoring and auto-config
    └── styles.py            # Dark theme QSS stylesheet

System Requirements

Component Requirement
Python 3.8 or higher
PySide6 >= 6.5.0
requests >= 2.28.0
psutil >= 5.9.0
RAM Minimum 2 GB (4 GB+ recommended)
CPU Multi-core recommended
OS Windows 10/11, Linux, macOS
Network Active internet connection

Installation

Windows (Recommended — One Click)

  1. Ensure Python 3.8+ is installed and in your PATH
  2. Double-click run_gui.bat

The batch script automatically:

  • Checks for Python installation
  • Installs/updates all dependencies via pip
  • Launches the application

Manual Installation (All Platforms)

# Clone or download the repository
git clone https://github.com/ByteCodeSecure/laravelScanner.git
cd laravelScanner

# Create a virtual environment (recommended)
python -m venv venv

# Activate virtual environment
# Windows:
venv\Scripts\activate
# Linux/macOS:
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt

# Launch the application
python gui_main.py

Dependencies Only

pip install PySide6>=6.5.0 requests>=2.28.0 psutil>=5.9.0

Quick Start

  1. Launch the application (run_gui.bat on Windows or python gui_main.py)
  2. Load URLs: Click "Browse" to load a .txt file with one domain per line, or type URLs directly into the text box
  3. Select a profile: Choose "Balanced" for most use cases
  4. Enable Custom Paths: Check "Custom Paths" to scan 590+ path variants per domain
  5. Click "Start Scan" and monitor the live output
  6. View results in the Results tab
  7. Export findings as CSV or JSON

URL File Format

Prepare a plain .txt file with one URL per line:

http://example.com
https://app.target.com
https://laravel-site.net
192.168.1.100
  • Both http:// and https:// are accepted
  • Bare domains (without protocol) are also supported
  • Duplicate URLs are removed automatically
  • Blank lines are ignored

Interface Guide

The application has three tabs:

Tab 1 — Scanner

┌────────────────────────────────────────────────────────────────┐
│  Target URLs                                                   │
│  ┌─────────────────────────────┐  [Browse]                    │
│  │ URL list file path          │                               │
│  └─────────────────────────────┘                               │
│  ┌─────────────────────────────────────────────────────────┐  │
│  │ Or type URLs manually (one per line):                   │  │
│  │ https://example.com                                     │  │
│  │ https://target.net                                      │  │
│  └─────────────────────────────────────────────────────────┘  │
│                                                                │
│  Scan Settings                                                 │
│  Max Threads: [50    ▲▼]   [Auto-Optimize]                    │
│  Profile:     [Balanced ▼]  [Save Profile]                    │
│  [✓] Smart Mode   [✓] Auto-save   [✓] Custom Paths            │
│  [Analyze Paths]                                               │
│                                                                │
│  Progress: ████████░░░░░░░ 54%  Found: 3  Scanned: 540/1000  │
│  Paths: 590  Status: Scanning...                               │
│                                                                │
│  ┌─ Live Output ────────────────────────────────────────────┐ │
│  │ [14:32:01] Scanning http://example.com/.env              │ │
│  │ [14:32:02] ✓ FOUND → http://target.com/.env             │ │
│  │ [14:32:03] ✗ 404   → http://other.com/.env              │ │
│  └──────────────────────────────────────────────────────────┘ │
│                                                                │
│  [Start Scan]  [Stop Scan]  [Clear Results]                   │
└────────────────────────────────────────────────────────────────┘

Controls explained:

Control Description
Browse Open file picker to select a .txt URL list
Manual Input Type or paste URLs directly (one per line)
Max Threads Number of concurrent scan threads (1–300)
Auto-Optimize Analyzes your CPU/RAM and sets optimal thread count
Profile Load a predefined or custom scan profile
Save Profile Save current settings as a named profile
Smart Mode Enables real-time resource monitoring and dynamic adjustment
Auto-save Automatically writes found results to envdata.log
Custom Paths Uses all 590+ paths from path.ini per domain
Analyze Paths Shows statistics about the loaded path list
Start Scan Begins scanning with current settings
Stop Scan Gracefully halts the scan
Clear Results Resets all results and clears the output area

Tab 2 — Results

Displays a sortable table of all found .env files:

Column Description
URL Full URL where the .env file was found
Status Always "Found" in this table
Database Value of DB_DATABASE
Username Value of DB_USERNAME
Password Value of DB_PASSWORD
Timestamp Date and time of discovery

Actions:

  • Export CSV: Save the full table to a .csv file
  • Export JSON: Save structured data to a .json file

Tab 3 — Logs

View raw log file contents:

Log Description
envdata.log Full .env file contents for every found instance, with metadata
error.log All connection errors, timeouts, and HTTP error responses with timestamps

Controls:

  • Refresh Logs: Reload log files from disk
  • Clear Logs: Delete log files (use with caution)

Configuration Profiles

Four built-in profiles cover common use cases:

Profile Threads Timeout Paths/Thread Smart Mode Custom Paths Best For
Balanced 25 7s 3 ON ON General use, most targets
Fast 50 5s 5 ON OFF Quick scans, single default path
Conservative 10 10s 2 ON ON Slow targets, rate-limited hosts
Comprehensive 30 12s 2 ON ON Thorough coverage, slow/complex targets

Creating Custom Profiles

  1. Configure your desired settings in the Scanner tab
  2. Click "Save Profile"
  3. Enter a name and optional description
  4. The profile is saved to scanner_config.json

Import / Export Profiles

Profiles can be exported to JSON and shared:

{
  "name": "My Profile",
  "max_threads": 40,
  "timeout": 8,
  "concurrent_paths": 3,
  "use_custom_paths": true,
  "smart_mode": true,
  "auto_save": true,
  "description": "Custom profile for my environment"
}

Custom Paths (path.ini)

The path.ini file contains 590+ .env path variants checked per domain when "Custom Paths" is enabled. The file is a plain text list with one path per line:

/.env
/.env.local
/.env.production.local
/.env.development.local
/app/.env
/public/.env
/storage/.env
/config/.env
/.env.dev
/.env.test
/.env.stage
/.env.prod
/backend/.env
/server/.env
/frontend/.env
/.docker/.env
/laravel/.env
...

Path Categories

Category Examples
Root variants /.env, /.env.local, /.env.backup
Environment-specific /.env.dev, /.env.prod, /.env.staging
Subdirectory /app/.env, /public/.env, /src/.env
Framework-specific /laravel/.env, /symfony/.env
Docker/container /.docker/.env, /docker/app/.env
Backend/API /backend/.env, /api/.env, /server/.env
Frontend /frontend/.env, /client/.env

Path Analysis

Click "Analyze Paths" to see:

  • Total path count
  • Priority path count (high-likelihood paths)
  • Depth distribution (paths per directory level)
  • Top 10 recurring path patterns

Custom path.ini

To use your own path list, edit or replace path.ini with your own paths (one per line). Enable "Custom Paths" in the Scanner tab.


Resource Optimizer

The resource_optimizer.py module dynamically calculates optimal scan settings based on live system metrics.

What It Monitors

Metric Impact
CPU Usage Reduces threads if CPU > 80%
Memory Usage Reduces threads if RAM > 85% used
Available RAM Triggers warning if < 500 MB free
Active Connections Reduces threads if > 500 open connections
URL list size Scales up for large lists (> 10,000 URLs)

CPU Adjustment Factors

CPU Usage Thread Multiplier
> 80% 0.5×
60–80% 0.7×
40–60% 0.9×
< 40% 1.2×

Memory Adjustment Factors

RAM Used Thread Multiplier
> 85% 0.4×
70–85% 0.6×
50–70% 0.8×
< 50% 1.0×

Workload Scaling

URL Count Multiplier
> 10,000 1.3×
1,000–10,000 1.1×
< 1,000 1.0×

Warnings Emitted When

  • CPU usage exceeds 90%
  • Memory usage exceeds 90%
  • Available memory drops below 500 MB
  • User-configured threads are more than 2× the recommended value

Output & Logs

Auto-save: envdata.log

Every found .env file is logged in full detail:

============================================================
TIMESTAMP: 2024-03-28 14:30:45
URL: http://target.com/.env
STATUS: Laravel Found
DATABASE INFO:
  - Username: root
  - Password: secret123
  - Database: laravel_db
  - Host: localhost
  - Port: 3306

ENV CONTENT:
APP_NAME=Laravel
APP_ENV=production
APP_KEY=base64:abc123...
APP_DEBUG=false
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=root
DB_PASSWORD=secret123
...
============================================================

Error Log: error.log

[2024-03-28 14:30:45] Error for http://example.com/.env: Connection timeout
[2024-03-28 14:30:46] Error for https://other.com/.env: 403 Forbidden
[2024-03-28 14:30:47] Error for https://site.com/.env: SSL certificate error

Export Formats

CSV Export

URL,Status,Database,Username,Password,Host,Port,Timestamp
http://target.com/.env,Found,laravel_db,root,secret123,localhost,3306,2024-03-28 14:30:45
https://app.com/public/.env,Found,myapp_db,dbuser,p@ssword,db.internal,3306,2024-03-28 14:31:02

JSON Export

[
  {
    "url": "http://target.com/.env",
    "status": "found",
    "database_info": {
      "username": "root",
      "password": "secret123",
      "database": "laravel_db",
      "host": "localhost",
      "port": "3306"
    },
    "timestamp": "2024-03-28T14:30:45.123456"
  }
]

Detection Logic

The scanner identifies a valid Laravel .env file using this two-step check:

Step 1 — Required Field

The response body must contain:

DB_PASSWORD=

Step 2 — At Least One of These

APP_KEY=
DB_CONNECTION=
APP_ENV=
APP_DEBUG=

If both conditions are met, the file is classified as a Laravel .env and the following fields are extracted via regex:

Field Variable
Database name DB_DATABASE
Database user DB_USERNAME
Database password DB_PASSWORD
Database host DB_HOST
Database port DB_PORT

HTTP Request Details

Parameter Value
Method GET
Redirects Followed (allow_redirects=True)
Timeout 7s (default, adjustable)
SSL Verify Standard

Performance Guide

Expected Scan Times

URLs Paths Threads Estimated Time
100 1 (default) 50 30–60 seconds
1,000 1 (default) 50 5–15 minutes
100 590 (custom) 30 20–60 minutes
1,000 590 (custom) 30 3–12 hours
10,000 1 (default) 50 1–3 hours

Times vary widely depending on target server response speed, network latency, and system resources.

Thread Count Guidelines

Threads Scenario
10–25 Limited bandwidth, slow targets, or conservative scan
25–50 Standard broadband, general use
50–100 Fast connection, VPS/server environment
100–300 High-bandwidth server, large campaigns

Always click Auto-Optimize first — it analyzes your current hardware and recommends an appropriate thread count.

Memory Footprint

  • Base application: ~100 MB
  • Active scan (50 threads): ~200–400 MB
  • Large result sets (1000+ finds): ~400–700 MB

How It Works

Scanning Pipeline

URL List Input
      │
      ▼
┌─────────────────────┐
│  URL Normalization  │  Add http/https, remove duplicates
└──────────┬──────────┘
           ▼
┌─────────────────────┐
│  Path Loading       │  Load path.ini (590+ paths) or use /.env default
│                     │  Prioritize high-likelihood paths
│                     │  Distribute into batches per thread
└──────────┬──────────┘
           ▼
┌─────────────────────┐
│  Resource Check     │  Read CPU%, RAM%, connections
│  (Smart Mode)       │  Calculate optimal thread count
└──────────┬──────────┘
           ▼
┌─────────────────────┐
│  Concurrent Scanner │  ThreadPoolExecutor (configurable workers)
│                     │  GET {url}{path} for each combination
│                     │  Timeout: 7s per request
└──────────┬──────────┘
           ▼
┌─────────────────────┐
│  Response Analysis  │  Check: DB_PASSWORD= present?
│                     │  Check: APP_KEY/DB_CONNECTION/APP_ENV/APP_DEBUG?
│                     │  Extract: DB_* fields via regex
└──────────┬──────────┘
           │  Not Laravel → log error / skip
           │  Laravel Found ↓
┌─────────────────────┐
│  Result Recording   │  Add to results table
│                     │  Append to envdata.log (full .env content)
│                     │  Update live statistics
└─────────────────────┘

Architecture

The application uses a signal-based architecture with Qt:

  • Main Thread: UI updates, user interaction
  • QThread (Scanner): Runs the scan engine without blocking the UI
  • Qt Signals: Thread-safe communication between scanner and UI
    • result_found — emits when a valid .env is discovered
    • progress_update — emits scan statistics
    • log_message — emits log entries for the live output
    • scan_complete — emits when the full scan finishes

Troubleshooting

Problem Cause Solution
ModuleNotFoundError: PySide6 PySide6 not installed Run pip install -r requirements.txt
App won't launch (Windows) Python not in PATH Reinstall Python and check "Add to PATH"
All results are errors Network issue or firewall Check internet connection; try reducing threads
Scan is very slow Too few threads or slow targets Increase threads; use Fast profile
High memory usage Large path list + many threads Use Conservative profile; reduce threads
GUI freezes Thread count too high for system Click Auto-Optimize to reduce threads
path.ini not found File missing or moved Ensure path.ini is in the same folder as gui_main.py
CSV/JSON export fails Permission error on output path Run as admin or choose a different save location
Results table is empty No .env files found This is expected — targets may not have exposed files

Español

Tabla de Contenidos

  1. Descripción General
  2. Características
  3. Estructura del Proyecto
  4. Requisitos del Sistema
  5. Instalación
  6. Inicio Rápido
  7. Guía de la Interfaz
  8. Perfiles de Configuración
  9. Rutas Personalizadas (path.ini)
  10. Optimizador de Recursos
  11. Salida y Logs
  12. Formatos de Exportación
  13. Lógica de Detección
  14. Guía de Rendimiento
  15. Cómo Funciona
  16. Solución de Problemas

Descripción General

Laravel Scanner es una herramienta de seguridad moderna con interfaz gráfica (GUI) construida con Python y PySide6 (Qt6) que escanea dominios en busca de archivos de configuración .env de Laravel expuestos públicamente. Cuando una aplicación Laravel está mal configurada y deja su archivo .env accesible desde la web, datos sensibles — incluyendo credenciales de base de datos, claves API y secretos de encriptación — quedan expuestos públicamente.

Este escáner automatiza la detección de estas configuraciones incorrectas en grandes listas de dominios usando un motor multi-hilo con gestión inteligente de recursos, más de 590 patrones de rutas y seguimiento de progreso en tiempo real.

Qué Detecta

  • Archivos .env accesibles públicamente en aplicaciones Laravel
  • Credenciales de base de datos expuestas (DB_USERNAME, DB_PASSWORD, DB_DATABASE, DB_HOST, DB_PORT)
  • Fugas de configuración de aplicación (APP_KEY, APP_ENV, APP_DEBUG)
  • Más de 590 variantes comunes de rutas de archivos .env

Casos de Uso

  • Pruebas de penetración autorizadas
  • Auditorías de seguridad de aplicaciones Laravel que posees o administras
  • Reconocimiento de bug bounty (solo en objetivos dentro del alcance)
  • Evaluaciones de red team con autorización escrita
  • Investigación y educación en seguridad

Características

Característica Descripción
GUI Moderna Interfaz PySide6 (Qt6) con tema oscuro y diseño de pestañas
590+ Patrones de Rutas Escanea variantes .env en raíz, subdirectorios y específicas por entorno
Pool de Hilos Adaptativo 1–300 hilos con auto-optimización basada en CPU/RAM
Modo Inteligente Monitoreo CPU/memoria en tiempo real con ajuste dinámico de hilos
4 Perfiles Integrados Balanceado, Rápido, Conservador, Completo
Perfiles Personalizados Crea, guarda, importa y exporta tus propios perfiles de escaneo
Análisis de Rutas Desglose estadístico de profundidades y patrones de rutas
Salida en Tiempo Real Feed en vivo de eventos de escaneo con resultados codificados por color
Tabla de Resultados Tabla ordenable con URL, base de datos, credenciales y timestamp
Exportación CSV y JSON Exporta todos los resultados para informes
Auto-guardado Escribe continuamente credenciales encontradas en archivos de log
Log Doble envdata.log (datos encontrados) y error.log (errores) separados
Lanzador Windows run_gui.bat automatiza la instalación de dependencias y el inicio

Estructura del Proyecto

laravelScanner-main/
├── gui_main.py              # Punto de entrada — inicializa la app Qt
├── requirements.txt         # Dependencias Python
├── path.ini                 # 590+ patrones de rutas .env personalizadas
├── run_gui.bat              # Lanzador Windows (auto-instala dependencias)
└── gui/
    ├── __init__.py          # Inicialización del paquete
    ├── main_window.py       # Ventana principal — layout y manejo de eventos
    ├── scanner_core.py      # Motor de escaneo con señales Qt / QThread
    ├── config_manager.py    # Persistencia de perfiles y configuración
    ├── resource_optimizer.py# Monitoreo de recursos del sistema y auto-config
    └── styles.py            # Hoja de estilos QSS del tema oscuro

Requisitos del Sistema

Componente Requisito
Python 3.8 o superior
PySide6 >= 6.5.0
requests >= 2.28.0
psutil >= 5.9.0
RAM Mínimo 2 GB (4 GB+ recomendado)
CPU Multi-core recomendado
SO Windows 10/11, Linux, macOS
Red Conexión a internet activa

Instalación

Windows (Recomendado — Un Clic)

  1. Asegúrate de tener Python 3.8+ instalado y en tu PATH
  2. Haz doble clic en run_gui.bat

El script batch automáticamente:

  • Verifica la instalación de Python
  • Instala/actualiza todas las dependencias via pip
  • Lanza la aplicación

Instalación Manual (Todas las Plataformas)

# Clonar o descargar el repositorio
git clone https://github.com/ByteCodeSecure/laravelScanner.git
cd laravelScanner

# Crear entorno virtual (recomendado)
python -m venv venv

# Activar entorno virtual
# Windows:
venv\Scripts\activate
# Linux/macOS:
source venv/bin/activate

# Instalar dependencias
pip install -r requirements.txt

# Lanzar la aplicación
python gui_main.py

Solo Dependencias

pip install PySide6>=6.5.0 requests>=2.28.0 psutil>=5.9.0

Inicio Rápido

  1. Lanza la aplicación (run_gui.bat en Windows o python gui_main.py)
  2. Carga URLs: Haz clic en "Browse" para cargar un archivo .txt con un dominio por línea, o escribe URLs directamente en el cuadro de texto
  3. Selecciona un perfil: Elige "Balanced" para la mayoría de los casos
  4. Activa Rutas Personalizadas: Marca "Custom Paths" para escanear 590+ variantes de rutas por dominio
  5. Haz clic en "Start Scan" y monitorea la salida en vivo
  6. Ver resultados en la pestaña Results
  7. Exporta los hallazgos como CSV o JSON

Formato del Archivo de URLs

Prepara un archivo .txt plano con una URL por línea:

http://ejemplo.com
https://app.objetivo.com
https://sitio-laravel.net
192.168.1.100
  • Se aceptan tanto http:// como https://
  • También se admiten dominios sin protocolo
  • Las URLs duplicadas se eliminan automáticamente
  • Las líneas en blanco se ignoran

Guía de la Interfaz

La aplicación tiene tres pestañas:

Pestaña 1 — Scanner

Controles explicados:

Control Descripción
Browse Abre el selector de archivos para seleccionar una lista .txt de URLs
Entrada Manual Escribe o pega URLs directamente (una por línea)
Max Threads Número de hilos de escaneo concurrentes (1–300)
Auto-Optimize Analiza tu CPU/RAM y establece el número óptimo de hilos
Profile Carga un perfil de escaneo predefinido o personalizado
Save Profile Guarda la configuración actual como un perfil con nombre
Smart Mode Activa el monitoreo de recursos en tiempo real y ajuste dinámico
Auto-save Escribe automáticamente los resultados encontrados en envdata.log
Custom Paths Usa las 590+ rutas de path.ini por dominio
Analyze Paths Muestra estadísticas sobre la lista de rutas cargada
Start Scan Inicia el escaneo con la configuración actual
Stop Scan Detiene el escaneo gradualmente
Clear Results Restablece todos los resultados y limpia el área de salida

Pestaña 2 — Results

Muestra una tabla ordenable de todos los archivos .env encontrados:

Columna Descripción
URL URL completa donde se encontró el archivo .env
Status Siempre "Found" en esta tabla
Database Valor de DB_DATABASE
Username Valor de DB_USERNAME
Password Valor de DB_PASSWORD
Timestamp Fecha y hora del descubrimiento

Acciones:

  • Export CSV: Guarda la tabla completa en un archivo .csv
  • Export JSON: Guarda datos estructurados en un archivo .json

Pestaña 3 — Logs

Visualiza el contenido bruto de los archivos de log:

Log Descripción
envdata.log Contenido completo del archivo .env para cada instancia encontrada, con metadatos
error.log Todos los errores de conexión, timeouts y respuestas HTTP de error con timestamps

Controles:

  • Refresh Logs: Recarga los archivos de log desde disco
  • Clear Logs: Elimina los archivos de log (usar con precaución)

Perfiles de Configuración

Cuatro perfiles integrados cubren los casos de uso más comunes:

Perfil Hilos Timeout Rutas/Hilo Modo Intel. Rutas Custom Mejor Para
Balanced 25 7s 3 ON ON Uso general, mayoría de objetivos
Fast 50 5s 5 ON OFF Escaneos rápidos, ruta por defecto
Conservative 10 10s 2 ON ON Objetivos lentos, hosts con rate-limit
Comprehensive 30 12s 2 ON ON Cobertura exhaustiva, objetivos complejos

Crear Perfiles Personalizados

  1. Configura los ajustes deseados en la pestaña Scanner
  2. Haz clic en "Save Profile"
  3. Ingresa un nombre y descripción opcional
  4. El perfil se guarda en scanner_config.json

Importar / Exportar Perfiles

Los perfiles pueden exportarse a JSON y compartirse:

{
  "name": "Mi Perfil",
  "max_threads": 40,
  "timeout": 8,
  "concurrent_paths": 3,
  "use_custom_paths": true,
  "smart_mode": true,
  "auto_save": true,
  "description": "Perfil personalizado para mi entorno"
}

Rutas Personalizadas (path.ini)

El archivo path.ini contiene 590+ variantes de rutas .env verificadas por dominio cuando "Custom Paths" está activado. El archivo es una lista de texto plano con una ruta por línea.

Categorías de Rutas

Categoría Ejemplos
Variantes raíz /.env, /.env.local, /.env.backup
Específicas por entorno /.env.dev, /.env.prod, /.env.staging
Subdirectorios /app/.env, /public/.env, /src/.env
Específicas de framework /laravel/.env, /symfony/.env
Docker/contenedor /.docker/.env, /docker/app/.env
Backend/API /backend/.env, /api/.env, /server/.env
Frontend /frontend/.env, /client/.env

Análisis de Rutas

Haz clic en "Analyze Paths" para ver:

  • Conteo total de rutas
  • Conteo de rutas prioritarias (alta probabilidad)
  • Distribución por profundidad (rutas por nivel de directorio)
  • Top 10 patrones de ruta recurrentes

path.ini Personalizado

Para usar tu propia lista de rutas, edita o reemplaza path.ini con tus propias rutas (una por línea). Activa "Custom Paths" en la pestaña Scanner.


Optimizador de Recursos

El módulo resource_optimizer.py calcula dinámicamente la configuración óptima de escaneo basada en métricas del sistema en vivo.

Qué Monitorea

Métrica Impacto
Uso de CPU Reduce hilos si CPU > 80%
Uso de Memoria Reduce hilos si RAM > 85% usada
RAM disponible Activa advertencia si < 500 MB libres
Conexiones activas Reduce hilos si > 500 conexiones abiertas
Tamaño de lista de URLs Escala hacia arriba para listas grandes (> 10,000 URLs)

Factores de Ajuste de CPU

Uso de CPU Multiplicador de Hilos
> 80% 0.5×
60–80% 0.7×
40–60% 0.9×
< 40% 1.2×

Factores de Ajuste de Memoria

RAM Usada Multiplicador de Hilos
> 85% 0.4×
70–85% 0.6×
50–70% 0.8×
< 50% 1.0×

Salida y Logs

Auto-guardado: envdata.log

Cada archivo .env encontrado se registra con detalle completo:

============================================================
TIMESTAMP: 2024-03-28 14:30:45
URL: http://objetivo.com/.env
STATUS: Laravel Found
DATABASE INFO:
  - Username: root
  - Password: secreto123
  - Database: laravel_db
  - Host: localhost
  - Port: 3306

ENV CONTENT:
APP_NAME=Laravel
APP_ENV=production
APP_KEY=base64:abc123...
APP_DEBUG=false
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=root
DB_PASSWORD=secreto123
...
============================================================

Log de Errores: error.log

[2024-03-28 14:30:45] Error for http://ejemplo.com/.env: Connection timeout
[2024-03-28 14:30:46] Error for https://otro.com/.env: 403 Forbidden
[2024-03-28 14:30:47] Error for https://sitio.com/.env: SSL certificate error

Formatos de Exportación

Exportación CSV

URL,Status,Database,Username,Password,Host,Port,Timestamp
http://objetivo.com/.env,Found,laravel_db,root,secreto123,localhost,3306,2024-03-28 14:30:45

Exportación JSON

[
  {
    "url": "http://objetivo.com/.env",
    "status": "found",
    "database_info": {
      "username": "root",
      "password": "secreto123",
      "database": "laravel_db",
      "host": "localhost",
      "port": "3306"
    },
    "timestamp": "2024-03-28T14:30:45.123456"
  }
]

Lógica de Detección

El escáner identifica un archivo .env válido de Laravel usando esta verificación en dos pasos:

Paso 1 — Campo Requerido

El cuerpo de la respuesta debe contener:

DB_PASSWORD=

Paso 2 — Al Menos Uno de Estos

APP_KEY=
DB_CONNECTION=
APP_ENV=
APP_DEBUG=

Si ambas condiciones se cumplen, el archivo se clasifica como .env de Laravel y se extraen los siguientes campos mediante expresiones regulares:

Campo Variable
Nombre de base de datos DB_DATABASE
Usuario de base de datos DB_USERNAME
Contraseña de base de datos DB_PASSWORD
Host de base de datos DB_HOST
Puerto de base de datos DB_PORT

Guía de Rendimiento

Tiempos Estimados de Escaneo

URLs Rutas Hilos Tiempo Estimado
100 1 (por defecto) 50 30–60 segundos
1,000 1 (por defecto) 50 5–15 minutos
100 590 (custom) 30 20–60 minutos
1,000 590 (custom) 30 3–12 horas
10,000 1 (por defecto) 50 1–3 horas

Guía de Número de Hilos

Hilos Escenario
10–25 Ancho de banda limitado, objetivos lentos, o escaneo conservador
25–50 Banda ancha estándar, uso general
50–100 Conexión rápida, entorno VPS/servidor
100–300 Servidor de alto ancho de banda, campañas grandes

Cómo Funciona

Pipeline de Escaneo

Lista de URLs de Entrada
         │
         ▼
┌─────────────────────┐
│  Normalización URL  │  Agregar http/https, eliminar duplicados
└──────────┬──────────┘
           ▼
┌─────────────────────┐
│  Carga de Rutas     │  Cargar path.ini (590+ rutas) o usar /.env
│                     │  Priorizar rutas de alta probabilidad
│                     │  Distribuir en lotes por hilo
└──────────┬──────────┘
           ▼
┌─────────────────────┐
│  Verificación de    │  Leer CPU%, RAM%, conexiones
│  Recursos           │  Calcular cantidad óptima de hilos
│  (Modo Inteligente) │
└──────────┬──────────┘
           ▼
┌─────────────────────┐
│  Escáner Concurrente│  ThreadPoolExecutor (workers configurables)
│                     │  GET {url}{ruta} por cada combinación
│                     │  Timeout: 7s por solicitud
└──────────┬──────────┘
           ▼
┌─────────────────────┐
│  Análisis de        │  ¿Tiene DB_PASSWORD=?
│  Respuesta          │  ¿Tiene APP_KEY/DB_CONNECTION/APP_ENV?
│                     │  Extraer campos DB_* via regex
└──────────┬──────────┘
           │  No es Laravel → registrar error / saltar
           │  Laravel Encontrado ↓
┌─────────────────────┐
│  Registro del       │  Agregar a tabla de resultados
│  Resultado          │  Agregar a envdata.log (contenido completo)
│                     │  Actualizar estadísticas en vivo
└─────────────────────┘

Solución de Problemas

Problema Causa Solución
ModuleNotFoundError: PySide6 PySide6 no instalado Ejecuta pip install -r requirements.txt
La app no inicia (Windows) Python no en PATH Reinstala Python marcando "Add to PATH"
Todos los resultados son errores Problema de red o firewall Verifica la conexión; prueba reduciendo hilos
El escaneo es muy lento Pocos hilos u objetivos lentos Aumenta hilos; usa el perfil Fast
Alto uso de memoria Lista de rutas grande + muchos hilos Usa perfil Conservative; reduce hilos
La GUI se congela Número de hilos demasiado alto Haz clic en Auto-Optimize para reducir hilos
path.ini no encontrado Archivo faltante o movido Asegúrate de que path.ini esté en la misma carpeta que gui_main.py
Exportación CSV/JSON falla Error de permisos en la ruta de salida Ejecuta como administrador o elige otra ubicación
Tabla de resultados vacía No se encontraron archivos .env Esto es esperado — los objetivos pueden no tener archivos expuestos

License / Licencia

This project is licensed under the MIT License. See LICENSE for details.

Este proyecto está bajo la Licencia MIT. Ver LICENSE para más detalles.

About

GUI-based Laravel .env exposure scanner with 590+ path patterns and smart resource optimization

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors