2015-08-12 3 views
0

J'ai suivi quelques tutoriels sur l'analyse de port avec python (ce qui utilise le filetage) et peu importe ce que je fais, il dit que tous les ports sont fermés. Et je sais que cela ne peut pas être parce que le port 80 (web) est ouvert pour ce site et un outil en ligne que j'ai trouvé dit que 22 et 80 sont ouverts. Que devrais-je faire?Python balayage du port tout fermé

import socket 
import threading 
from queue import Queue 
import time 

print_lock = threading.Lock() 

target = 'www.pythonprogramming.net' 

def portscan(port): 
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    try: 
     con = s.connect(server, port) 
     with print_lock: 
      print("port",port,"is open") 
     con.close() 
    except: 
     pass 
     with print_lock: 
      print("port",port,"is closed") 

def threader(): 
    while True: 
     worker = q.get() 
     portscan(worker) 
     q.task_done() 

q = Queue() 

for i in range(30): 
    t = threading.Thread(target = threader) 
    t.deamon = True 
    t.start() 

for worker in range(1,101): 
    q.put(worker) 

q.join() 
+0

Dans la fonction portscan, quelle est la valeur de 'server'? Con = s.connect (serveur, port) – barny

Répondre

2

Vous devez attraper exception et lire:

except Exception as e: 
    with print_lock: 
     print("port",port,"is closed due to " + str(e)) 

Avec elle, vous pouvez trouver l'erreur. Votre erreur est "serveur" n'est pas défini ".

et méthode connect accepte tuple, vous devez donc faire

con = s.connect((target, port))

Et ça marche!