python获取banner脚本修改代码

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()
#放在它后面的代码部分在被调用时不会执行,单独执行该脚本时才会执行
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值