2017-10-10 66 views
0

我的端口扫描器正在扫描(我假设)端口。但是,即使在活动端口(如端口80)仍然显示该端口已关闭。我究竟做错了什么?为什么我的Port Scanner不能在Python中扫描端口?

代码:

#!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") 

结果:https://gyazo.com/da7d1eebfe4c3ffe4082fafd519eced2

我关掉我的防火墙和的Malwarebytes,但它仍然无法正常工作。

+0

变量s列表功能? –

回答

0

找到解决方案。是不是在你的代码段定义,我面临了,问题是,IP-ADRESS用在我需要的时候将其转换为字符串,以便使用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

如何发布:) – Console

+0

在这里,你去.... –