import socket #导入socket模块
import sys
import os
from threading import Thread
from optparse import OptionParser
def getBanner(ip,port): #获取IP地址和端口号
socket.setdefaulttimeout(2)#设置超时时间
s = socket.socket() #定义一个s对象,表示引用socket模块中socket方法
#请求异常处理,try子句中的代码块包含可能引发异常的语句,except用来捕获相应异常
try:
s.connect((ip,port)) #用connect方法连接主机
result=s.recv(1024) #接受返回信息的前1024b数据
s.close()
return result
except:
pass
def checkVulns(ip,port):
banner=getBanner(ip,port)
if banner:
if("2.3.4" in banner):
print(ip,"is vulnerable")
else:
print(ip,"is unvulnerable")
else:
print(ip,"not get banner")
def main():
usage="Usage: %prog -f <filename> -i <ip address>"
parser=OptionParser(usage=usage)
parser.add_option("-f","--file",type="string",dest="filename",help="specify the IP address file")
parser.add_option("-i","--ip",type="string",dest="address",help="specify the IP address")
(options,args)=parser.parse_args()
filename=options.filename
address=options.address
if (filename==None and address==None):
print("请指定IP列表文件或者IP地址")
sys.exit()
if filename:
if not os.path.exists(filename):
print("指定文件不存在请重新输入")
sys.exit()
f=open(filename,"r")
for i in f.readlines():
ip = i.strip("\n")
port=21
t=Thread(target=checkVulns,args=(ip,port))#使用多线程
t.start()
f.close()
if address:
prefix=address.split(".")[0]+"."+address.split(".")[1]+"."+address.split(".")[2]+"."
for i in range(1,255):
ip=prefix + str(i)
port=21
t=Thread(target=checkVulns,args=(ip,port))
t.start()
if __name__=="__main__":#判断程序如何执行
main()
#放在它后面的代码部分在被调用时不会执行,单独执行该脚本时才会执行
python获取banner脚本修改代码
最新推荐文章于 2022-12-01 20:49:16 发布