Portscan multithread

Moderator: Mod

Portscan multithread

Postby kmkz » Fri Feb 29, 2008 6:12 pm

Yop!
Voici un scanner de port multi-threads en python.
Il indique si le port est : ouvert,fermé ou le timeout ( défini a 3 par défaut mais modifiable au lancement).
Il vous donne également les proto ou service tournant sur les port ouvert .
A vous de joué ;)
[code:1:965a904d64]#!/usr/bin/python
# -*- coding: iso8859-1 -*-

__codeur__ = "/* → kmkz -- A.N.T --*/"
__version__ = "1.0\n"
__usage_presentation__ = """---Usage : python portscan.py hote_ou_IP [timeout]
~timeout par défaut = 3 secondes
-> PORTSCAN est un scanner de ports "multi-threads" scannant une plage de ports connus.\n\n
######################################################################
### ~~ This Tool has been coded by : /* → kmkz -- A.N.T */ ###
######################################################################\n\n
####################### PortScan est un code "Open Source" ########################
___________________________________________________________________________________
*** _ The A.N.T Homepage here : http://azertynackers.free.fr/\n"""
import threading #module pour "threads"
import socket
import errno
import sys
import string #autres modules utilisés..

port_list=[21,22,23,25,42,53,69,79,80,110,111,113,119,135,137,138,139,161,389,443,445,513,554,1080,1433,3306,4899,5001,6000,6667,8080,10000] #listes des ports utilisés
opened=[]

class Scanner(threading.Thread): # Classe "Scanner"

def __init__(self,ip,port,timeout=2):#on implémente le premier thread
threading.Thread.__init__(self)
self.port=port
self.ip=ip
self.timeout=timeout

def run(self): #thread lancé par "run"
global coded
self.s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # socket
self.s.settimeout(self.timeout)
coded=self.s.connect_ex((ip,self.port))
#------------------------------------------------------------------
# liste des conditions sur les états des ports scannés
if coded == 0:
self.s.shutdown(socket.SHUT_RDWR)
self.s.close()
opened.append(self.port)
print ">> → Le port",self.port,"est ouvert\n "
else:
if errno.errorcode[coded]=="ECONNREFUSED":

print "→ Le port",self.port,"est fermé !\n"
else:
if errno.errorcode[coded]=="EHOSTUNREACH":
print "→ Le port",self.port,":!! Hote INTROUVABLE !!"
else:
print "→ Port",self.port,": = Timeout..."
#--------------------------------------------------------------------------
def get_coded(self): # fonction "get_code"
global coded
return coded # renvoi la valeur de "code"


if __name__ == "__main__":
print sys.argv[0],__version__
if len(sys.argv) >= 2:
ip=sys.argv[1]
ip2=["","",""]
timeout=3
try:
ip2=socket.gethostbyaddr(ip)
except socket.gaierror:
print ip,": Hote Inconnu !!"
sys.exit() #on créé la soket par "gethostbyaddr" et en cas d'erreur on stoppe le programme en affichant "hote inconnu"
except socket.herror:
pass
if len(sys.argv) >=3:
try:
timeout=string.atoi(sys.argv[2])
except ValueError:
timeout=3
if ip2[0]=="":
ip2[0]=ip
print "---> Lancement de Scanport sur l'hote :",ip2[0],ip2[2]
print "--------------------------------"
print "-------------please wait...-------------------\n"
threadlist=[]
for p in port_list:
scan=Scanner(ip,p,timeout)
scan.start() #thread "scan" lancé
threadlist.append(scan)
for scan in threadlist:
scan.join()
print "\n+++ Les Ports ouverts sont : "
print "--------------"
opened.sort()
for p in opened:
try:
print p,":",socket.getservbyport(p)
except socket.error:
print p
else:
print __usage_presentation__ # sinon on revient a la présentation du code
#------------------------------------------------/* END */ ---------------------------------------------------#[/code:1:965a904d64]
User avatar
kmkz
Projets
 
Posts: 120
Joined: Wed Feb 06, 2008 1:25 pm
Location: Carcassonne, Toulouse

Return to Python

Who is online

Users browsing this forum: No registered users and 0 guests

cron