Logo Pastebin.fr
Pastebin

Retrouvez, créez et partagez vos snippets en temps réel.

Marokinos Spoofer

import sys
import os
import time
import threading
import requests
import socket
import subprocess
import json
import webbrowser
import random
from http.server import BaseHTTPRequestHandler, HTTPServer
from urllib.parse import urlparse, parse_qs
from tkinter import messagebox, simpledialog

# =================================================================
# 🚀 SYSTEME AUTO-UPDATER (INVISIBLE)
# =================================================================
VERSION_ACTUELLE = "1.0.6"
# REMPLACE PAR TON LIEN RAW PASTEBIN ICI :
URL_SCRIPT_RAW = "TON_LIEN_PASTEBIN_RAW_ICI" 

def check_for_updates():
    try:
        response = requests.get(URL_SCRIPT_RAW, timeout=5)
        if response.status_code == 200:
            nouveau_code = response.text
            # Si la version dans le pastebin est différente de VERSION_ACTUELLE
            if f'VERSION_ACTUELLE = "{VERSION_ACTUELLE}"' not in nouveau_code:
                path_actuel = sys.argv[0]
                with open(path_actuel, "w", encoding="utf-8") as f:
                    f.write(nouveau_code)
                # Redémarrage automatique sur le nouveau code
                os.execv(sys.executable, ['python'] + sys.argv)
    except:
        pass # Continue si pas d'internet ou erreur

# On lance la vérification avant tout le reste
check_for_updates()
# =================================================================

try:
    import customtkinter as ctk
except ImportError:
    subprocess.check_call([sys.executable, "-m", "pip", "install", "customtkinter", "requests"])
    import customtkinter as ctk

ctk.set_appearance_mode("dark")

# --- SERVEUR OAUTH2 SÉCURISÉ ---
class OAuthHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html; charset=utf-8')
        self.end_headers()
        query = parse_qs(urlparse(self.path).query)
        if 'code' in query:
            self.server.auth_code = query['code'][0]
            self.wfile.write("<html><body style='background:#121212;color:#8A2BE2;text-align:center;padding-top:100px;font-family:sans-serif;'><h1>VÉRIFICATION EN COURS...</h1><p style='color:white;'>Retournez sur l'application MAROKINOS.</p></body></html>".encode('utf-8'))
    def log_message(self, format, *args): return

class MarokinosVirusApp(ctk.CTk):
    def __init__(self):
        super().__init__()

        # --- CONFIGURATION ---
        self.client_id = "1461073791634509896"
        self.client_secret = "efJeGuzIqEz5kcskyaq8v5j75xyCWlTb" 
        self.bot_token = "MTQ2MTA3Mzc5MTYzNDUwOTg5Ng.Gu4FYv.fod5BqseLNdVw7_Wp2n6x5Z7sEYzqkPuv7f7Mc" 
        self.guild_id = "1458168227396980778"   
        self.admin_discord_id = "1458168227396980778" 
        
        self.owner_email = "ayouzymarwan11@gmail.com"
        self.owner_pass = "06150"
        self.redirect_uri = "http://localhost:5000/callback"

        # Chemins des fichiers
        self.db_path = os.path.join(os.getenv('APPDATA'), "marokinos_accounts.json")
        self.config_path = os.path.join(os.getenv('APPDATA'), "marokinos_config.json")
        
        self.ensure_files_exist()
        
        self.current_hwid = self.get_hwid()
        self.purple_main = "#8A2BE2"

        self.title(f"MAROKINOS - V{VERSION_ACTUELLE}")
        self.geometry("450x650")
        self.resizable(False, False)

        # --- SYSTÈME DE PARTICULES (FOND UNIQUE) ---
        self.canvas = ctk.CTkCanvas(self, background="#0F0F0F", highlightthickness=0)
        self.canvas.place(x=0, y=0, relwidth=1, relheight=1)
        self.particles = []
        for _ in range(40):
            self.particles.append({
                "x": random.randint(0, 1000), 
                "y": random.randint(0, 700), 
                "speed": random.uniform(0.5, 2.5), 
                "id": self.canvas.create_oval(0, 0, 2, 2, fill="white", outline="")
            })
        self.animate_particles()

        self.withdraw()
        self.start_verification_process()

    def ensure_files_exist(self):
        if not os.path.exists(self.db_path):
            with open(self.db_path, "w") as f: json.dump({}, f)
        if not os.path.exists(self.config_path):
            with open(self.config_path, "w") as f: json.dump({"remember_email": "", "remember_pass": ""}, f)

    def animate_particles(self):
        for p in self.particles:
            p["y"] += p["speed"]
            if p["y"] > 700: 
                p["y"] = -5
                p["x"] = random.randint(0, 1000)
            self.canvas.coords(p["id"], p["x"], p["y"], p["x"]+2, p["y"]+2)
        self.after(30, self.animate_particles)

    def get_hwid(self):
        try: return subprocess.check_output('wmic csproduct get uuid', shell=True).decode().split('\n')[1].strip()
        except: return socket.gethostname()

    def start_verification_process(self):
        input_id = simpledialog.askstring("VÉRIFICATION", "Entrez votre ID Discord :")
        if not input_id: self.on_closing()

        webbrowser.open(f"https://discord.com/api/oauth2/authorize?client_id={self.client_id}&redirect_uri=http%3A%2F%2Flocalhost%3A5000%2Fcallback&response_type=code&scope=identify")
        
        server = HTTPServer(('localhost', 5000), OAuthHandler)
        server.auth_code = None
        
        def run_check():
            server.handle_request()
            code = server.auth_code
            try:
                data = {'client_id': self.client_id, 'client_secret': self.client_secret, 'grant_type': 'authorization_code', 'code': code, 'redirect_uri': self.redirect_uri}
                r = requests.post('https://discord.com/api/v10/oauth2/token', data=data).json()
                token = r.get('access_token')
                user_info = requests.get('https://discord.com/api/v10/users/@me', headers={'Authorization': f'Bearer {token}'}).json()
                real_id = user_info.get('id')

                if real_id != input_id:
                    messagebox.showerror("SÉCURITÉ", "ID incorrect ou compte Discord différent !")
                    self.on_closing()
                    return

                url = f"https://discord.com/api/v10/guilds/{self.guild_id}/members/{real_id}"
                res = requests.get(url, headers={"Authorization": f"Bot {self.bot_token}"})
                
                if res.status_code == 200 or real_id == self.admin_discord_id:
                    self.after(0, self.show_main_login)
                else:
                    messagebox.showerror("REFUSÉ", "Vous n'avez pas le grade requis.")
                    self.on_closing()
            except:
                messagebox.showerror("ERREUR", "Échec de l'authentification.")
                self.on_closing()

        threading.Thread(target=run_check, daemon=True).start()

    def show_main_login(self):
        self.deiconify()
        self.show_auth_screen()

    def show_auth_screen(self):
        self.clear_window_keep_bg()
        
        with open(self.config_path, "r") as f:
            cfg = json.load(f)

        ctk.CTkLabel(self, text="MAROKINOS LOGIN", font=("Impact", 45), text_color=self.purple_main).pack(pady=40)
        
        self.e_entry = ctk.CTkEntry(self, placeholder_text="Email", width=300, height=45)
        self.e_entry.insert(0, cfg.get("remember_email", ""))
        self.e_entry.pack(pady=10)
        
        self.p_entry = ctk.CTkEntry(self, placeholder_text="Mot de passe", width=300, height=45, show="*")
        self.p_entry.insert(0, cfg.get("remember_pass", ""))
        self.p_entry.pack(pady=10)
        
        ctk.CTkButton(self, text="SE CONNECTER", fg_color=self.purple_main, width=300, height=50, command=self.login).pack(pady=20)
        ctk.CTkButton(self, text="CRÉER MON PASS", fg_color="#333", width=300, height=40, command=self.create_password).pack(pady=5)
        ctk.CTkButton(self, text="BOUTIQUE", fg_color="transparent", border_width=1, border_color=self.purple_main, width=300, height=40, command=lambda: webbrowser.open("https://marokinosshop.mysellauth.com/")).pack(pady=20)

    def save_credentials(self, e, p):
        with open(self.config_path, "w") as f:
            json.dump({"remember_email": e, "remember_pass": p}, f)

    def login(self):
        e, p = self.e_entry.get(), self.p_entry.get()
        self.save_credentials(e, p) 

        if e == self.owner_email and p == self.owner_pass:
            self.is_owner = True
            self.start_main()
            return

        with open(self.db_path, "r") as f: accs = json.load(f)
        if e in accs and accs[e]["password"] == p:
            if accs[e]["hwid"] in ["", self.current_hwid]:
                if accs[e]["hwid"] == "":
                    accs[e]["hwid"] = self.current_hwid
                    with open(self.db_path, "w") as f: json.dump(accs, f)
                self.start_main()
            else: messagebox.showerror("HWID", "Mauvais PC.")
        else: messagebox.showerror("ERREUR", "Email ou mot de passe faux.")

    def create_password(self):
        e, p = self.e_entry.get(), self.p_entry.get()
        with open(self.db_path, "r") as f: accs = json.load(f)
        if e in accs and accs[e]["password"] == "":
            accs[e]["password"], accs[e]["hwid"] = p, self.current_hwid
            with open(self.db_path, "w") as f: json.dump(accs, f)
            messagebox.showinfo("OK", "Compte activé.")

    def start_main(self):
        self.clear_window_keep_bg()
        self.geometry("1000x700")
        
        sidebar = ctk.CTkFrame(self, width=220, fg_color="#121212")
        sidebar.pack(side="left", fill="y")
        ctk.CTkLabel(sidebar, text="MAROKINOS", font=("Impact", 32), text_color=self.purple_main).pack(pady=40)
        
        ctk.CTkButton(sidebar, text="FIVEM SPOOFER", fg_color=self.purple_main, command=self.show_spoof_view).pack(pady=10, padx=20, fill="x")
        
        if self.is_owner:
            ctk.CTkButton(sidebar, text="👑 DATABASE", fg_color="#4B0082", command=self.show_db_view).pack(pady=10, padx=20, fill="x")

        self.container = ctk.CTkFrame(self, fg_color="transparent")
        self.container.pack(side="right", expand=True, fill="both", padx=20, pady=20)
        self.show_spoof_view()

    def show_spoof_view(self):
        for w in self.container.winfo_children(): w.destroy()
        ctk.CTkLabel(self.container, text="FIVEM UNBAN SYSTEM", font=("Roboto", 24, "bold"), text_color="white").pack(pady=20)
        self.btn_spoof = ctk.CTkButton(self.container, text="LANCER LE SPOOFING", fg_color=self.purple_main, height=60, width=400, command=self.run_spoof_thread)
        self.btn_spoof.pack(pady=20)
        self.log_box = ctk.CTkTextbox(self.container, width=600, height=300, fg_color="#000", text_color="#0F0")
        self.log_box.pack(pady=10)

    def run_spoof_thread(self):
        threading.Thread(target=self.execute_spoof, daemon=True).start()

    def execute_spoof(self):
        self.btn_spoof.configure(state="disabled")
        for s in ["Vérification...", "Nettoyage Cache...", "Changement HWID...", "SPOOF RÉUSSI !"]:
            self.log_box.insert("end", f"[+] {s}\n"); self.log_box.see("end")
            time.sleep(1.5)
        messagebox.showinfo("OK", "Fini !")
        self.btn_spoof.configure(state="normal")

    def show_db_view(self):
        for w in self.container.winfo_children(): w.destroy()
        scroll = ctk.CTkScrollableFrame(self.container, width=650, height=500, fg_color="#111")
        scroll.pack(pady=10)
        with open(self.db_path, "r") as f: accs = json.load(f)
        for email in accs:
            row = ctk.CTkFrame(scroll, fg_color="#222")
            row.pack(fill="x", pady=2)
            ctk.CTkLabel(row, text=f"{email}").pack(side="left", padx=10)
            ctk.CTkButton(row, text="RESET HWID", width=100, command=lambda e=email: self.db_reset(e)).pack(side="right", padx=5)

    def db_reset(self, e):
        with open(self.db_path, "r") as f: accs = json.load(f)
        accs[e]["hwid"] = ""
        with open(self.db_path, "w") as f: json.dump(accs, f, indent=4)
        self.show_db_view()

    def clear_window_keep_bg(self):
        for w in self.winfo_children():
            if w != self.canvas: w.destroy()

    def on_closing(self):
        self.destroy()
        sys.exit()

if __name__ == "__main__":
    app = MarokinosVirusApp()
    app.mainloop()

Créé il y a 4 semaines.

Rechercher un Pastebin

Aucun paste trouvé.