Saltar al contenido
Lectura13 minPreview

Qué es Python y por qué importa en ciberseguridad

Este es el tipo de programa que escribirá en el módulo 2:

from collections import Counter
with open("datos/auth.log", encoding="utf-8") as f:
    fallos = [l.split(" from ")[1].split()[0] for l in f if "Failed password" in l]
print(Counter(fallos).most_common(1))
[('203.0.113.45', 60)]

Lee el registro, toma las líneas de fallo, extrae la IP y dice cuál se repite más. No hace falta entenderlo hoy; en la lección 8 verá por qué ese split es frágil y qué lo reemplaza.

Qué es Python

Python es un lenguaje de programación interpretado, de propósito general, diseñado para que el código se lea con facilidad.

Un lenguaje de programación es una forma precisa de dar instrucciones: una coma de más cambia el resultado. Interpretado significa que no hay paso de compilación: usted guarda un archivo .py y el intérprete, el programa python3, lo ejecuta. Eso permite probar ideas en segundos, con una contracara: un nombre mal escrito en la línea 40 no da error hasta que la ejecución llega ahí, y si esa línea solo corre con cierto dato, puede pasar semanas sin fallar.

De propósito general quiere decir que sirve para automatizar, analizar datos, hacer sitios web o entrenar modelos. Y legible: marca los bloques con la sangría en lugar de llaves, y sus palabras reservadas parecen inglés (for, if, not, return). La sangría cobra su precio: cuatro espacios en una línea y un tabulador en la siguiente dan TabError, aunque en pantalla se vean iguales.

Breve historia

AñoHito
1989Guido van Rossum, del instituto CWI en Países Bajos, empieza Python como proyecto personal en las vacaciones de diciembre. El nombre viene de Monty Python, no de la serpiente.
1991Publica la versión 0.9.0, ya con funciones, excepciones, listas y diccionarios.
2000Python 2.0 trae las comprensiones de lista.
2001Nace la Python Software Foundation, que custodia el lenguaje.
2008Python 3.0 rehace el manejo del texto Unicode y deja de ser compatible con Python 2.
2020Python 2 deja de recibir actualizaciones el 1 de enero.

Esa ruptura todavía aparece: un script de foro con print "hola", sin paréntesis, es Python 2 y en Python 3 da SyntaxError.

Por qué importa en ciberseguridad

Buena parte del trabajo defensivo es repetitivo: revisar miles de líneas de registros, cruzar IP con fuentes de inteligencia, calcular hashes, armar el reporte del turno. Por ejemplo, en un SOC de Heredia, el jefe de turno pide las 300 IP de un incidente cruzadas con la lista de bloqueo. A mano es una tarde; con un script, un minuto que se repite cada semana.

Lo usa el analista para enriquecer indicadores, quien responde a incidentes para procesar registros que no caben en Excel, el ingeniero de detección para probar reglas contra datos históricos y el administrador para revisar decenas de servidores.

Lo que falla de verdad no es la sintaxis. Es el script que funciona con tres líneas de ejemplo y falla en silencio con el archivo real, porque una línea dice invalid user y el campo se corrió. Por eso el curso insiste en probar contra archivos completos y contar lo que no coincide.

Dónde se usa

  • Herramientas de seguridad: Volatility 3, sigma-cli, los analizadores de Cortex y PyMISP.
  • Nube y automatización: la línea de comandos de AWS y Ansible están escritas en Python.
  • Linux: Ubuntu y Debian lo traen instalado y utilidades como unattended-upgrades dependen de él. Por eso Ubuntu 24.04 rechaza pip install fuera de un entorno virtual, como verá en la lección siguiente.
  • Datos e inteligencia artificial: Jupyter, pandas y casi todas las librerías de aprendizaje automático.

Conceptos clave

ConceptoQué significa
IntérpreteEl programa python3 que lee y ejecuta su código
ScriptUn archivo .py que se ejecuta de principio a fin
MóduloUn archivo de Python que otro programa importa con import
Librería estándarLos módulos que vienen con Python, como re, json o hashlib
Paquete externoCódigo de terceros que se instala con pip desde PyPI, como requests
Entorno virtualUna carpeta con su propio intérprete y paquetes, aislada del sistema
FunciónUn bloque de código con nombre que recibe datos y devuelve un resultado
ExcepciónUn error en tiempo de ejecución, como ValueError

Cómo leer una ficha

Cada función nueva tendrá una ficha con su firma, su nombre y sus parámetros:

open(ruta, mode="r", encoding=None)
NotaciónSignificado
Parámetro sin valorObligatorio, como ruta
nombre=valorOpcional, con ese valor por defecto
*valoresAcepta varios valores sueltos
objeto.metodo()Una función que pertenece a un objeto, como "texto".upper()

En sus herramientas de línea de comandos la sintaxis se lee como en Linux básico: corchetes para lo opcional y MAYÚSCULAS para lo que usted reemplaza.

Cómo pedir ayuda

El intérprete trae su propio manual:

>>> help(len)
Help on built-in function len in module builtins:
 
len(obj, /)
    Return the number of items in a container.
 
>>> dir("texto")[-5:]
['swapcase', 'title', 'translate', 'upper', 'zfill']

help(objeto) muestra la documentación (se sale con q) y dir(objeto) lista lo que puede hacer con él. python3 --help resume las opciones del intérprete, y docs.python.org tiene la documentación oficial, con el tutorial en español. Cuando un error no le diga nada, busque tal cual su última línea, la del tipo de excepción.