Introducción
Willow Workshop necesita la lista de inscripción de CLAY-OPEN, pero su cliente aún apunta a un puerto antiguo cerrado. El entorno también contiene un servicio de referencia útil y un archivo que debe seguir disponible. Encuentra el servicio actual, reconecta el cliente y guarda la lista actual completa.
Usarás Nmap para separar un puerto abierto, un protocolo identificado y el servicio de negocio que necesitas. Basta con conocer el terminal y las rutas; aquí se explican las opciones. Todas las personas y los registros son sintéticos. Son servicios HTTP reales en un solo contenedor de formación, no máquinas separadas. Usa Terminal durante todo el laboratorio. Escanea únicamente 127.0.0.2, puertos TCP 8100-8199, sin cambiar servicios ni ajustes de la plataforma.
Leer una lista que funciona
En este paso, verás una consulta de negocio correcta antes de investigar la conexión rota. Empieza en Terminal. cd cambia el directorio de esta shell. Las rutas relativas siguientes parten de ese directorio; repite el comando si abres otro terminal:
cd /home/labex/project/workshop
El programa preparado workshop-client es un pequeño cliente HTTP. ./ selecciona el programa del directorio actual. Lee una URL base de un archivo de destino, solicita /roster.tsv, muestra los registros y guarda la respuesta exacta. No busca otros servidores ni repara su configuración. --endpoint elige el archivo de destino y --save el archivo de salida. Lee la dirección de referencia con cat, que muestra un archivo de texto:
cat reference.txt
Espera http://127.0.0.2:8120. La dirección identifica el destino; el puerto tras los dos puntos selecciona un servicio en escucha. HTTP es el protocolo de petición/respuesta del cliente.
./workshop-client --endpoint reference.txt --save reference-roster.tsv
Busca Session: ORIENTATION, dos registros y Saved 2 records to reference-roster.tsv. El archivo usa TSV: una cabecera y registros con columnas separadas por tabulaciones. session_id identifica la sesión; las otras columnas describen al participante y el artículo. Es una referencia funcional, no el resultado CLAY-OPEN.
Sin --endpoint, el cliente lee endpoint.txt. Inspecciónalo:
cat endpoint.txt
Prueba ahora la configuración actual:
./workshop-client --save roster.tsv
Este comando debe fallar con Client error y una explicación de conexión rechazada. El puerto antiguo no tiene un proceso escuchando. Es un fallo de conexión, no una denegación HTTP ni una lista mal formada. El fallo no guarda una lista. Conserva reference.txt, el programa y todos los servicios. Puedes editar endpoint.txt y crear archivos de evidencia o descarga en este directorio.
Descubrir los puertos permitidos
En este paso, buscarás puertos candidatos sin adivinar sus aplicaciones. Sigue en Terminal, dentro de /home/labex/project/workshop. Un puerto TCP open aceptó una conexión, pero eso no determina qué sesión sirve.
El escaneo predeterminado de Nmap comprueba un conjunto habitual de puertos, no todos. La autorización incluye el rango completo 8100-8199. -sT selecciona un escaneo TCP connect, que aquí no necesita privilegios de paquetes sin procesar. -n omite las consultas inversas de nombres. -p establece el rango y -oX guarda XML estructurado, mientras Nmap sigue mostrando un resultado legible. XML mantiene juntos objetivo, protocolo, puerto y estado para su revisión.
nmap -sT -n -p 8100-8199 -oX ports.xml 127.0.0.2
Debes encontrar abiertos los puertos TCP 8120, 8142 y 8187; los demás del rango están cerrados. La columna SERVICE puede mostrar un nombre convencional o unknown. Sin identificación activa, solo es una pista de la base de datos de puertos, no una prueba de la aplicación. No elijas un servicio solo porque su puerto está abierto o su nombre habitual resulta familiar.
Un error al escribir el objetivo o el rango puede inducir a confusión. Repite el comando corregido para sustituir ports.xml. Si después falta un archivo, usa pwd para mostrar el directorio actual y vuelve con el cd del paso 1. No amplíes el escaneo a direcciones o puertos de la plataforma.
Identificar los servicios candidatos
En este paso, identificarás los candidatos y compararás sus descripciones de negocio. Sigue en Terminal. -sV envía sondas de aplicación; --version-light prueba un conjunto menor para limitar trabajo innecesario. La falta de una versión del producto no demuestra una avería.
El motor de scripts de Nmap, NSE, permite realizar una petición de aplicación enfocada. Lee la ayuda del único script necesario:
nmap --script-help http-title
http-title obtiene el título de una página HTML. La información de entrega identifica estos tres candidatos como servicios HTTP del taller. El prefijo + ejecuta explícitamente ese script aunque la base de datos antigua no reconozca un puerto o una cabecera inusual. Es adecuado dentro de este alcance HTTP conocido, no para forzar scripts arbitrarios contra servicios ajenos. --script-args pasa un argumento con nombre; http-title.url=/about solicita la página descriptiva en lugar de la ruta predeterminada.
nmap -sT -n -sV --version-light --script=+http-title --script-args=http-title.url=/about -p 8120,8142,8187 -oX services.xml 127.0.0.2
Espera a Nmap done. Compara las líneas http-title: Orientation es la referencia, Clay Archive la sesión antigua y Clay Open Studio el candidato para CLAY-OPEN. El destino actual usa el puerto 8187. La columna VERSION puede variar y puede aparecer unknown aunque el script HTTP explícito funcione. Lee su respuesta real en vez de inventar una versión.
Los títulos reducen las opciones, pero no prueban la identidad ni la integridad de la lista. Lo confirmarás con el cliente. No edites títulos o registros del servidor para hacer pasar un servicio incorrecto por el actual. Si interrumpiste el escaneo, repítelo y espera a que termine: un XML incompleto no es evidencia utilizable.
Reconectar y guardar la lista actual
En este paso, convertirás el hallazgo en una configuración funcional. Sigue en Terminal. El archivo de destino contiene una URL base HTTP, sin /about ni /roster.tsv; el cliente añade su ruta.
printf escribe texto formateado. Aquí '%s\n' significa una cadena seguida de un salto de línea. Las comillas simples mantienen literal el contenido. > sustituye el archivo indicado por la salida, así que usa únicamente el destino editable endpoint.txt:
printf '%s\n' 'http://127.0.0.2:8187' > endpoint.txt
cat endpoint.txt
Consulta el servicio configurado y guarda su respuesta original completa:
./workshop-client --save roster.tsv
Espera Session: CLAY-OPEN, tres participantes y Saved 3 records to roster.tsv. Revisa el archivo realmente guardado:
cat roster.tsv
Tras la cabecera deben aparecer W01/Ana/Clay kit, W02/Sam/Glaze kit y W03/Lee/Clay kit, todos de CLAY-OPEN. Un archivo histórico puede devolver HTTP 200 y una lista válida, pero seguir siendo un resultado de negocio incorrecto. Si obtuviste otra sesión, corrige el destino y vuelve a ejecutar el cliente. Una URL base mal formada genera un Client error explicativo; sustituye esa URL en lugar de modificar el programa.
Por último, vuelve a leer la referencia para comprobar que el trabajo útil existente sigue disponible:
./workshop-client --endpoint reference.txt --save reference-roster.tsv
Esta consulta debe seguir devolviendo ORIENTATION. La lista actual permanece en roster.tsv. El archivo histórico también conserva su utilidad original. No hace falta reiniciar servidores, reparar su configuración ni eliminar servicios.
Resumen
Descubriste los puertos TCP permitidos, reuniste evidencia activa de servicios y HTTP, y reconectaste un cliente real a la sesión correcta. La lista completa, el destino correcto y los servicios de referencia y archivo conservados demuestran el resultado. Un puerto abierto, nombre familiar, versión de producto o HTTP 200 por sí solos no lo demostrarían.



