python绝技 系列脚本
1.python漏洞扫描脚本
1 import socket 2 import os 3 import sys 4 def retbanner(ip,port): 5 try: 6 socket.setdefaulttimeout(2) #设置连接目标服务器超时时间 7 s = socket.socket() #创建套接字 8 s.connect((ip,poet)) #建立tcp连接 9 banner = s.recv(1024) #返回服务器banner信息 10 return banner 11 except: 12 return #如果连接失败,则返回faulse 13 def checkvulns(banner,filename): 14 f=open(filename,"r") #打开已准备好的漏洞banner匹配字典 15 for line in f.readlines(): #readlines函数返回一个列表,遍历此列表 16 if line.strip("\n") in banner: #去除元素中的换行 17 print "server is vulnerable"+line.strip("\n") 18 def main(): 19 if len(sys.argv)==2: #sys用来与终端进行交互,argv为命令行参数数组,索引为0默认为脚本名称 20 filename=sys.argv[1] #此时文件名为第一个参数 21 if not os.path.isfile(filename): #如果给定的字典文件不是一个文件 22 print filename+"does not exist" 23 exit(0) 24 if not os.access(filename,os.R_OK): #os与操作系统进行交互,判断文件权限是否够 25 print filename+"access denied" 26 exit(0) 27 else: 28 print "usage"+str(sys.argv[0]) 29 exit(0) 30 portlist=[21,22,25,80,110,443] #要扫描的端口列表 31 for x in range(147,150): 32 ip='192.168.95.'+str(x) #要扫描的ip段 33 for port in portlist: 34 banner = retbanner(ip,port) 35 if banner: 36 print '[+]'+ip+';'+banner 37 checkvulns(banner,filename) 38 if __name__=='__main__': 39 main()

浙公网安备 33010602011771号