Crear una herramienta de seguridad revela decisiones ocultas en escáneres maduros: entradas, tiempos de espera, concurrencia, campos de protocolo, errores y filtros. Este curso práctico usa Python para desarrollar utilidades de reconocimiento y encadenar sus resultados.
Crearás un escáner TCP multihilo, construirás paquetes ICMP/TCP con Scapy y desarrollarás un enumerador web concurrente. El reto final escanea puertos web locales, prueba rutas de una lista en cada servicio abierto y escribe un informe combinado.
Lo que aprenderás
- Crear una CLI con
argparsepara objetivo y rango de puertos - Detectar puertos TCP con
socket.connect_ex, tiempos de espera y excepciones - Comparar escaneo secuencial con concurrencia por hilos
- Apilar capas IP, ICMP y TCP en Scapy e inspeccionar campos
- Enviar una sonda ICMP con
sr1y manejar respuesta o timeout - Leer candidatos de una lista y hacer solicitudes HTTP concurrentes
- Filtrar endpoints por códigos HTTP y gestionar errores
- Encadenar escaneo y descubrimiento en una herramienta local con informe
A quién va dirigido este curso
Este curso intermedio está dirigido a estudiantes de ciberseguridad, ingenieros de red y desarrolladores Python que quieran entender escáneres y enumeradores. Enseña implementación y pruebas seguras, no sustituye Nmap o ffuf.
Requisitos previos: Funciones Python, módulos, colecciones, excepciones y archivos. Se esperan conocimientos básicos de puertos TCP, códigos HTTP, cabeceras IP/ICMP/TCP y terminal Linux.
Entorno de aprendizaje: Ubuntu 22.04 con Python 3, Scapy, requests, servidores web locales y listas preparadas. Escaneo y fuzzing usan 127.0.0.1; el laboratorio de paquetes envía un ICMP Echo a 8.8.8.8, sujeto a la política de red.
Preguntas frecuentes
¿Puedo dirigir las herramientas a cualquier host?
Solo a sistemas propios o con autorización explícita. Los escaneos usan 127.0.0.1; Scapy envía un único ICMP Echo estándar a Google Public DNS para practicar respuestas.
¿Qué ocurre si Scapy no recibe respuesta?
Es normal si ICMP o los paquetes raw están bloqueados. El script usa un timeout de dos segundos y maneja la ausencia; el objetivo es construir e interpretar, no garantizar Internet.
¿Son herramientas listas para producción?
No. Demuestran mecanismos. Herramientas maduras añaden concurrencia limitada, rate limiting, detección de servicios, reintentos, respuestas wildcard, TLS, validación, salida determinista y pruebas.
¿“Fuzzer” significa enviar payloads malformados?
No. Enumera rutas desde una lista mediante GET normales y códigos HTTP. No muta protocolos, inyecta payloads ni prueba corrupción de memoria.



