-
Notifications
You must be signed in to change notification settings - Fork 0
Home
📖 Guía Exhaustiva y Cheatsheet Completo
- Parámetros Completos
- Perfiles de Escaneo
- Workflows
- Gestión de Sesiones
- Modos de Reanudación
- Gestión Avanzada de Hosts
- Archivos de Salida
- Modo Wizard
- Troubleshooting
| Parámetro | Tipo | Por Defecto | Descripción |
|---|---|---|---|
| ENTRADA DE HOSTS (uno requerido) | |||
-Hosts |
String[] | - | Array de hosts directo (IPs, CIDR, hostnames). Combinable con -HostFile. |
-HostFile |
String | - | Archivo con hosts a escanear (IPs, CIDR, hostnames). Un host por línea. |
| TIPOS DE ESCANEO (mutuamente excluyentes) | |||
-ScanType |
String | - | Tipo de escaneo: tcp-100, tcp-1000, tcp-full, udp-common, udp-1000, udp-full. Mutuamente excluyente con -Workflow. |
-Workflow |
String | - | Nombre del workflow a ejecutar (full-discovery). Mutuamente excluyente con -ScanType. |
| PARÁMETROS DEL WORKFLOW | |||
-WorkflowCondition |
String | always |
Condición global para pasos de workflow: always, previous_success, previous_has_results. |
| ARCHIVOS DE CONFIGURACIÓN | |||
-ConfigFile |
String | nmap-profiles-workflows.json |
Archivo de configuración con perfiles y workflows personalizados. |
| ACTIVOS EXCLUIDOS | |||
-ExcludeHosts |
String[] | - | Array de hosts a excluir (IPs, CIDR, hostnames). Combinable con -ExcludeFile. |
-ExcludeFile |
String | - | Archivo con hosts a excluir del escaneo. Soporta IPs, CIDR, hostnames. |
| ACTIVOS SENSIBLES | |||
-SensitiveHosts |
String[] | - | Array de hosts sensibles (IPs, CIDR, hostnames). Combinable con -SensitiveFile. |
-SensitiveFile |
String | - | Archivo con hosts sensibles (timing/scripts personalizados). Soporta IPs, CIDR, hostnames. |
-SensitiveTiming |
String | T2 |
Timing de Nmap para hosts sensibles: T0 (paranoid), T1 (sneaky), T2 (polite), T3 (normal), T4 (aggressive). |
-SensitiveScripts |
String | default |
NSE scripts para hosts sensibles: default, vuln, none, default+vuln. |
| RENDIMIENTO | |||
-MaxConcurrent |
Int | 5 |
Hosts escaneados simultáneamente. Rango: 1-50. |
-MaxRetries |
Int | 1 |
Reintentos para hosts fallidos. Rango: 0-10. |
-RetryDelay |
Int | 60 |
Segundos entre reintentos. Rango: 0-3600. |
| CARPETA DE SALIDA | |||
-OutputDir |
String | nmap |
Directorio de salida para resultados. Crea estructura: networks/, hosts/, .sessions/. |
| CONFIGURACIÓN | |||
-OverwriteMode |
String | Ask |
Comportamiento con archivos existentes: Skip (saltar), Overwrite (sobrescribir), Ask (preguntar). |
-ResolveHostnames |
Switch | - | Resuelve hostnames a IPs para matching de exclusiones. Puede ser lento para listas grandes. |
-VerboseMode |
Switch | - | Muestra comandos nmap completos y salida en tiempo real. Útil para debugging. |
-Wizard |
Switch | - | Modo interactivo: configuración guiada paso a paso (10 pasos). Ideal para principiantes. |
-Unprivileged |
Switch | - | Modo sin privilegios. Convierte automáticamente -sS a -sT. Requiere cuando no hay acceso raw sockets. |
| GESTIÓN DE SESIONES | |||
-SessionName |
String | Auto-generado | Nombre personalizado para la sesión. Formato: 3-50 caracteres alfanuméricos + guiones/guiones bajos. |
-ListSessions |
Switch | - | Lista todas las sesiones disponibles con estado y progreso. Sale después de listar. |
-ResumeSession |
String | - | Reanuda sesión específica por nombre. Requiere combinarse con un modo de reanudación. |
| GESTIÓN DE ESTADO (mutuamente excluyentes) | |||
-Resume |
Switch | - | Continúa solo hosts pendientes. Salta completados y fallidos. |
-ResumeRetryFailed |
Switch | - | Continúa hosts pendientes + reintenta fallidos. Salta completados. |
-ResumeRetryDead |
Switch | - | Continúa pendientes + reintenta fallidos + reescanea muertos (hosts sin puertos). |
-RetryFailed |
Switch | - | Solo reintenta hosts fallidos. Salta pendientes y completados. |
-RetryDead |
Switch | - | Solo reescanea hosts muertos (completados sin puertos abiertos). Salta pendientes, fallidos y vivos. |
-Force |
Switch | - | Ignora estado previo e inicia desde cero. Archiva archivos de estado antiguos. |
| Parámetro | Validación | Valores Permitidos |
|---|---|---|
-ScanType |
Debe existir en config | tcp-100, tcp-1000, tcp-full, udp-common, udp-1000, udp-full, custom |
-Workflow |
Debe existir en config | full-discovery, custom |
-WorkflowCondition |
ValidateSet | always, previous_success, previous_has_results |
-SensitiveTiming |
ValidateSet | T1, T2, T3, T4 |
-SensitiveScripts |
ValidateSet | default, vuln, none, default+vuln |
-MaxConcurrent |
ValidateRange | 1-50 |
-MaxRetries |
ValidateRange | 0-10 |
-RetryDelay |
ValidateRange | 0-3600 |
-OverwriteMode |
ValidateSet | Skip, Overwrite, Ask |
-SessionName |
Regex | 3-50 caracteres: ^[a-zA-Z0-9_-]{3,50}$
|
| Perfil | Puertos | Velocidad | Timing | Scripts | Timeout | Uso Recomendado |
|---|---|---|---|---|---|---|
tcp-100 |
Top 100 TCP | ⚡⚡⚡ Muy rápido | T4 | default, vuln | 10m | Reconocimiento rápido inicial |
tcp-1000 |
Top 1000 TCP | ⚡⚡⚡ Rápido | T4 | default, vuln | 60m | Escaneo estándar de redes |
tcp-full |
65535 TCP | ⚡ Lento | T4 | default, vuln | 60m | Escaneo exhaustivo TCP |
udp-common |
UDP comunes | ⚡⚡ Medio | T4 | sV, A | 60m | Servicios UDP estándar |
udp-1000 |
Top 1000 UDP | ⚡ Lento | T4 | sV, A | 60m | Escaneo UDP completo |
udp-full |
65535 UDP | 🐢 Muy lento | T4 | sV, A | 60m | Escaneo exhaustivo UDP |
nmap -v -T4 -Pn -open -sS --script=default,vuln -A --host-timeout 10m --top-ports 100- Descripción: Escaneo rápido de los 100 puertos TCP más comunes
- Tiempo estimado: 2-5 minutos por host
- Ideal para: Reconocimiento inicial, redes grandes
nmap -v -T4 -Pn -open -sS --script=default,vuln -A --host-timeout 60m --top-ports 1000- Descripción: Escaneo estándar de los 1000 puertos TCP más comunes
- Tiempo estimado: 5-15 minutos por host
- Ideal para: Escaneo estándar de infraestructura
nmap -v -T4 -Pn -open -sS --script=default,vuln -A --host-timeout 60m -p-- Descripción: Escaneo completo de todos los 65535 puertos TCP
- Tiempo estimado: 30-60 minutos por host
- Ideal para: Auditorías exhaustivas, pentesting
nmap -v -T4 -Pn -sU -sV -A --host-timeout 60m -p '53,67,69,11,123,137,161,500,514,520,563'- Descripción: Puertos UDP más comunes (DNS, DHCP, SNMP, NTP, etc.)
- Tiempo estimado: 10-20 minutos por host
- Ideal para: Descubrimiento de servicios UDP críticos
nmap -v -T4 -Pn -sU -sV -A --host-timeout 60m- Descripción: Top 1000 puertos UDP
- Tiempo estimado: 60+ minutos por host
- Ideal para: Auditoría UDP completa
nmap -v -T4 -Pn -sU -sV -A --host-timeout 60m -p-- Descripción: Todos los 65535 puertos UDP
- Tiempo estimado: 4-8 horas por host
- Ideal para: Auditorías de seguridad exhaustivas
| Flag | Descripción |
|---|---|
-v |
Verbose mode (output detallado) |
-T4 |
Timing aggressive (más rápido, más agresivo) |
-Pn |
No ping (asume host activo, evita bloqueos de firewall) |
-open |
Solo muestra puertos abiertos |
-sS |
SYN scan (stealth, requiere privilegios) |
-sU |
UDP scan |
-sV |
Version detection (detecta versiones de servicios) |
-A |
OS detection + version detection + script scanning + traceroute |
--script=default,vuln |
Ejecuta scripts de detección y vulnerabilidades |
--host-timeout |
Timeout máximo por host |
-p- |
Todos los puertos (1-65535) |
--top-ports |
Solo los N puertos más comunes |
Los workflows permiten encadenar múltiples perfiles de escaneo secuencialmente sobre los mismos hosts. Cada paso (step) puede tener condiciones que determinan si se ejecuta o no.
Ventajas:
- Escaneo progresivo: rápido → profundo
- Optimización de tiempo: solo profundiza en hosts exitosos
- Automatización completa: un solo comando para múltiples fases
Estructura:
Step 1: tcp-1000 (reconocimiento rápido)
↓ (condition: always)
Step 2: tcp-full (escaneo profundo)
↓ (condition: previous_success)
Step 3: udp-common (servicios UDP)
↓ (condition: previous_success)
Configuración en nmap-profiles-workflows.json:
{
"workflows": {
"full-discovery": {
"name": "Full Discovery Workflow",
"description": "Complete host discovery: quick TCP → full TCP → common UDP",
"steps": [
{
"profile": "tcp-1000",
"description": "Quick TCP port discovery",
"condition": "always"
},
{
"profile": "tcp-full",
"description": "Full TCP port scan",
"condition": "previous_success"
},
{
"profile": "udp-common",
"description": "Common UDP ports",
"condition": "previous_success"
}
]
}
}
}Uso:
scanyx -HostFile hosts.txt -Workflow full-discovery -MaxConcurrent 5| Condición | Descripción | Cuándo Usar |
|---|---|---|
always |
Siempre ejecuta el paso, independiente del resultado anterior | Primer paso o pasos obligatorios |
previous_success |
Solo si el paso anterior completó sin errores | Escaneos profundos que dependen de éxito previo |
previous_has_results |
Solo si el paso anterior encontró puertos abiertos | Optimización: solo profundiza en hosts vivos |
Forzar condiciones globalmente:
# Ejecutar todos los pasos siempre (ignora condiciones)
scanyx -HostFile hosts.txt -Workflow full-discovery -WorkflowCondition alwaysnmap/
└── workflows/
└── full-discovery/
├── step-1-tcp-1000/
│ ├── networks/
│ │ └── 192.168.1.0-24/
│ │ ├── 192.168.1.10_tcp-1000.nmap
│ │ ├── 192.168.1.10_tcp-1000.xml
│ │ └── ...
│ └── hosts/
├── step-2-tcp-full/
│ ├── networks/
│ └── hosts/
└── step-3-udp-common/
├── networks/
└── hosts/
Ejemplo: workflow-fast-recon
{
"workflows": {
"fast-recon": {
"name": "Fast Reconnaissance",
"description": "Quick TCP-100 → TCP-1000 if hosts alive",
"steps": [
{
"profile": "tcp-100",
"description": "Ultra-fast initial scan",
"condition": "always"
},
{
"profile": "tcp-1000",
"description": "Standard scan on alive hosts",
"condition": "previous_has_results"
}
]
}
}
}Uso:
scanyx -HostFile targets.txt -Workflow fast-recon -MaxConcurrent 20Las sesiones permiten crear, nombrar, listar y reanudar escaneos con identificadores personalizados. Cada sesión tiene su propia carpeta con estado, logs y resultados.
Ventajas:
- Organización por proyecto/cliente
- Múltiples escaneos simultáneos
- Reanudación por nombre fácil de recordar
- Historial completo de escaneos
# Sesión de pentesting
scanyx `
-HostFile targets.txt `
-ScanType tcp-1000 `
-SessionName "pentest-cliente-2025"
# Workflow con nombre descriptivo
scanyx `
-HostFile networks.txt `
-Workflow full-discovery `
-SessionName "infrastructure-audit-Q4" `
-MaxConcurrent 10
# Escaneo programado (nombre dinámico)
scanyx `
-HostFile monitored.txt `
-ScanType tcp-1000 `
-SessionName "weekly-scan-$(Get-Date -Format 'yyyy-MM-dd')"# Listar todas las sesiones
scanyx -ListSessions
# Listar sesiones en directorio específico
scanyx -ListSessions -OutputDir "C:\Scans\Project1"Salida ejemplo:
Available Sessions in: nmap/
┌─────────────────────────────────────────────────────────────────────┐
│ Session: pentest-cliente-2025 │
├─────────────────────────────────────────────────────────────────────┤
│ Type : tcp-1000 │
│ Status : in_progress │
│ Progress : 350/1000 (35.0%) | Success: 340 | Failed: 10 │
│ Started : 2025-10-18 14:30:00 │
│ Elapsed : 2h 45m │
│ State File : .sessions/pentest-cliente-2025/scan-state.json │
└─────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────┐
│ Session: weekly-scan-2025-10-18 │
├─────────────────────────────────────────────────────────────────────┤
│ Type : Workflow: full-discovery │
│ Status : completed │
│ Progress : 500/500 (100.0%) | Success: 485 | Failed: 15 │
│ Started : 2025-10-18 02:00:00 │
│ Duration : 12h 34m │
│ State File : .sessions/weekly-scan-2025-10-18/scan-state.json │
└─────────────────────────────────────────────────────────────────────┘
Total: 2 session(s) found
# Reanudar solo hosts pendientes
scanyx -ResumeSession "pentest-cliente-2025" -OutputDir "C:\Scans\Project1" -Resume
# Reanudar y reintentar fallidos
scanyx -ResumeSession "pentest-cliente-2025" -OutputDir "C:\Scans\Project1" -ResumeRetryFailed
# Solo reintentar hosts fallidos de una sesión
scanyx -ResumeSession "infrastructure-audit-Q4" -OutputDir "C:\Scans\Project1" -RetryFailed
# Reanudar con parámetros modificados
scanyx `
-ResumeSession "pentest-cliente-2025" `
-OutputDir "C:\Scans\Project1" `
-Resume `
-MaxConcurrent 20 # Aumentar concurrencianmap/
├── .sessions/
│ ├── pentest-cliente-2025/
│ │ ├── scan-state.json # Estado de cada host
│ │ ├── scan.log # Log completo
│ │ ├── scan-errors.log # Solo errores
│ │ └── scan-results.json # Resultados estructurados
│ └── weekly-scan-2025-10-18/
│ └── ...
├── networks/ # Resultados compartidos
│ └── 192.168.1.0-24/
│ └── ...
└── hosts/ # Resultados compartidos
└── ...
Formato válido: 3-50 caracteres alfanuméricos + guiones/guiones bajos
Ejemplos válidos:
"pentest-cliente-2025"
"weekly_scan_october"
"infrastructure-audit-phase1"
"internal-network-sweep"
"vuln-assessment-2025-Q4"
Ejemplos inválidos:
"ab" # Muy corto (<3 caracteres)
"sesión con espacios" # Contiene espacios
"scan/network" # Contiene /
"nombre-demasiado-largo-que-excede-el-limite-de-cincuenta-caracteres" # >50 caracteres
# Fase 1: Reconocimiento
scanyx -HostFile external.txt -ScanType tcp-1000 -SessionName "client-pentest-phase1"
# Fase 2: Escaneo profundo (días después)
scanyx -HostFile discovered.txt -Workflow full-discovery -SessionName "client-pentest-phase2"
# Listar todas las fases
scanyx -ListSessions | Select-String "client-pentest"# Script con fecha de forma dinámica
$sessionName = "daily-scan-$(Get-Date -Format 'yyyy-MM-dd')"
scanyx -HostFile monitored-hosts.txt -ScanType tcp-1000 -SessionName $sessionName -OutputDir "C:\Scans\Project1"
# Ver histórico de escaneos diarios
scanyx -ListSessions | Select-String "daily-scan"| Situación | Modo | Qué hace | Cuándo usar |
|---|---|---|---|
| Escaneo interrumpido (Ctrl+C) | -Resume |
Continúa solo hosts pendientes. Salta completados y fallidos. | Interrumpiste el escaneo y quieres continuar |
| Escaneo con errores de red | -ResumeRetryFailed |
Continúa pendientes + reintenta fallidos. Salta completados. | Hubo errores temporales (timeouts, red inestable) |
| Verificar hosts "muertos" | -RetryDead |
Solo reescanea hosts sin puertos abiertos. Salta pendientes, fallidos y vivos. | Sospechas falsos negativos en hosts "muertos" |
| Completar escaneo fallido | -ResumeRetryDead |
Continúa pendientes + reintenta fallidos + reescanea muertos. | Quieres completar todo + verificar muertos |
| Solo arreglar errores previos | -RetryFailed |
Solo reintenta hosts fallidos. Salta pendientes y completados. | Solo quieres arreglar hosts con errores |
| Empezar desde cero | -Force |
Ignora todo el estado previo. Archiva estado antiguo. | Quieres reiniciar completamente el escaneo |
| Estado | Descripción | Cómo llega a este estado |
|---|---|---|
| Pending | Host en cola, no escaneado todavía | Estado inicial al comenzar escaneo |
| Completed | Host escaneado exitosamente | Nmap completó sin errores (puede o no tener puertos abiertos) |
| Failed | Host con error de escaneo | Timeout, host unreachable, error de nmap |
| Dead/No ports | Host escaneado, pero sin puertos abiertos | Nmap completó, pero no encontró puertos abiertos |
Qué hace:
- ✅ Escanea hosts pendientes
- ❌ Salta hosts completados
- ❌ Salta hosts fallidos
Cuándo usar:
- Interrumpiste el escaneo (Ctrl+C)
- Quieres continuar solo con lo que falta
Ejemplo:
# Escaneo original (interrumpido)
scanyx -HostFile hosts.txt -ScanType tcp-1000
# [Ctrl+C después de escanear 50 de 200 hosts]
# Continuar desde donde se quedó
scanyx -HostFile hosts.txt -ScanType tcp-1000 -Resume
# Escanea los 150 hosts restantesQué hace:
- ✅ Escanea hosts pendientes
- ✅ Reintenta hosts fallidos
- ❌ Salta hosts completados exitosamente
Cuándo usar:
- Hubo errores temporales (red inestable, timeouts)
- Quieres reintentar los que fallaron + continuar pendientes
Ejemplo:
# Escaneo con errores de red
scanyx -HostFile hosts.txt -ScanType tcp-1000
# Estado final: 150 completados, 30 fallidos (timeouts), 20 pendientes
# Continuar y reintentar fallidos
scanyx -HostFile hosts.txt -ScanType tcp-1000 -ResumeRetryFailed
# Escanea: 20 pendientes + 30 fallidos = 50 hostsQué hace:
- ✅ Escanea hosts pendientes
- ✅ Reintenta hosts fallidos
- ✅ Reescanea hosts muertos (sin puertos abiertos)
- ❌ Salta hosts completados con puertos abiertos
Cuándo usar:
- Quieres completar todo Y verificar hosts "muertos"
- Sospechas falsos negativos (firewalls, timing)
Ejemplo:
# Escaneo inicial
scanyx -HostFile hosts.txt -ScanType tcp-1000
# Estado: 150 vivos, 30 muertos (sin puertos), 10 fallidos, 10 pendientes
# Completar + verificar muertos
scanyx -HostFile hosts.txt -ScanType tcp-1000 -ResumeRetryDead
# Escanea: 10 pendientes + 10 fallidos + 30 muertos = 50 hostsQué hace:
- ✅ Solo reintenta hosts fallidos
- ❌ Salta hosts pendientes
- ❌ Salta hosts completados
Cuándo usar:
- Solo quieres arreglar hosts que fallaron
- No te importan los pendientes
Ejemplo:
# Escaneo completo con algunos errores
scanyx -HostFile hosts.txt -ScanType tcp-1000
# Estado: 180 completados, 20 fallidos
# Solo reintentar los 20 fallidos
scanyx -HostFile hosts.txt -ScanType tcp-1000 -RetryFailed
# Escanea: solo los 20 fallidosQué hace:
- ✅ Solo reescanea hosts muertos (sin puertos)
- ❌ Salta hosts pendientes
- ❌ Salta hosts fallidos
- ❌ Salta hosts vivos (con puertos)
Cuándo usar:
- Quieres verificar si los hosts "muertos" son falsos negativos
- Usar timing más lento o diferentes parámetros
Ejemplo:
# Escaneo rápido inicial
scanyx -HostFile hosts.txt -ScanType tcp-1000
# Estado: 150 vivos, 50 muertos
# Verificar hosts "muertos" con timing lento
scanyx -HostFile hosts.txt -ScanType tcp-full -RetryDead
# Escanea: solo los 50 muertos (con tcp-full para ser exhaustivo)Qué hace:
- ✅ Ignora completamente el estado previo
- ✅ Archiva archivos de estado antiguos
- ✅ Inicia escaneo desde cero
Cuándo usar:
- Quieres empezar de nuevo
- Cambios significativos en la red
- Escaneo anterior obsoleto
Ejemplo:
# Escaneo anterior (hace 1 mes)
scanyx -HostFile hosts.txt -ScanType tcp-1000
# Empezar desde cero (ignora escaneo anterior)
scanyx -HostFile hosts.txt -ScanType tcp-1000 -Force
# Archiva: scan-state.json → scan-state.json.backup-20251018-143000
# Escanea: todos los hosts desde cero# Día 1: Escaneo inicial (interrumpido)
scanyx -HostFile 500-hosts.txt -ScanType tcp-1000 -SessionName "pentest-phase1"
# [Interrumpido después de 200 hosts]
# Día 2: Continuar
scanyx -ResumeSession "pentest-phase1" -Resume
# Completa los 300 hosts restantes# Escaneo con errores de red
scanyx -HostFile hosts.txt -ScanType tcp-full -MaxRetries 3 -SessionName "audit-2025"
# Estado final: 150 OK, 30 failed, 20 pending
# Reintentar todo lo que faltó
scanyx -ResumeSession "audit-2025" -ResumeRetryFailed
# Escanea: 30 failed + 20 pending# Escaneo rápido
scanyx -HostFile hosts.txt -ScanType tcp-100 -SessionName "quick-scan"
# Estado: 100 vivos, 100 muertos
# Verificar "muertos" con escaneo exhaustivo
scanyx -ResumeSession "quick-scan" -ScanType tcp-full -RetryDead
# Solo reescanea los 100 "muertos" con tcp-fullSCANYX expande automáticamente notación CIDR a IPs individuales, excluyendo network address y broadcast.
Tabla de Expansión:
| CIDR | Hosts Generados | Rango | IPs Totales |
|---|---|---|---|
192.168.1.10/32 |
1 | 192.168.1.10 | 1 |
192.168.1.0/30 |
2 | .1-.2 | 2 |
192.168.1.0/29 |
6 | .1-.6 | 6 |
192.168.1.0/28 |
14 | .1-.14 | 14 |
192.168.1.0/27 |
30 | .1-.30 | 30 |
192.168.1.0/26 |
62 | .1-.62 | 62 |
192.168.1.0/25 |
126 | .1-.126 | 126 |
192.168.1.0/24 |
254 | .1-.254 | 254 |
192.168.0.0/23 |
510 | 192.168.0.1-.254 + 192.168.1.1-.254 | 510 |
192.168.0.0/22 |
1,022 | 192.168.0-3.1-.254 | 1,022 |
10.0.0.0/16 |
65,534 | 10.0.0.1 - 10.0.255.254 | 65,534 |
172.16.0.0/12 |
1,048,574 | 172.16.0.1 - 172.31.255.254 | 1,048,574 |
Advertencias:
- CIDR >5000 hosts: muestra warning pero continúa
- CIDR muy grandes (>/16): considera dividir en subredes
Sin -ResolveHostnames:
- Solo coincidencia exacta de strings
- Si
excluded.txttieneserver.local, perohosts.txttiene192.168.1.50, NO se excluye
Con -ResolveHostnames:
- Resuelve hostnames a IPs usando DNS
- Si
server.local→192.168.1.50, ambas formas se excluyen correctamente
Ejemplo:
# hosts.txt
192.168.1.50
# excluded.txt
server.local # Resuelve a 192.168.1.50
# Sin resolución: 192.168.1.50 SE ESCANEA (no coincide string)
scanyx -HostFile hosts.txt -ExcludeFile excluded.txt -ScanType tcp-1000
# Con resolución: 192.168.1.50 NO SE ESCANEA (coincide IP)
scanyx -HostFile hosts.txt -ExcludeFile excluded.txt -ResolveHostnames -ScanType tcp-1000Advertencia:
- Puede ser lento para listas grandes (hace lookup DNS por cada hostname)
- Usa solo si necesitas matching de hostname ↔ IP
SCANYX detecta automáticamente conflictos entre listas:
Conflicto 1: Host en Excluded Y Sensitive
WARNING: CONFLICT: 192.168.1.10 is in both sensitive and excluded lists.
BEHAVIOR: Exclusion wins. Host will NOT be scanned.
Comportamiento: La exclusión gana, el host NO se escanea.
Solución: Revisar y corregir los archivos.
networks.txt (762 hosts tras expansión):
# Red principal
192.168.1.0/24 # 254 hosts
# Red secundaria
192.168.2.0/24 # 254 hosts
# Red DMZ
10.0.0.0/24 # 254 hosts
excluded.txt (19 hosts):
# Gateways
192.168.1.1
192.168.2.1
10.0.0.1
# Servidores críticos
192.168.1.10
192.168.1.20
# Rango de impresoras (14 hosts)
192.168.2.240/28
sensitive.txt (16 hosts):
# Servidores de producción
192.168.1.10
192.168.1.20
# Dispositivos de red (14 hosts)
192.168.2.0/28
Comando:
scanyx `
-HostFile networks.txt `
-SensitiveFile sensitive.txt `
-ExcludeFile excluded.txt `
-ScanType tcp-1000 `
-SensitiveTiming T2 `
-MaxConcurrent 10 `
-SessionName "corporate-audit-2025"Resultado del procesamiento:
- Total después de expansión: 762 hosts
- Excluidos: 19 hosts
- Hosts sensibles: 16 hosts → escaneo con
-T2 --script=default - Hosts normales: 727 hosts → escaneo con
-T4 --script=default,vuln - Total a escanear: 743 hosts
Salida esperada:
[INFO] Total hosts after CIDR expansion: 762
[INFO] Excluded hosts: 19
[INFO] Sensitive hosts: 16
[INFO] Normal hosts: 727
[INFO] Total hosts to scan: 743
[WARNING] CONFLICT: 192.168.1.10 is in both sensitive and excluded lists.
[WARNING] BEHAVIOR: Exclusion wins. Host will NOT be scanned.
nmap/ # OutputDir (configurable con -OutputDir)
├── .sessions/ # Sesiones (estado, logs)
│ ├── pentest-cliente-2025/
│ │ ├── scan-state.json # Estado de cada host
│ │ ├── scan.log # Log completo
│ │ ├── scan-errors.log # Solo errores
│ │ └── scan-results.json # Resultados estructurados
│ └── weekly-scan-2025-10-18/
│ └── ...
├── networks/ # Resultados de hosts desde CIDR
│ ├── 192.168.1.0-24/
│ │ ├── 192.168.1.10_tcp-1000.nmap # Resultado formato normal
│ │ ├── 192.168.1.10_tcp-1000.xml # XML parseable
│ │ ├── 192.168.1.10_tcp-1000.gnmap # Grep-friendly
│ │ ├── 192.168.1.10_tcp-1000.stdout # Salida estándar nmap
│ │ └── 192.168.1.10_tcp-1000.stderr # Errores nmap
│ └── 10.0.0.0-16/
│ └── ...
├── hosts/ # Resultados de hosts individuales
│ ├── 192.168.2.100/
│ │ └── ...
│ └── server.example.com/
│ └── ...
└── workflows/ # Resultados de workflows
└── full-discovery/
├── step-1-tcp-1000/
│ ├── networks/
│ └── hosts/
├── step-2-tcp-full/
└── step-3-udp-common/
[2025-10-18 14:30:00] [INFO] Scan started: 192.168.1.10 | tcp-1000
[2025-10-18 14:35:47] [SUCCESS] Scan completed: 192.168.1.10 | tcp-1000 | Duration: 5m 47s | Ports: 15
[2025-10-18 14:36:00] [INFO] Scan started: 192.168.1.11 | tcp-1000
[2025-10-18 14:41:00] [ERROR] Scan failed: 192.168.1.11 | tcp-1000 | Host timeout (60m exceeded)
[2025-10-18 14:42:00] [WARNING] Retrying: 192.168.1.11 | tcp-1000 | Attempt 2/3
Solo entradas [ERROR] y [WARNING] para troubleshooting rápido:
[2025-10-18 14:41:00] [ERROR] Scan failed: 192.168.1.11 | tcp-1000 | Host timeout (60m exceeded)
[2025-10-18 14:55:30] [ERROR] Scan failed: 192.168.1.15 | tcp-1000 | Host unreachable
[2025-10-18 15:10:15] [WARNING] CONFLICT: 192.168.1.99 is in both sensitive and excluded lists
Estado de cada host para reanudación:
{
"session_id": "pentest-cliente-2025",
"scan_type": "tcp-1000",
"workflow": null,
"started": "2025-10-18T14:30:00",
"hosts": {
"192.168.1.10": {
"status": "completed",
"attempts": 1,
"scan_file": "nmap/networks/192.168.1.0-24/192.168.1.10_tcp-1000.nmap",
"has_open_ports": true,
"open_ports_count": 15,
"last_scan": "2025-10-18T14:35:47",
"duration_seconds": 347,
"is_sensitive": false
},
"192.168.1.11": {
"status": "failed",
"attempts": 3,
"error": "Host timeout (60m exceeded)",
"last_scan": "2025-10-18T14:55:30",
"is_sensitive": false
},
"192.168.1.12": {
"status": "pending",
"attempts": 0,
"is_sensitive": true
}
},
"summary": {
"total": 200,
"completed": 150,
"failed": 30,
"pending": 20,
"alive": 140,
"dead": 10
}
}Resultados estructurados para post-procesamiento:
{
"scan_session": "pentest-cliente-2025",
"scan_type": "tcp-1000",
"started": "2025-10-18T14:30:00",
"completed": "2025-10-18T18:45:30",
"duration_total_seconds": 15330,
"scans": [
{
"host": "192.168.1.10",
"status": "completed",
"duration_seconds": 347,
"attempts": 1,
"has_open_ports": true,
"open_ports_count": 15,
"is_sensitive": false,
"scan_files": {
"nmap": "nmap/networks/192.168.1.0-24/192.168.1.10_tcp-1000.nmap",
"xml": "nmap/networks/192.168.1.0-24/192.168.1.10_tcp-1000.xml",
"gnmap": "nmap/networks/192.168.1.0-24/192.168.1.10_tcp-1000.gnmap"
}
}
]
}Para cada host escaneado, SCANYX genera 5 archivos:
| Archivo | Descripción | Uso |
|---|---|---|
.nmap |
Formato normal (legible humano) | Revisión manual |
.xml |
XML estructurado | Parsing automático, XNP, otras herramientas |
.gnmap |
Grepable | Scripts bash/PowerShell, búsquedas rápidas |
.stdout |
Salida estándar completa | Debugging, logs completos |
.stderr |
Errores de nmap | Troubleshooting |
Ejemplo:
192.168.1.10_tcp-1000.nmap # Lectura humana
192.168.1.10_tcp-1000.xml # Parsing automático
192.168.1.10_tcp-1000.gnmap # Scripts
192.168.1.10_tcp-1000.stdout # Debugging
192.168.1.10_tcp-1000.stderr # Errores
Modo interactivo paso a paso que guía la configuración completa del escaneo mediante 10 pasos secuenciales con validación automática.
Ideal para:
- Usuarios nuevos
- Configuraciones complejas
- Validar parámetros antes de ejecutar
- Aprender las opciones disponibles
scanyx -WizardPaso 1: Tipo de Escaneo
═══════════════════════════════════════════════════════════
SCANYX Wizard - Step 1/10: Scan Type
═══════════════════════════════════════════════════════════
Select scan type:
[1] Single Scan Profile (tcp-1000, tcp-full, etc.)
[2] Workflow (chain multiple profiles)
Your choice [1-2]:
Paso 2: Selección de Perfil/Workflow
═══════════════════════════════════════════════════════════
SCANYX Wizard - Step 2/10: Profile Selection
═══════════════════════════════════════════════════════════
Available scan profiles:
[1] tcp-100 - Top 100 TCP (very fast)
[2] tcp-1000 - Top 1000 TCP (fast, recommended)
[3] tcp-full - All 65535 TCP ports (slow)
[4] udp-common - Common UDP ports
[5] udp-1000 - Top 1000 UDP
[6] udp-full - All 65535 UDP ports (very slow)
Select profile [1-6]:
Paso 3: Hosts Input
═══════════════════════════════════════════════════════════
SCANYX Wizard - Step 3/10: Hosts Input
═══════════════════════════════════════════════════════════
How do you want to specify hosts?
[1] File (recommended for large lists)
[2] Direct input (comma-separated)
Your choice [1-2]:
Paso 4: Session Name
═══════════════════════════════════════════════════════════
SCANYX Wizard - Step 4/10: Session Name
═══════════════════════════════════════════════════════════
Enter session name (3-50 alphanumeric + hyphens/underscores)
Leave empty for auto-generated name
Session name:
Paso 5: Exclusions
═══════════════════════════════════════════════════════════
SCANYX Wizard - Step 5/10: Exclusions
═══════════════════════════════════════════════════════════
Do you want to exclude any hosts? [y/N]:
Paso 6: Sensitive Hosts
═══════════════════════════════════════════════════════════
SCANYX Wizard - Step 6/10: Sensitive Hosts
═══════════════════════════════════════════════════════════
Do you have sensitive hosts (production, critical)? [y/N]:
If yes:
Timing: [T0] Paranoid | [T1] Sneaky | [T2] Polite (default)
Scripts: [default] | [vuln] | [none] | [default+vuln]
Paso 7: Performance
═══════════════════════════════════════════════════════════
SCANYX Wizard - Step 7/10: Performance
═══════════════════════════════════════════════════════════
Max concurrent scans [1-50] (default: 5):
Max retries [0-10] (default: 1):
Retry delay in seconds [0-3600] (default: 60):
Paso 8: Output
═══════════════════════════════════════════════════════════
SCANYX Wizard - Step 8/10: Output Settings
═══════════════════════════════════════════════════════════
Output directory (default: nmap):
Overwrite mode:
[1] Ask (default)
[2] Skip existing
[3] Overwrite all
Enable verbose mode? [y/N]:
Paso 9: Advanced Options
═══════════════════════════════════════════════════════════
SCANYX Wizard - Step 9/10: Advanced Options
═══════════════════════════════════════════════════════════
Unprivileged mode (no admin required)? [y/N]:
Custom config file (default: nmap-profiles-workflows.json):
Paso 10: Summary & Confirmation
═══════════════════════════════════════════════════════════
SCANYX Wizard - Step 10/10: Summary
═══════════════════════════════════════════════════════════
Configuration Summary:
Scan Type : tcp-1000
Hosts : File (hosts.txt) - 254 hosts
Session Name : pentest-cliente-2025
Exclusions : 5 hosts
Sensitive : 10 hosts (T2, default scripts)
Max Concurrent : 10
Max Retries : 3
Output Dir : nmap/
Overwrite Mode : Skip
Verbose : Yes
Generated Command:
────────────────────────────────────────────────────────────
scanyx `
-HostFile "hosts.txt" `
-ExcludeFile "excluded.txt" `
-SensitiveFile "production.txt" `
-SensitiveTiming T2 `
-SensitiveScripts default `
-ScanType tcp-1000 `
-SessionName "pentest-cliente-2025" `
-MaxConcurrent 10 `
-MaxRetries 3 `
-OverwriteMode Skip `
-VerboseMode
────────────────────────────────────────────────────────────
Execute scan now? [Y/n]:
El wizard valida automáticamente:
- ✅ Archivos existen antes de usar
- ✅ Nombres de sesión válidos (regex)
- ✅ Rangos numéricos (1-50, 0-10, etc.)
- ✅ Valores de ValidateSet
- ✅ Perfiles/workflows existen en config
Ejemplo de validación:
Session name: sesión con espacios
❌ ERROR: Invalid session name. Use 3-50 alphanumeric + hyphens/underscores.
Session name: pentest-cliente-2025
✅ Valid session name
Problema: Quiero cancelar el escaneo actual y empezar de nuevo.
Solución:
# 1. Cancelar escaneo en ejecución
Ctrl+C # Limpieza automática de jobs
# 2. Reiniciar desde cero (ignora estado previo)
scanyx -HostFile hosts.txt -ScanType tcp-1000 -ForceProblema:
ERROR: Nmap failed: You requested a scan type which requires raw socket access
Causa: Los escaneos SYN (-sS) requieren privilegios de administrador.
Soluciones:
Opción 1: Ejecutar como Administrador
- Click derecho en PowerShell
- "Ejecutar como administrador"
- Volver a ejecutar scanyx
Opción 2: Modo Unprivileged (sin admin)
scanyx -HostFile hosts.txt -ScanType tcp-1000 -Unprivileged- Convierte automáticamente
-sSa-sT(TCP connect scan) - No requiere privilegios
- Ligeramente más lento y detectable
Problema: No veo archivos .nmap, .xml, .gnmap después del escaneo.
Diagnóstico:
# 1. Verificar permisos de escritura
Test-Path -Path ".\nmap" -PathType Container
# 2. Ejecutar en modo verbose para ver comandos nmap
scanyx -HostFile hosts.txt -ScanType tcp-1000 -VerboseMode
# 3. Revisar archivos stderr
Get-Content nmap/hosts/*/*.stderr
Get-Content nmap/networks/*/*.stderr
# 4. Verificar logs de errores
Get-Content nmap/.sessions/*/scan-errors.logPosibles causas:
- Permisos de escritura en directorio
- Nmap no genera salida (host filtrado, timeout)
- Ruta incorrecta a OutputDir
Problema:
WARNING: CONFLICT: 192.168.1.10 is in both sensitive and excluded lists.
BEHAVIOR: Exclusion wins. Host will NOT be scanned.
Explicación: El host aparece en ambas listas.
Comportamiento: La exclusión gana, el host NO se escanea.
Solución:
- Revisar
excluded.txtysensitive.txt - Eliminar el host de una de las listas
- Volver a ejecutar
Situaciones:
1. Windows sin Privilegios de Admin
scanyx -HostFile hosts.txt -ScanType tcp-1000 -Unprivileged2. Dispositivos de Red con Raw Sockets Deshabilitados
scanyx -HostFile hosts.txt -ScanType tcp-full -Unprivileged3. Entornos Restrictivos (VDI, Kiosks)
scanyx -Hosts "target.local" -ScanType tcp-1000 -UnprivilegedLimitaciones:
-
-sSse convierte automáticamente a-sT - TCP connect scan es más lento
- Más detectable (completa 3-way handshake)
- No funciona para scans que requieren raw packets (ACK scan, etc.)
Problema: Hosts conocidos como activos aparecen como "dead" (sin puertos).
Causas:
- Firewalls bloqueando puertos
- Timing muy agresivo (T4)
- Timeout muy corto
- Host lento en responder
Soluciones:
1. Usar -RetryDead con Timing Más Lento
# Escaneo original (rápido, T4)
scanyx -HostFile hosts.txt -ScanType tcp-1000
# Algunos hosts marcados como "dead"
# Reescanear "muertos" con timing lento
scanyx -HostFile hosts.txt -ScanType tcp-full -RetryDead
# Modifica manualmente el perfil a T2 en nmap-profiles-workflows.json2. Usar Hosts Sensibles
# Marcar hosts lentos como sensibles
scanyx `
-HostFile hosts.txt `
-SensitiveHosts "slow-host1","slow-host2" `
-SensitiveTiming T1 `
-ScanType tcp-10003. Aumentar Host Timeout
// Editar nmap-profiles-workflows.json
{
"profiles": {
"tcp-1000-slow": {
"command": "nmap -v -T2 -Pn -sS --script=default,vuln -A --host-timeout 120m --top-ports 1000"
}
}
}Problema: El escaneo tarda horas más de lo esperado.
Diagnóstico:
# Ver comandos nmap ejecutándose
scanyx -HostFile hosts.txt -ScanType tcp-1000 -VerboseMode
# Revisar progreso en tiempo real
Get-Content nmap/.sessions/*/scan.log -Tail 20 -WaitOptimizaciones:
1. Aumentar Concurrencia
# De 5 hosts concurrentes (default) a 20
scanyx -HostFile hosts.txt -ScanType tcp-1000 -MaxConcurrent 202. Usar Perfil Más Rápido
# tcp-100 en lugar de tcp-1000
scanyx -HostFile hosts.txt -ScanType tcp-1003. Reducir Timeout
// Editar nmap-profiles-workflows.json
"tcp-1000": {
"command": "nmap ... --host-timeout 30m" // De 60m a 30m
}4. Dividir Escaneo
# Dividir hosts.txt en 4 partes
scanyx -HostFile hosts-part1.txt -ScanType tcp-1000 -SessionName "scan-part1"
scanyx -HostFile hosts-part2.txt -ScanType tcp-1000 -SessionName "scan-part2"
scanyx -HostFile hosts-part3.txt -ScanType tcp-1000 -SessionName "scan-part3"
scanyx -HostFile hosts-part4.txt -ScanType tcp-1000 -SessionName "scan-part4"Problema:
ERROR: Scan profile 'tcp-custom' not found in configuration
Causa: El perfil no existe en nmap-profiles-workflows.json.
Solución:
# 1. Verificar perfiles disponibles
Get-Content nmap-profiles-workflows.json | ConvertFrom-Json | Select-Object -ExpandProperty profiles | Get-Member -MemberType NoteProperty
# 2. Agregar perfil personalizado
notepad nmap-profiles-workflows.json
# 3. Volver a ejecutar
scanyx -HostFile hosts.txt -ScanType tcp-custom