⚠️ LEGAL DISCLAIMER / AVISO LEGALThis 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.
- Overview
- Features
- Project Structure
- System Requirements
- Installation
- Quick Start
- Interface Guide
- Configuration Profiles
- Custom Paths (path.ini)
- Resource Optimizer
- Output & Logs
- Export Formats
- Detection Logic
- Performance Guide
- How It Works
- Troubleshooting
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.
- Publicly accessible
.envfiles 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
.envfile path variants
- 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
| 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 |
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
| 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 |
- Ensure Python 3.8+ is installed and in your
PATH - Double-click
run_gui.bat
The batch script automatically:
- Checks for Python installation
- Installs/updates all dependencies via
pip - Launches the application
# 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.pypip install PySide6>=6.5.0 requests>=2.28.0 psutil>=5.9.0- Launch the application (
run_gui.baton Windows orpython gui_main.py) - Load URLs: Click "Browse" to load a
.txtfile with one domain per line, or type URLs directly into the text box - Select a profile: Choose "Balanced" for most use cases
- Enable Custom Paths: Check "Custom Paths" to scan 590+ path variants per domain
- Click "Start Scan" and monitor the live output
- View results in the Results tab
- Export findings as CSV or JSON
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://andhttps://are accepted - Bare domains (without protocol) are also supported
- Duplicate URLs are removed automatically
- Blank lines are ignored
The application has three tabs:
┌────────────────────────────────────────────────────────────────┐
│ 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 |
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
.csvfile - Export JSON: Save structured data to a
.jsonfile
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)
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 |
- Configure your desired settings in the Scanner tab
- Click "Save Profile"
- Enter a name and optional description
- The profile is saved to
scanner_config.json
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"
}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
...
| 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 |
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
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.
The resource_optimizer.py module dynamically calculates optimal scan settings based on live system metrics.
| 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 Usage | Thread Multiplier |
|---|---|
| > 80% | 0.5× |
| 60–80% | 0.7× |
| 40–60% | 0.9× |
| < 40% | 1.2× |
| RAM Used | Thread Multiplier |
|---|---|
| > 85% | 0.4× |
| 70–85% | 0.6× |
| 50–70% | 0.8× |
| < 50% | 1.0× |
| URL Count | Multiplier |
|---|---|
| > 10,000 | 1.3× |
| 1,000–10,000 | 1.1× |
| < 1,000 | 1.0× |
- CPU usage exceeds 90%
- Memory usage exceeds 90%
- Available memory drops below 500 MB
- User-configured threads are more than 2× the recommended value
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
...
============================================================
[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
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[
{
"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"
}
]The scanner identifies a valid Laravel .env file using this two-step check:
The response body must contain:
DB_PASSWORD=
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 |
| Parameter | Value |
|---|---|
| Method | GET |
| Redirects | Followed (allow_redirects=True) |
| Timeout | 7s (default, adjustable) |
| SSL Verify | Standard |
| 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.
| 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.
- Base application: ~100 MB
- Active scan (50 threads): ~200–400 MB
- Large result sets (1000+ finds): ~400–700 MB
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
└─────────────────────┘
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.envis discoveredprogress_update— emits scan statisticslog_message— emits log entries for the live outputscan_complete— emits when the full scan finishes
| 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 |
- Descripción General
- Características
- Estructura del Proyecto
- Requisitos del Sistema
- Instalación
- Inicio Rápido
- Guía de la Interfaz
- Perfiles de Configuración
- Rutas Personalizadas (path.ini)
- Optimizador de Recursos
- Salida y Logs
- Formatos de Exportación
- Lógica de Detección
- Guía de Rendimiento
- Cómo Funciona
- Solución de Problemas
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.
- Archivos
.envaccesibles 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
- 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í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 |
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
| 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 |
- Asegúrate de tener Python 3.8+ instalado y en tu
PATH - 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
# 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.pypip install PySide6>=6.5.0 requests>=2.28.0 psutil>=5.9.0- Lanza la aplicación (
run_gui.baten Windows opython gui_main.py) - Carga URLs: Haz clic en "Browse" para cargar un archivo
.txtcon un dominio por línea, o escribe URLs directamente en el cuadro de texto - Selecciona un perfil: Elige "Balanced" para la mayoría de los casos
- Activa Rutas Personalizadas: Marca "Custom Paths" para escanear 590+ variantes de rutas por dominio
- Haz clic en "Start Scan" y monitorea la salida en vivo
- Ver resultados en la pestaña Results
- Exporta los hallazgos como CSV o JSON
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://comohttps:// - También se admiten dominios sin protocolo
- Las URLs duplicadas se eliminan automáticamente
- Las líneas en blanco se ignoran
La aplicación tiene tres pestañas:
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 |
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
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)
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 |
- Configura los ajustes deseados en la pestaña Scanner
- Haz clic en "Save Profile"
- Ingresa un nombre y descripción opcional
- El perfil se guarda en
scanner_config.json
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"
}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í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 |
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
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.
El módulo resource_optimizer.py calcula dinámicamente la configuración óptima de escaneo basada en métricas del sistema en vivo.
| 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) |
| Uso de CPU | Multiplicador de Hilos |
|---|---|
| > 80% | 0.5× |
| 60–80% | 0.7× |
| 40–60% | 0.9× |
| < 40% | 1.2× |
| RAM Usada | Multiplicador de Hilos |
|---|---|
| > 85% | 0.4× |
| 70–85% | 0.6× |
| 50–70% | 0.8× |
| < 50% | 1.0× |
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
...
============================================================
[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
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[
{
"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"
}
]El escáner identifica un archivo .env válido de Laravel usando esta verificación en dos pasos:
El cuerpo de la respuesta debe contener:
DB_PASSWORD=
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 |
| 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 |
| 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 |
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
└─────────────────────┘
| 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 |
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.