🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónLeer un script de parseo
5 tareas · 35 min · Principiante
Un ingeniero de detección no siempre escribe el código que lo rodea, pero sí lo hereda: un script de veinte líneas que convierte un registro en campos y que alimenta a las reglas. En la Cooperativa Altiplano Verde lees uno que procesa el registro de una puerta de enlace VPN. No lo ejecutas: lo lees como se lee una regla, preguntándote qué entra, qué sale y qué pasa con lo que no encaja. Aprendes a seguir una expresión regular campo por campo y a contar lo que el script se calla.
Objetivo de la sala
Un ingeniero de detección no siempre escribe el código que lo rodea, pero sí lo hereda: un script de veinte líneas que convierte un registro en campos y que alimenta a las reglas. En la Cooperativa Altiplano Verde lees uno que procesa el registro de una puerta de enlace VPN. No lo ejecutas: lo lees como se lee una regla, preguntándote qué entra, qué sale y qué pasa con lo que no encaja. Aprendes a seguir una expresión regular campo por campo y a contar lo que el script se calla.Un script de parseo hace tres cosas: lee una línea de texto, la compara con un patrón y devuelve un diccionario con campos con nombre. Las reglas posteriores no ven nunca la línea original; solo ven lo que el script entregó. Por eso leer el script importa tanto como leer la regla: lo que él descarta no existe para la detección.
La pregunta que conviene hacerse siempre es la de las tres salidas posibles de una función de parseo: devuelve datos, lanza un error o devuelve «nada». Cada una tiene consecuencias distintas para quien detecta. Un error se nota; un «nada» que nadie cuenta, no.
Abre /scripts/parsea_vpn.py y lee las dos funciones: una procesa una línea y la otra recorre el archivo.
Responde para continuar
En `parsea_vpn.py`, ¿qué pasa con una línea que no encaja en el patrón?
Una expresión regular se lee de izquierda a derecha, un trozo cada vez. En el patrón del script, cada paréntesis con nombre es un campo: (?P<usuario>\S+) toma una secuencia de caracteres que no sean espacios y la guarda como usuario. Las palabras fijas, como sesion, deben aparecer tal cual. Y el signo $ del final obliga a que, después del último campo, la línea termine.
El detalle que más sorprende al leer es una alternativa escrita así: ok|fallo. La expresión distingue mayúsculas de minúsculas salvo que se le indique lo contrario. El patrón no dice «cualquier valor de resultado»; dice «estas dos palabras exactas».
Abre /scripts/muestra_vpn.log y compara cada línea con el patrón. Cuenta cuántas de las doce no encajan.
Responde para continuar
Escribe cuántas de las doce líneas de la muestra no encajan en el patrón del script.
Ver pista de ayuda
Compara cada línea con los campos del patrón, uno tras otro, y fíjate en los valores y en las palabras fijas.
Entre las líneas que no encajan hay una de especial: es un inicio de sesión fallido, justo el evento que una regla de fuerza bruta necesita. El script la descarta no porque esté mal formada, sino porque el patrón es más estricto que el registro. Cuando un parser es más estricto que su fuente, lo que se pierde suele ser lo más interesante.
Busca esa línea en la muestra y fíjate en cómo está escrito el valor del campo resultado.
Responde para continuar
Escribe el valor de `resultado` tal como aparece en la línea que el patrón rechaza por su escritura.
Ver pista de ayuda
Hay una sola línea con `resultado` distinto de las dos palabras que acepta el patrón; compara su escritura con la del patrón.
Saber cuántas líneas se pierden es el primer paso; saber cuándo, el segundo. Si el registro empezó a cambiar de formato a cierta hora, la hora de la primera línea descartada es la pista para preguntar al equipo de la fuente qué cambió y cuándo.
Recorre la muestra de arriba abajo y anota la hora, tal como está escrita en el registro, de la primera línea que el patrón no acepta. Escribe solo horas, minutos y segundos.
Responde para continuar
Escribe la hora (HH:MM:SS) de la primera línea de la muestra que el script descarta.
Ver pista de ayuda
Las horas del registro llevan fecha y desplazamiento; copia solo la parte de horas, minutos y segundos.
Un parser que descarta en silencio produce un resultado limpio y falso: la regla no salta porque el dato nunca le llegó. La corrección no es relajar el patrón hasta que acepte cualquier cosa, porque entonces entrarían líneas con campos que no significan lo que parece. Tampoco es detener todo el programa por una línea rara.
Lo que se espera es que el script sea honesto sobre lo que no pudo leer: que lo cuente y lo diga al terminar, con ejemplos, para que alguien decida si el patrón o la fuente tienen que cambiar.
Responde para continuar
¿Cuál es la mejora más sensata para `parsea_vpn.py` tras lo que viste en la muestra?
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.