CÓMO CREAR TU PROPIO SHODAN: SOCKET [PARTE III]

Ayer hablamos sobre cómo crear un escaner de puertos y banner grabbing con Nmap en Python. Al final de la entrada comentaba que no era la forma más adecuada ya que a nosotros nos gusta tener el mayor control de la aplicación y por ello hoy quiero enseñaros como hacerlo con Sockets.

Mencionar que si estas interesado empezar a programar con Python: QuantiKa14 desde 2013 oferta un curso online por solo 110 € donde podrás aprender hacer todo esto y mucho más.

Los sockets son 2 aplicaciones interactuando entre sí a través de un protocolo para intercambiar datos. Los Sockets como tal los hay de varios tipos, pero básicamente hablamos de:

  • Sockets de flujo: Se caracteriza por utilizar el tipo de sockets SOCK_STREAM que usa como base el protocolo TCP (Transmission Control Protocol). En teoría asegura que los mensajes enviados a destino lleguen en el mismo orden en el que fueron enviados.
  • Sockets de datagrama: Este usa el tipo de sockets SOCK_DGRAM y es especial para trabajar con el protocolo UDP (User Datagram Protocol), a diferencia del anterior los mensajes pueden llegar en distinto orden en el que originalmente fueron enviados.

Bien ahora voy a explicar paso a paso el código. Lo primero que veremos es como empezamos a trabajar con Sockets (import socket) :

socket-1

  • socket.socket()“: Creamos un objeto socket para el servidor. Podemos dejarlo sin parámetros pero si quieren pueden pasarlos de la manera “s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)”.
  • El método “settimeout()“: muy importante porque será el encargado de esperar la respuesta del servidor el tiempo que le indicamos. Mi experiencia es que si lo bajamos de “1.0” que corresponden con 1 segundo empieza a fallar y al servidor no le dará tiempo de mandarnos nada.
  • Nos conectamos al servidor con el método “connect(())“. Tiene dos parámetros. El primero es la IP del servidor y el segundo el puerto de conexión.

socket-2

  • La variable banner recogerá el mensaje que nos manda el servidor al conectar en el puerto que le hayamos indicado. La función debemos indicarle cuantos bytes queremos obtener.
  • porc es una variable que almacenará un dato informativo sobre el avance del escaner a través de lo que devuelve la función porcentaje.
  • s.close() nos permite cerrar la conexión.

socket-3

Con esto tendremos una amplia idea de que hace el script que ahora comparto en las siguientes imágenes. Cuando termine la saga de cómo crear tu Shodan de casa subiré todo a la cuenta de Github de QK14 para mayor comodidad.

socket-4

socket-5NOVITA-FOOTER

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *