[001]Hacking ético con Python: Utilización de sockets TCP y UDP

Imagén de portada

Bienvenidos todos! En Security Hack Labs tenemos el agrado de presentar una serie de artículos que tienen como objetivo introducirnos al hacking ético utilizando Python como nuestro fiel aliado para el desarrollo de herramientas y scripts que nos serán útiles al momento de realizar prácticas de hacking.

Esta serie va orientada a personas que recién empiezan en el mundo del hacking, agradecería mucho sus sugerencias y/o comentarios para la mejora de los artículos

¿Por qué Python?

Según TIOBE Python se encuentra entre los 5 lenguajes de programación más utilizados a nivel mundial. Además de su popularidad he elegido Python por su fácil implementación ya que con pocas líneas de código podemos realizar programas bastante versátiles. En lo personal considero que aún soy principiante en el mundo de Python, así que los comentarios serán bienvenidos.

Sin más que decir vamos al grano y.... Empecemos con el hacking.

En esta primera entrada les presentare 2 programas, cliente TCP y cliente UDP, son de suma importancia ya que son los protocolos encargados del transporte de la información en la red. Para capítulos posteriores de esta serie nos basaremos en estos scripts para realizar pruebas y nuevas herramientas.

El primer programa que realizaremos es un cliente TCP, como bien sabemos el protocolo TCP necesita establecer una conexión entre los dispositivos para poder iniciar el proceso de comunicación.

  • Cliente TCP:

Este pequeño script realiza la conexión por medio del protocolo TCP a un puerto especifico de un host, en nuestro caso realizaremos la conexión a la web de Security Hack Labs por medio del puerto 80, normalmente en este puerto los servidores HTTP "escuchan" las peticiones de los clientes(nosotros), y realizaremos una petición GET del protocolo HTTP.

import socket

target_host = "https://securityhacklabs.net"
target_port = 80

#Creamos un objeto tipo socket
#AF_INET indica que utilizaremos el estandar IPv4 dirección IP o hostname
#SOCK_STREAM indica que sera un cliente del protocolo TCP
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#Conexion al cliente
client.connect((target_host,target_port))

#Realizamos una peticion, en este caso una peticion GET del protocolo HTTP
client.send("GET / HTTP/1.1\r\nHost: securityhacklabs.net\r\n\r\n")
#Recibimos el resultado de la peticion
response = client.recv(4096)
print response

El segundo programa es un cliente UDP, el protocolo UDP no esta orientado a conexión simplemente envía y recibe datos a un host por medio de un puerto específico.

  • Cliente UDP
import socket

target_host = "127.0.0.1"
target_port = 43

#Creamos el objeto tipo socket
#AF_INET nos indica que manejaremos el estandar IPv4
#SOCK_DGRAM indica que utilizaremos datagramas propios del protocolo UDP
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

#Enviando
client.sendto("AAABBBCCC", (target_host, target_port))

#Recibiendo
data, addr = client.recvfrom(4096)

print data

Como podemos observar en la codificación de estos 2 pequeños programas no utilizamos sentencias de validación de errores, esto para apresurar la programación pero cualquiera es libre de mejorar estos scripts.

Síguenos en FacebookTwitterunete a nuestro chat en Discord y no olvides compartirnos en las redes sociales. También puede hacernos una donación o comprar nuestros servicios.

Acerca del autor

Estudiante de ingeniería electrónica. Quiero dedicarme a la seguridad informática y a las redes IoT. .
La mejor forma de aprender cosas nuevas es transmitiendo el conocimiento que ya se ha adquirido.