martes, 24 de marzo de 2015

Juankeando con la Pitón (7) - Haciendo nuestro escáner de puertos

Séptima entrada de la serie "Juankeando con la Pitón", esta vez centrada en un script para analizar puertos (TCP). El funcionamiento es simple, pasada (con argparse) una IP junto con el rango de puertos a escanear se realizará una prueba de conexión a cada puerto y en función de la respuesta es posible saber si está o no abierto. Además para agilizar la tarea se ha utilizado la librería multiprocessing de Python  (2.7.x).

El código está disponible en el GitHub de 0verl0ad:
https://github.com/0verl0ad/pyJuanker/blob/master/scripts/portScan.py



Empezando por la parte de multiprocessing, declaramos un máximo de 50 procesos paralelos en la línea 44 y, a continuación, lanzamos la función scan cuyos parámetros son el rango de puertos a escanear.

La función scan abre un socket a cada puerto de la ip destino con un timeout de 1 segundo (este tiempo se propria reducir y no debería haber problemas pero influye la conexión por eso he optado en dejarlo a 1 segundo) y espera la respuesta. Si es 0 el puerto estará abierto, mientras que si es un valor distinto no (o el script no es capaz de confirmar que lo esté).

Con todo esto, conforme vaya obteniendo cada proceso el estado del puerto irá mostrándose por pantalla.



¿Cosas que se podrían mejorar?
  • Que también soporte UDP como protocolo, lo cual es tan simple como cambiar un parámetro en la declaración del socket.
  • Añadir el numero de procesos paralelos como parámetro que basta con añadir otra opcion a argparse.
  • Identificar los servicios asociados a los puertos abiertos. Esto se podría implementar creando un diccionario con el puerto y su servicio asociado a partir de la información del fichero /etc/services (en el caso de GNU/Linux) con lo que sería útil para los puertos por defecto aunque pudiera llevar a falsos positivos en la identificación de servicios.
Si algún día me aburro igual las implemento y publicaré una versión actualizada del post, nos leemos en breve ;)



5 0verl0ad Labs: Juankeando con la Pitón (7) - Haciendo nuestro escáner de puertos Séptima entrada de la serie "Juankeando con la Pitón", esta vez centrada en un script para analizar puertos (TCP). El funcionamien...

No hay comentarios:

< >