Python para Ciberseguridad
Objetivo
Usar Python para automatizar tareas simples de seguridad.
Python no te hace buen analista por si solo. Te vuelve mas eficiente si lo usas para repetir menos trabajo manual, procesar evidencia, validar datos y comunicar resultados reproducibles.
Mapa Mental
entrada -> validacion -> procesamiento -> resumen -> conclusion -> limites
Antes de escribir codigo pregunta:
- que dato entra;
- que formato tiene;
- que errores pueden ocurrir;
- que resultado necesito;
- como voy a documentarlo;
- que no debo exponer.
Casos de Uso
- Leer logs.
- Contar eventos.
- Calcular hashes.
- Leer JSON y CSV.
- Consultar APIs.
- Comunicar resultados.
Buenas Practicas
- No pongas secretos en el codigo.
- Maneja errores esperados.
- No modifiques evidencia original.
- Escribe salidas claras.
- Usa nombres entendibles.
- Documenta como ejecutar el script.
- Valida datos antes de confiar en ellos.
- Guarda reportes en formatos simples como Markdown o CSV.
Conceptos Base
- Variables.
- Listas.
- Diccionarios.
- Condiciones.
- Loops.
- Funciones.
- Manejo de archivos.
- Manejo de errores.
Estructura de Script Util
1. Leer argumentos. 2. Validar entradas. 3. Procesar datos. 4. Generar resumen. 5. Escribir salida clara. 6. Devolver codigo de salida claro.
Ejemplo: Leer un Archivo
from pathlib import Path path = Path("ejemplo.log") for line in path.read_text().splitlines(): if "failed" in line.lower(): print(line)
Ejemplo: Argumentos
import argparse from pathlib import Path parser = argparse.ArgumentParser(description="Cuenta eventos en un log") parser.add_argument("logfile", help="Ruta del archivo de log") parser.add_argument("--word", default="failed", help="Palabra a buscar") args = parser.parse_args() path = Path(args.logfile) if not path.exists(): raise SystemExit(f"No existe el archivo: {path}") count = 0 for line in path.read_text().splitlines(): if args.word.lower() in line.lower(): count += 1 print(f"Coincidencias: {count}")
Ejemplo: Hash SHA256
from hashlib import sha256 from pathlib import Path path = Path("archivo.txt") digest = sha256(path.read_bytes()).hexdigest() print(digest)
Ejemplo de Salida Legible
from pathlib import Path total = 12 fallos = 5 report = f"""# Resumen de Log ## Resultado - Total de eventos: {total} - Fallos: {fallos} """ Path("resumen.txt").write_text(report)
Manejo de Errores
Errores esperados:
- archivo no existe;
- permisos insuficientes;
- formato incorrecto;
- campo faltante;
- API no responde;
- JSON invalido.
No ignores errores. Conviertelos en mensajes utiles.
Seguridad al Programar
Evita:
- imprimir tokens;
- subir archivos sensibles;
- ejecutar comandos con input no validado;
- sobrescribir evidencia;
- mezclar datos reales con pruebas;
- guardar passwords en scripts.
Ejemplo de Automatizacion
Un script de ejemplo puede:
- Leer un archivo de texto.
- Contar lineas.
- Buscar una palabra.
- Generar un resumen.
Para hacerlo mas robusto conviene considerar:
- Aceptar el nombre del archivo como argumento.
- Manejar errores si el archivo no existe.
- Guardar resultado en un formato legible.
Ejemplo de Parser de Log
Un parser de log puede leer eventos como estos:
2026-06-23 user=admin src_ip=203.0.113.10 result=failed 2026-06-23 user=admin src_ip=203.0.113.10 result=success
El resultado esperado deberia resumir:
- total de lineas;
- total de
failed; - total de
success; - usuarios vistos;
- IPs vistas;
- resumen legible.
Ejemplo de resultado
Un resumen de parser de logs debe explicar:
- objetivo;
- comando usado;
- salida;
- errores encontrados;
- explicacion del codigo;
- mejora futura.
Errores Comunes
- Escribir scripts que solo funcionan en tu maquina.
- No manejar archivos inexistentes.
- No documentar uso.
- No validar formato.
- Mezclar credenciales con codigo.
- No explicar resultados.
Criterio de Dominio
Puedes avanzar cuando puedas:
- Leer archivos.
- Usar diccionarios.
- Contar eventos.
- Manejar errores simples.
- Explicar tu script linea por linea.
- Generar un reporte reproducible sin exponer secretos.
En esta página
- Objetivo
- Mapa Mental
- Casos de Uso
- Buenas Practicas
- Conceptos Base
- Estructura de Script Util
- Ejemplo: Leer un Archivo
- Ejemplo: Argumentos
- Ejemplo: Hash SHA256
- Ejemplo de Salida Legible
- Resultado
- Manejo de Errores
- Seguridad al Programar
- Ejemplo de Automatizacion
- Ejemplo de Parser de Log
- Ejemplo de resultado
- Errores Comunes
- Criterio de Dominio