Escáner de Puertos en Bash
Scripts especializados para detectar puertos abiertos en hosts individuales y redes completas. Una herramienta educativa desarrollada en Bash puro, sin dependencias externas.
¿Qué es el Escáner de Puertos?
Objetivo
Identificar puertos abiertos en sistemas remotos para auditorías de seguridad y administración de redes.
Tecnología
Desarrollado completamente en Bash usando /dev/tcp para conexiones TCP, sin dependencias externas.
Ética
Herramienta educativa que debe usarse únicamente con autorización explícita del propietario del sistema.
Características Principales
port_scan.sh
Escanea todos los puertos (1-65535) de un host específico con control de concurrencia optimizado.
- ✅ Escaneo completo de puertos
- ✅ Control de procesos paralelos
- ✅ Validación de entrada
- ✅ Manejo de interrupciones
host_scan.sh
Escanea puertos comunes en toda una red local (ej: 192.168.1.0/24) de forma eficiente.
- ✅ Escaneo de red completa
- ✅ Puertos más comunes
- ✅ Resultados organizados
- ✅ Optimización de tiempo
Demostración Interactiva
Implementación Técnica
#!/bin/bash
# Control de interrupciones
function ctrl_c() {
echo -e "\n\n[!] Saliendo...\n"
tput cnorm
exit 1
}
trap ctrl_c SIGINT
# Validación de entrada
if [ -z "$1" ]; then
echo -e "\n[!] Uso: $0 \nEjemplo: $0 192.168.1.1\n"
tput cnorm
exit 1
fi
# Validación de IP o dominio
if ! [[ $1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]] && \
! [[ $1 =~ ^[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ ]]; then
echo -e "\n[!] Error: Introduce una IP válida o dominio\n"
exit 1
fi
host=$1
tput civis
# Función para verificar puerto
function checkPort() {
timeout 1 bash -c "exec 3<> /dev/tcp/$1/$2" 2>/dev/null
if [ $? -eq 0 ]; then
echo "[+] Host $1 - Puerto $2 (ABIERTO)"
fi
exec 3<&-
exec 3>&-
}
# Array de puertos
declare -a ports=( $(seq 1 65535) )
# Control de concurrencia
max_jobs=100
job_count=0
echo -e "\n[*] Escaneando host: $host\n"
for port in "${ports[@]}"; do
checkPort "$host" "$port" &
((job_count++))
if [ $job_count -ge $max_jobs ]; then
wait -n
((job_count--))
fi
done
wait
tput cnorm
📊 Ejemplos de Resultados
🎯 Escaneo Individual - Servidor Web
ExitosoVelocidad Promedio
~1000 puertos/minuto
Precisión
99.9% de detección
Eficiencia
Bajo uso de CPU/RAM
Guía de Uso
📡 Escaneo de Host Individual
Preparación
chmod +x port_scan.sh
Ejecución
./port_scan.sh 192.168.1.1
Resultado
[+] Host 192.168.1.1 - Puerto 22 (ABIERTO)
[+] Host 192.168.1.1 - Puerto 80 (ABIERTO)
🔒 Consideraciones de Seguridad y Ética
Uso Responsable
Este escáner de puertos es una herramienta educativa que debe utilizarse exclusivamente en sistemas y redes donde tengas autorización explícita. El escaneo no autorizado puede ser ilegal y violar términos de servicio.
📖 Mejores Prácticas
Documentación
Documenta siempre tus escaneos y mantén registros de autorización
Horarios
Realiza escaneos en horarios que no afecten la productividad
Scope
Define claramente el alcance antes de comenzar cualquier escaneo
✅ Usos Permitidos
- Auditorías de seguridad autorizadas
- Pruebas en tu propia red
- Laboratorios de aprendizaje
- Entornos de desarrollo
❌ Usos Prohibidos
- Escaneo sin autorización
- Reconocimiento malicioso
- Violación de políticas
- Actividades ilegales
Detalles Técnicos
🔧 Tecnologías Utilizadas
📊 Rendimiento
- Concurrencia: Hasta 100 procesos paralelos
- Timeout: 1 segundo por puerto
- Rango: 1-65535 puertos
- Memoria: Uso mínimo de recursos
🎯 Funcionalidades
- Validación de entrada robusta
- Manejo de interrupciones (Ctrl+C)
- Control de cursor de terminal
- Detección de IP y dominios
🚀 ¿Te ha gustado este proyecto?
Conecta conmigo y explora más proyectos de ciberseguridad