Commentçamarche.net
CodeS-SourceS
Rechercher un code, un tuto, une réponse

Scanner de ports.

3/5 (4 avis)

Vue 10 762 fois - Téléchargée 686 fois

Description

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...")

Codes Sources

A voir également

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.