python实现ssh爆破
SSH服务
SSh服务提供远程登录主机,方便管理远程主机(22端口)(类似TELNET服务23端口) ssh服务传输过程中对数据包根据SSH协议加密处理 SSH有两种登陆方式 1、账号密码登录 2、密钥登录 公钥:在/.ssh/authorized_keys文件中 私钥:进行登录
爆破流程
文件读密码(枚举) ⇩ Paramiko-ssh客户端(尝试登陆) ⇩ 异常处理判断 ⇩ 成功、失败
代码实现
1 | import paramiko |
这里的脚本和上一个写的脚本结构大体相同,思路也差不多,都是调用了线程,这里连接使用了paramiko模块,使用pip install命令安装一下即可。 那下面就只对不同的部分写一些解释: 1、首先SSH爆破用到了字典,需要使用字典生成工具生成或者自己写一些密码字典。然后是字典的读取使用操作:
1 | with open('dict.txt','r') as f: |
这串代码能够输出dict.txt里的全部字典,但是在爆破密码时,我们需要逐个对字典里的密码进行尝试,所以就使用了了readlines()方法,readlines() 方法返回一个列表,其中包含文件中的每一行作为列表项。在嵌套循环结构就能得到每一个密码 另外在txt格式的字典中密码都是这样排列 admin 123 456 这种每行一个的密码后面读取出来都会有换行符,这就需要使用i.strip(‘\n’)来删除,避免尝试密码时造成干扰 2、关于连接主机时的验证
1 | client.connect(hostname='192.168.45.136',username='root',password='passwd',timeout=1) |
在这条语句执行时,客户端回去从know_hosts文件中读取连接主机,如果主机不在文件中,无法与主机进行连接 解决方法: 添加一行代码
1 | client.set_missing_host_key_policy(paramiko.AutoAddpolicy()) |