ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python编写的banner获取代码的两种方式

2019-11-24 22:53:42  阅读:376  来源: 互联网

标签:socket python ip filename address print 编写 banner port


1、无选项和帮助信息

#!/usr/bin/env python
#coding:utf-8

import socket
import sys
import os
from threading import Thread
#导入模块
if len(sys.argv) !=2:
    print "输入方式:",sysargv[0],"IPliebiao"
    print "例如: ./test.py /root/ip.txt"
    sys.exit()

def getBanner(ip,port):
    socket.setdefaulttimeout(2)
#设置超时时间为两秒
    s=socket.socket()
#调用socket模块中的socket方法
    try:
        s.connect((ip,port))
    #接收IP和端口
        result=s.recv(1024)
    #接收返回信息中的前1024b数据
        s.close()
    #断开连接
        return result
    #输出结果
    except:
        pass

def checkVulns(ip,port):
    banner=getBanner(ip,port)
    if banner:
        if ("2.0" in banner):
            print ip+"is vulnerable"
        else:
            print ip+"is unvulnerable"
    else:
        print ip,"not get banner"
    #判断结果服务器是否为2.0版本
def main():
    #不当做模块
    filename=str(sys.argv[1].strip())
    if not os.path.exists(filename):
        print "文件不存在"
        sys.exit()
    #判断引入文件是否存在,不存在则关闭
    f=open(filename,"r")
    for i in f.readlines():
        ip=i.strip("\n")
        port=22
        t=Thread(target=checkVulns,args=(ip,port))
        t.start()
    f.close()
    #引入文件,并去除分行符

if __name__=="__main__":
    main()
    #输出结果

 

2、有选项和帮助信息

#!/usr/bin/env python
#coding:utf-8

import socket
import sys
import os
from threading import Thread
from optparse import OptionParser

def getBanner(ip,port):
    socket.setdefaulttimeout(2)
    s=socket.socket()
    try:
        s.connect((ip,port))
        result=s.recv(1024)
        s.close()
        return result
    except:
        pass

def checkVulns(ip,port):
    banner=getBanner(ip,port)
    if banner:
        if ("2.0" 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="IP address file")
    parser.add_option("-i","--ip",type="string",dest="address",help="IP address")
    (options,args)=parser.parse_args()
    #设置选项-f和-i和帮助信息-h
    
    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 "bucunzai"
            sys.exit()
        f=open(filename,"r")
        for i in f.readlines():
            ip=i.strip("\n")
            port=22
            t=Thread(target=checkVulns,args=(ip,port))
            t.start()
        f.close()
    #设置-f参数引入的方式

    if address:
        prefix=address.split(".")[0]+"."+address.split(".")[1]+"."+address.split(".")[2]+"."
        for i in range(1,255):
            ip=prefix+str(i)
            port=22
            t=Thread(target=checkVulns,args=(ip,port))
            t.start()
    #设置-i参数引入的方式

if __name__=="__main__":
    main()

 

标签:socket,python,ip,filename,address,print,编写,banner,port
来源: https://www.cnblogs.com/liujizhou/p/11924965.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有