begin process at 2008 08 29 03:55:03
1 233 495 membres
36 nouveaux aujourd'hui
14 291 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SCANNER DE PORTS.


Information sur la source

Catégorie :Sécurité & cryptage Classé sous : scanner, port, ip, threads Niveau : Débutant Date de création : 20/11/2005 Date de mise à jour : 12/12/2005 18:02:13 Vu / téléchargé: 5 221 / 486

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

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

  • # -*- 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...")
# -*- 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...")
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

12 décembre 2005 18:02:14 :
Optimisation du code : chaque thread scanne 5 ports. Ajout d'un .zip
  • signaler à un administrateur
    Commentaire de sorcier0011 le 22/11/2005 20:35:50

    Bravo ! ca fonctionne vraiment bien !!

  • signaler à un administrateur
    Commentaire de bouceka le 12/12/2005 18:03:46

    Merci :p

  • signaler à un administrateur
    Commentaire de Blackbeard le 06/09/2006 01:10:13

    je pense pas qu'on va me repondre depuis le tps mais bon...

    quand je rentre mon ip ça fonctionne pas
    quand je rentre 192.168.1.1 ça fonctionne pas non-plus

    message d'erreur :

    [code]Entrer l'adresse ip: 192.168.1.1
    Entrer le port de debut: 1
    Entrer le port de fin: 10000
    Traceback (most recent call last):
      File "/home/Blackbeard/Desktop/pythonfrance_source_34723.zip_FILES/Scanner_de_ports.py", line 64, in ?
        lstth[i].start()
      File "/usr/lib/python2.4/threading.py", line 416, in start
        _start_new_thread(self.__bootstrap, ())
    thread.error: can't start new thread[/code]


    ça ne fonctionne que lorsque je rentre "localhost" et la il me donne les ports ouverts sur mon reseau local biensur.
    lorsqu'on fait "Y" pour enregistrer le resultat il est en registré ou ? je ne le trouve pas

    ps : j'ai rajouté #!/usr/bin/python au debut car je suis sous linux.

  • signaler à un administrateur
    Commentaire de Blackbeard le 06/09/2006 01:17:58

    je corrige : j'ai trouver ou etait le rapport enregistré.

Ajouter un commentaire

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS