0% encontró este documento útil (0 votos)
8 vistas7 páginas

PYTHON Course For CyberSec

El documento presenta un curso de Python para programadores de JavaScript, cubriendo desde la sintaxis básica hasta conceptos avanzados como redes y criptografía. Incluye ejemplos prácticos y ejercicios sobre variables, estructuras de datos, escaneo de puertos, web scraping y verificación de integridad de archivos. Además, se menciona el uso de APIs para la búsqueda de subdominios, ofreciendo un enfoque práctico para la automatización y el análisis de seguridad.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
8 vistas7 páginas

PYTHON Course For CyberSec

El documento presenta un curso de Python para programadores de JavaScript, cubriendo desde la sintaxis básica hasta conceptos avanzados como redes y criptografía. Incluye ejemplos prácticos y ejercicios sobre variables, estructuras de datos, escaneo de puertos, web scraping y verificación de integridad de archivos. Además, se menciona el uso de APIs para la búsqueda de subdominios, ofreciendo un enfoque práctico para la automatización y el análisis de seguridad.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 7

Módulo 1: Python Básico para Programadores JavaScript

Lección 1: Sintaxis Básica (Diferencias Clave con JS)

Teoría:

●​ Variables: En Python no se usa var, let o const. Se asigna directamente:


●​ python
●​ Copy

nombre = "Alice" # Tipo str (string)


edad = 25 # Tipo int

●​ es_hacker = True # Tipo bool


●​ Condicionales: Similar a JS, pero sin {} y usando : y sangría:
●​ python
●​ Copy

if edad >= 18:


print("Mayor de edad")
elif edad > 12:
print("Adolescente")
else:

●​ print("Niño")
●​ Bucles: for es más parecido al for...of de JS:
●​ python
●​ Copy

# Iterar sobre una lista


ips = ["192.168.1.1", "10.0.0.1", "172.16.0.1"]
for ip in ips:

●​ print(f"Escaneando IP: {ip}") # f-strings (como template literals


en JS)

Ejercicio 1:

Reescribe este código JavaScript en Python:

javascript

Copy

// JS
function esSegura(password) {
if (password.length >= 8 && password.includes("!")) {
return true;
} else {
return false;
}
}
console.log(esSegura("pass!123"));

<details> <summary>**Solución (¡Intenta primero!)**</summary>


python

Copy

def es_segura(password):
if len(password) >= 8 and "!" in password:
return True
else:
return False

print(es_segura("pass!123")) # Output: True

</details>

Lección 2: Estructuras de Datos Clave

Teoría:

●​ Listas: Como los arrays en JS. Ejemplo:


●​ python
●​ Copy

logs = ["login failed", "access granted", "brute force detected"]

●​ logs.append("new log") # Método para añadir


●​ Diccionarios: Como los objetos en JS, pero con sintaxis {} y claves entre
comillas:
●​ python
●​ Copy

usuario = {
"nombre": "Alice",
"ip": "192.168.1.1",
"intentos_fallidos": 3
}

●​ print(usuario["ip"]) # Acceder a un valor


Ejercicio 2:

Crea un script que filtre direcciones IP privadas de una lista.​

Pista: Las IPs privadas empiezan con 10., 192.168., o 172.16-31..

python

Copy

ips = ["8.8.8.8", "10.0.0.1", "172.16.0.1", "192.168.1.1", "45.33.32.156"]


# Filtra las IPs privadas aquí

<details> <summary>**Solución**</summary>
python

Copy

ips_privadas = []
for ip in ips:
if ip.startswith("10.") or ip.startswith("192.168.") or
ip.startswith("172.") and 16 <= int(ip.split(".")[1]) <= 31:
ips_privadas.append(ip)
print(ips_privadas) # Output: ['10.0.0.1', '172.16.0.1', '192.168.1.1']

</details>

Módulo 2: Python para Redes y Automatización

Lección 1: Escáner de Puertos con socket

Teoría:

La librería socket permite comunicación de red de bajo nivel.​

Ejemplo de escáner de puertos TCP:

python

Copy

import socket

def escanear_puerto(ip, puerto):


try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(0.5)
s.connect((ip, puerto))
print(f"Puerto {puerto} está ABIERTO")
s.close()
except:
pass # Si no se conecta, el puerto está cerrado

# Escanear puertos 80 (HTTP) y 443 (HTTPS)


escanear_puerto("192.168.1.1", 80)
escanear_puerto("192.168.1.1", 443)

Ejercicio 3:

Modifica el script para escanear los puertos del 1 al 1024 y guardar los resultados

en un diccionario:

python

Copy

resultados = {"abiertos": [], "cerrados": []}

<details> <summary>**Solución**</summary>
python

Copy

def escanear_rango(ip, inicio, fin):


for puerto in range(inicio, fin+1):
try:
s = socket.socket()
s.settimeout(0.5)
s.connect((ip, puerto))
resultados["abiertos"].append(puerto)
s.close()
except:
resultados["cerrados"].append(puerto)

escanear_rango("127.0.0.1", 1, 1024)
print(resultados)

</details>

Lección 2: Web Scraping para OSINT con requests y BeautifulSoup

Teoría:

●​ requests: Hacer peticiones HTTP como fetch en JS.


●​ BeautifulSoup: Analizar HTML/XML.

Ejemplo: Extraer todos los enlaces de una página:

python

Copy

import requests
from bs4 import BeautifulSoup

url = "https://ejemplo.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

for link in soup.find_all("a"):


print(link.get("href"))

Ejercicio 4:

Crea un script que extraiga todos los correos electrónicos de una página web.​

Pista: Usa expresiones regulares (re module) para buscar patrones como

[email protected].

<details> <summary>**Solución**</summary>
python

Copy

import re

# Supongamos que response.text contiene el HTML


html = """
Contacto: [email protected], [email protected]
"""
patron = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
correos = re.findall(patron, html)
print(correos) # Output: ['[email protected]', '[email protected]']

</details>

Módulo 3: Criptografía con hashlib

Lección: Hashes y Verificación de Integridad


Teoría:

Los hashes (como SHA-256) son fundamentales para verificar integridad de

archivos.​

Ejemplo: Calcular el hash de un archivo:

python

Copy

import hashlib

def calcular_hash(archivo, algoritmo="sha256"):


hasher = hashlib.new(algoritmo)
with open(archivo, "rb") as f:
while chunk := f.read(4096):
hasher.update(chunk)
return hasher.hexdigest()

print(calcular_hash("documento.txt"))

Ejercicio 5:

Crea un script que compare dos hashes para detectar modificaciones:

python

Copy

hash_original = "a591a6d40bf420404a011733..."
hash_actual = calcular_hash("documento.txt")
# Compara y muestra "Archivo modificado" o "Integridad verificada"

<details> <summary>**Solución**</summary>
python

Copy

if hash_actual == hash_original:
print("Integridad verificada")
else:
print("¡Archivo modificado!")

</details>

Apéndice OSINT: Búsqueda de Subdominios


Ejemplo Práctico:​

Usar la API de SecurityTrails para encontrar subdominios (necesitas API key

gratuita):

python

Copy

import requests

api_key = "TU_API_KEY"
dominio = "google.com"

url = f"https://api.securitytrails.com/v1/domain/{dominio}/subdomains"
headers = {"APIKEY": api_key}
response = requests.get(url, headers=headers)
subdominios = response.json().get("subdomains", [])

print(f"Subdominios de {dominio}:")
for sub in subdominios:
print(f"{sub}.{dominio}")

Siguientes Pasos:

¿Quieres profundizar en algún módulo en particular? Por ejemplo, podemos hacer un

proyecto de escaneo de vulnerabilidades web combinando requests y expresiones

regulares para detectar XSS o SQLi. ¡Tú decides! 🔍

También podría gustarte