Saltearse al contenido

Python para hacking

Python es el lenguaje por defecto de la seguridad ofensiva: la mayoría de herramientas (impacket, sqlmap, scapy, muchos exploits) están escritas en él, y cuando una tool no hace exactamente lo que necesitas, un script de Python lo resuelve. Peticiones HTTP, sockets, parseo, automatización de exploits, PoCs: todo cabe en pocas líneas. Es el eje del curso de Python Ofensivo.

# variables y tipos
host = "10.0.0.1"; port = 445; activo = True
lista = [22, 80, 443]; d = {"user": "admin", "pass": "x"}
# control de flujo
for p in lista:
if p == 443: print("https")
while activo: break
# funciones
def escanear(host, port):
return f"{host}:{port}"
import requests
r = requests.get("https://target/api", params={"id": 1},
headers={"User-Agent": "x"}, timeout=5, verify=False)
print(r.status_code, len(r.text))
r = requests.post("https://target/login", data={"u":"a","p":"b"},
cookies={"session":"..."})
# seguir redirecciones, sesiones persistentes:
s = requests.Session(); s.get(...)

Con esto automatizas fuzzing, fuerza bruta de login, IDOR por ID, etc.

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(2)
if s.connect_ex(("10.0.0.1", 22)) == 0: # 0 = abierto
print("22 open")
print(s.recv(1024)) # banner grabbing
s.close()

Base de un escáner de puertos casero y de interactuar con servicios TCP crudos.

# leer una wordlist / lista de objetivos
with open("users.txt") as f:
users = [l.strip() for l in f]
# regex para extraer datos (ver fund-regex)
import re
emails = re.findall(r"[\w.]+@[\w.]+", texto)
# argumentos de línea de comandos
import argparse
p = argparse.ArgumentParser(); p.add_argument("--host"); args = p.parse_args()
requests / httpx # HTTP
scapy # crear/manipular paquetes a bajo nivel
impacket # protocolos Windows/AD (SMB, Kerberos, MSRPC)
pwntools # explotación binaria / CTF
beautifulsoup4 # parsear HTML (scraping)
paramiko # SSH
python3 -m venv venv && source venv/bin/activate # entorno aislado
pip install requests # dependencias

Usa venv por proyecto para no romper dependencias; -I al ejecutar scripts que lean ficheros no confiables.

Cuando el exploit público no encaja, lo adaptas en Python. Cuando necesitas repetir un ataque con lógica (condiciones, estado, parseo de respuestas), Bash se queda corto y Python brilla. Y para leer/entender herramientas ofensivas —casi todas en Python— tienes que saber Python.

  • Manejo tipos, listas, diccionarios, bucles y funciones
  • Hago peticiones GET/POST con requests y manejo sesiones/cookies
  • Abro sockets TCP para escanear puertos o hacer banner grabbing
  • Leo ficheros (wordlists) y extraigo datos con regex
  • Parseo argumentos con argparse
  • Conozco requests, scapy, impacket, pwntools y para qué sirven
  • Uso venv y entiendo por qué aislar dependencias