Python端口扫描我做得对吗?

时间:2013-03-23 20:24:42

标签: python sockets python-2.7

所以我正在制作一个python程序,用我学到的东西到目前为止,用户输入两个ips代表扫描的ips的开始和范围,而不是将想要的ip保存在文本文件中。 这就是我想出的:

   #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()

它似乎工作但我需要确定,并想知道我是否可以更快地制作它?或者是否有更好的方法。

1 个答案:

答案 0 :(得分:1)

您可以使用nmap;)

您的套接字连接都是顺序的。您可以并行化连接,因为这是缓慢因素,尤其是对于已过滤(未响应)的端口。