Python端口扫描我做对了吗?

问题描述:

所以我正在制作一个python程序,目前为止我所学习的是用户输入两个ips代表要扫描的ips的开始和/或范围,而不是将所需的ip保存在文本文件中。 这里是我想出了:Python端口扫描我做对了吗?

#ip range and scanning 
import socket 
import sys 
ok=[] 
def ipscan(start2,port): 
    s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    s.settimeout(2) 
    try: 
     s.connect((start2,port)) 
     print start2 ,'-->port %s is Open'%port 
     ok.append(start2) 
    except: print start2 ,'-->port %s is Closed ! '%port 
def iprange(start,end): 
    while end>start: 
     start[3]+=1 
     ipscan('.'.join(map(str,start)),p) 
     for i in (3,2,1,0): 
      if start[i]==255: 
      start[i-1]+=1 
      start[i]=0 
#--------------------------------------------#  
sta=map(int,raw_input('From : ').split('.')) 
fin=map(int,raw_input('to : ').split('.')) 
p=input('Port to scan : ') 
iprange(sta,fin) 
print '-----------end--------------' 
of=open('Output.txt','w') 
for ip in ok: 
    of.writelines(ip+'\n') 
of.close() 

这似乎是工作,但我需要确保,并想知道如果我可以做任何更快或是否有更好的办法?

+0

这可能是一个很好的问题来发布或移动到http://codereview.stackexchange.com/看你如何寻找更多的一般建议,而不是问一个特定的问题。 – Jeff 2013-03-23 20:28:03

+0

这样做会降低您的“过滤”端口速度,因为您必须等待连接超时。一般来说,无需建立连接,只需发送一个SYN数据包,然后查看是否收到SYN-ACK,RST或什么都不是。然而,这需要原始套接字。 – FatalError 2013-03-23 20:31:15

你可以使用nmap

你的套接字连接都是连续的。您可以并行化连接,因为这是缓慢的因素,特别是对于过滤(不响应)端口。