jueves, 13 de septiembre de 2012

Creando o noso escáner de portos en python.

Boas a todxs,

Fai unhas semanas falei dos sockets, como exemplo empregamos un cliente e un servidor que se comunicaban entre si. Pois ben, fai un tempo atopeille outra utilidade, facer un scaner de portos, a idea ocurríraseme ao estar nun ordenador que non era meu, no que evidentemente non ía instalar software (nmap), non tiñamos acceso á configuración do router e precisabamos saber que portos estaban abertos ou fechados para mirar de configurar a mula :P. Pois ben, sempre que estamos nunha situación así podemos ir probando de un en un, ou de algo do que se falaba nas "3 leis do sysadmin", automatizar tarefas e facermonos perezosos, é dicer, un script que probe porto a porto cal está aberto e ao final informe do resultado.

En resumo, facer un script que intente conectarse a unha IP e un determinado Porto, se se consegue conectar o Porto estará aberto e se non é que está fechado, unha vez comprobado que sega a comprobar un a un nun rango de portos distintos para unha determinada IP. (Non sei se me expliquei moi ben), así que bon, aí vai o código e agardo o vexades útil e de interese aínda que sexa de aprendizaxe para os que vos introducides en python.

#!/usr/bin/env python

#PortScanner
#Author: hacklego
#twitter:@hacklego
#comunity: hackliza.blogspot.com.es
#twitter: @hackliza

import socket, sys #importamos a libreria socket e sys, esta ultima principalmente para os argumentos

#se os argumentos introducidos son distintos de 4 explicamos o uso do script
if len(sys.argv) !=4:
 print 'Usage: portscanner.py (IP to be scanned) (start port) (end port)'
 exit() 

#asignamos a cada variable un argumento, ip, porto de inicio, porto final a scanear.
ip = sys.argv[1]
start = int(sys.argv[2])
end = int(sys.argv[3])

#Imprimimos por pantalla a mensaxe de que ip e rango de portos estamos a escanear e de seguido definimos a conexion e para cada porto no rango de portos intentamos conectarnos. Finalmente saca en pantalla que portos estan abertos.
print '\n'
print 'Scanning IP %s from port %s till port %s\n' % (ip, start, end)
connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
for port in range(start, end+1):
 try:
  connection.connect((ip, port))
  print "Port: %s open" % p
 except: pass
connection.close()
print '\n'
print 'Portscanner done to Hackliza!'


Saúde!

No hay comentarios:

Publicar un comentario