2017-10-10 1 views
0

My Port Scanner analyse (je suppose) les ports. Cependant, même avec les ports actifs (tels que le port 80), il indique toujours que le port est fermé. Qu'est-ce que je fais mal?Pourquoi mon analyseur de port n'analyse-t-il pas les ports en Python?

code:

#!usr/bin/env python 
import subprocess 
import ipaddress 
import socket 


# Value to scan the network 192.168.2.0 till 192.68.2.14 
net_addr = '192.168.2.0/28' 

# Variables for the port numbers 
portstart = 70 
portend = 81 

# Resolve hostname 
host = socket.gethostname() 

# Creates the network 
ip_net = ipaddress.ip_network(net_addr) 

# Get all hosts on the network 
all_hosts = list(ip_net.hosts()) 

# Configure subprocess to hide the console window 
info = subprocess.STARTUPINFO() 
info.dwFlags |= subprocess.STARTF_USESHOWWINDOW 
info.wShowWindow = subprocess.SW_HIDE 

# Loop where the IP-address is being pinged. 
for i in range(len(all_hosts)): 
    output = subprocess.Popen(['ping', '-n', '1', '-w', '500', str(all_hosts[i])], stdout=subprocess.PIPE, 
           startupinfo=info).communicate()[0] 

    if "Destination host unreachable" in output.decode('utf-8'): 
     print(str(all_hosts[i]), "is Offline") 
    elif "Request timed out" in output.decode('utf-8'): 
     print(str(all_hosts[i]), "is Offline") 
    else: 
     print(str(all_hosts[i]), "is ONLINE!") 
     print ("The hostname is:", host) 
     for portnum in range (portstart, portend): 
      try: 
       s.connect(all_hosts,portnum) 
       print("Port", portnum, "is OPEN!") 
       s.close() 

      except: 
       print("Port", portnum, "is closed") 

Résultat: https://gyazo.com/da7d1eebfe4c3ffe4082fafd519eced2

J'éteins mon pare-feu et Malwarebytes, mais il ne fonctionne toujours pas.

+0

s est pas définie dans votre extrait ? –

Répondre

0

Trouvé la solution. Le problème que je faisais face était que la adresse IP utilisait une fonction de liste dans laquelle je en avais besoin pour le convertir en une chaîne afin d'utiliser la variable s.connect_ex

#!usr/bin/env python 
import subprocess 
import ipaddress 
from socket import * 


# Value to scan the network 192.168.2.0 till 192.68.2.14 
net_addr = '192.168.2.0/28' 

# Variables for the port numbers 
portstart = 79 
portend = 140 

# Resolve hostname 
host = gethostname() 

# Creates the network 
ip_net = ipaddress.ip_network(net_addr) 

# Get all hosts in the network 
all_hosts = list(ip_net.hosts()) 

# Configure subprocess to hide the console window 
info = subprocess.STARTUPINFO() 
info.dwFlags |= subprocess.STARTF_USESHOWWINDOW 
info.wShowWindow = subprocess.SW_HIDE 

# Loop where the IP-address is being pinged. 
for i in range(len(all_hosts)): 
    output = subprocess.Popen(['ping', '-n', '1', '-w', '500', str(all_hosts[i])], stdout=subprocess.PIPE, 
           startupinfo=info).communicate()[0] 

    if "Destination host unreachable" in output.decode('utf-8'): 
     print(str(all_hosts[i]), "is Offline") 

    elif "Request timed out" in output.decode('utf-8'): 
     print(str(all_hosts[i]), "is Offline") 

    else: 
     print(str(all_hosts[i]), "is ONLINE!") 
     print ("The hostname of", all_hosts[i], "is:", host) 
     print ("Starting scan on host: ", host, "(", all_hosts[i], ")") 

# Loop where it scans ports within a range. 
     for portnum in range (portstart, portend): 
       s = socket(AF_INET, SOCK_STREAM) 

       result = s.connect_ex((str(all_hosts[i]), portnum)) 

       if (result == 0): 
        print ("Port", portnum, "is OPEN!") 
        s.close() 

       else: 
        print("Port", portnum, "is closed") 
+0

Que diriez-vous de poster :) – Console

+0

Ici vous allez .... –