Tabla de contenido:

Netcat en Python: 6 pasos
Netcat en Python: 6 pasos

Video: Netcat en Python: 6 pasos

Video: Netcat en Python: 6 pasos
Video: Netcat - Режим сканирование портов 2024, Mes de julio
Anonim
Netcat en Python
Netcat en Python

¿Qué es netcat? La página del manual de netcat dice lo siguiente: "la utilidad nc (o netcat) se usa para casi cualquier cosa que involucre sockets de dominio TCP, UDP o UNIX. Puede abrir conexiones TCP, enviar paquetes UDP, escuchar en Puertos TCP y UDP, escanean puertos y manejan tanto IPv4 como IPv6. A diferencia de telnet (1), los scripts de nc son agradables y separan los mensajes de error en errores estándar en lugar de enviarlos a la salida estándar, como hace telnet (1) con algunos"

En esencia, netcat le permite conectarse a otros servidores utilizando el protocolo TCP o UDP. TCP significa Protocolo de control de transmisión y está orientado a la conexión. UDP son las siglas de Universal Datagram Protocol y no tiene conexión. TCP se usa comúnmente para aplicaciones de Internet, mientras que UDP se usa para transmisión de medios o VPN.

Paso 1: ¿Cómo empezamos?

¿Cómo empezamos?
¿Cómo empezamos?

Arriba es cómo se llama netcat. Puede ver que hay dos argumentos al final llamados "destino" y "puerto". El destino se refiere a un nombre de host o dirección IP del servidor al que intentamos conectarnos, mientras que el puerto se refiere al puerto del servidor al que intentamos conectarnos.

Paso 2: Comencemos

Vamos a empezar
Vamos a empezar

Arriba hay un código Python inicial. Como puede ver, queremos procesar los argumentos del programa de manera similar a como lo hace la utilidad real. El nombre de host será el primer argumento después del nombre del ejecutable, mientras que el puerto será el segundo argumento después del nombre del ejecutable en la línea de comandos.

Paso 3: crear una conexión

Crear una conexión
Crear una conexión

Creemos una función netcat que podamos usar. Lo que estamos haciendo básicamente aquí es crear un socket y conectarnos al servidor usando los parámetros dados. Para el comando netcat, los parámetros actuales son el nombre de host y el puerto del servidor al que estamos intentando conectarnos. El socket contiene los parámetros "socket. AF_INET" y "socket. SOCK_STREAM" porque usamos por defecto una conexión TCP para este tutorial.

Paso 4: enviemos algo de contenido

Vamos a enviar algo de contenido
Vamos a enviar algo de contenido

Ampliamos nuestra función netcat para tomar un tercer parámetro, "contenido". Aquí hay mucho contenido, así que desglosémoslo por número de línea.

Línea 14-16: enviamos todo el contenido a través del socket, esperamos un poco y luego cerramos el socket a cualquier dato saliente para que el socket sepa que no hay más datos en camino.

Línea 18-26: creamos un búfer para almacenar la respuesta del servidor, y mientras el socket está recibiendo datos, agregamos hasta 1024 bytes de datos al resultado siempre que haya datos para leer.

Línea 28-29: queremos que esta conexión netcat sea una conexión única, por lo que declaramos la conexión cerrada y luego cerramos la conexión.

Línea 31: esta es una solicitud HTTP estándar. Si ejecuta el código con los argumentos de la línea de comandos "google.com" y "80", verá una respuesta HTTP adecuada.

Paso 5: Tengamos una conexión abierta

Tengamos una conexión abierta
Tengamos una conexión abierta

El código anterior (que se encuentra debajo del código de la sección anterior) simplemente nos permite ejecutar varios comandos netcat a través de una conexión pseudo-abierta. (En realidad, cada vez que ejecuta un comando, abre y luego cierra una nueva conexión TCP, por lo que no emula realmente el comportamiento de netcat, simplemente lo hacemos con fines de aprendizaje). Analicemos esto línea por línea también:

Línea 31: Queremos leer los comandos de forma indefinida para mantener la "interactividad".

Línea 32: Este es nuestro búfer que almacenará el contenido de nuestra solicitud.

Línea 36-45: Leeremos en el búfer hasta que leamos una línea vacía

Línea 48: simplemente llamamos a nuestra función netcat con el nombre de host, el puerto y el contenido recién creado (que está codificado correctamente)

Línea 50: si el contenido de nuestro búfer alguna vez contiene "Connection: Close" (que indica que queremos cerrar la conexión), simplemente salimos del bucle.

Paso 6: Conclusión

Al final de este tutorial, debería tener una implementación de netcat mínima que funcione. Dejaré que el usuario implemente funciones como:

1. compatible con otros protocolos

2. arreglar el código para no cerrar la conexión cada vez

3. agregar banderas que netcat ya tiene para modificar el comportamiento

Recomendado: