Voici un scanner de ports, l'interêt de cette source es que le programme est orienté objet et que le scanner utilise les Threads.
Source / Exemple :
# -*- coding: cp1252 -*-
## Scanner de ports
## By Bouceka
## Importation des modules
import socket,threading
## Définition de la classe Thread
class Thread_Scan(threading.Thread):
"Definition d'une classe Thread"
## Constructeur
def __init__(self,h,p):
threading.Thread.__init__(self)
self.host = h
self.port = p
## Méthode run du Thread
def run(self):
global report
for rang in range(self.port,self.port+5):
self.mysocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
self.mysocket.connect((self.host,rang))
except:
self.mysocket.close()
else:
report[rang] = "ouvert."
self.mysocket.close()
## Fonction qui affiche les ports ouvert
def Affiche_port(report):
lstreport = report.items()
for port in lstreport:
print "Port %s ouvert"%(port[0])
## Fonction qui enregistre le résultat
def Enregistrer(report):
lstreport = report.items()
ofi = open("Scan_report.txt","a")
ofi.write("*****\-Bouceka Report-/*****\n\n")
if(len(lstreport) == 0):
ofi.write("Aucun ports ouvert.")
else:
for rport in lstreport:
ofi.write("|- Port %s ouvert."%(rport[0]))
ofi.close()
## Programme principale
if __name__ == "__main__":
## Création des variables
report,i,lstth = {},0,[]
## Menu
print "****\-Scanner de ports by Bouceka-/****\n"
Host = raw_input("Entrer l'adresse ip: ")
Portd = input("Entrer le port de debut: ")
Portf = input("Entrer le port de fin: ")
## Création des Threads scannant 5 ports chacun
for port in range(Portd,Portf+1,5):
lstth.append(Thread_Scan(Host,port))
lstth[i].start()
i += 1
## Attente fin des Threads
for c in lstth:
c.join()
## Affiche port ouvert
if(len(report) == 0):
print "Aucun ports ouvert."
else:
Affiche_port(report)
## Demande d'enregistrement du resultat
choix = raw_input("Voulez vous enregistrer le resultat: (O)ui | (N)on: ")
if(choix.upper() == "O"):
Enregistrer(report)
print "Resultat enregistre avec succes !"
Temp = raw_input("Appuyez sur une touche pour continuer...")
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.