Исходник Жесткий hwidauth$$$ для пастеров | Zenith 1.21.4

  • Автор темы Автор темы Alex722
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
1 Окт 2025
Сообщения
17
Реакции
0
Выберите загрузчик игры
  1. Fabric
HWIDUtils:
Expand Collapse Copy
package ru.scamware.core.loginutils.utils;

import org.apache.commons.codec.digest.DigestUtils;

public class HWIDUtils {

    public static String getHwid() {
        try {
            StringBuilder hardwareInfo = new StringBuilder();
            hardwareInfo.append(System.getenv("PROCESSOR_IDENTIFIER"));
            hardwareInfo.append(System.getenv("PROCESSOR_LEVEL"));
            hardwareInfo.append(System.getenv("PROCESSOR_REVISION"));
            hardwareInfo.append(System.getenv("PROCESSOR_ARCHITECTURE"));
            hardwareInfo.append(System.getenv("PROCESSOR_ARCHITEW6432"));
            hardwareInfo.append(System.getProperty("os.name"));
            hardwareInfo.append(System.getProperty("os.arch"));
            hardwareInfo.append(System.getProperty("os.version"));
            hardwareInfo.append(System.getenv("COMPUTERNAME"));
            hardwareInfo.append(System.getenv("USERNAME"));
            hardwareInfo.append(System.getenv("HOMEDRIVE"));
            hardwareInfo.append(getDiskSerial());
            hardwareInfo.append(getMacAddress());
            String salted = hardwareInfo.toString() + "SCAMWARE_SALT_2024";
            String firstHash = DigestUtils.sha256Hex(salted);
            return DigestUtils.sha256Hex(firstHash + "SECOND_SALT");

        } catch (Exception e) {
            return DigestUtils.sha256Hex("fallback_hwid_" + System.currentTimeMillis());
        }
    }

    private static String getDiskSerial() {
        try {
            String os = System.getProperty("os.name").toLowerCase();
            if (os.contains("win")) {
                Process process = Runtime.getRuntime().exec(
                        new String[]{"wmic", "diskdrive", "get", "serialnumber"});
                java.util.Scanner scanner = new java.util.Scanner(process.getInputStream());
                StringBuilder result = new StringBuilder();
                while (scanner.hasNextLine()) {
                    String line = scanner.nextLine().trim();
                    if (!line.isEmpty() && !line.equals("SerialNumber")) {
                        result.append(line);
                    }
                }
                scanner.close();
                return result.toString();
            }
        } catch (Exception e) {
           
        }
        return "UNKNOWN_DISK";
    }

    private static String getMacAddress() {
        try {
            java.net.NetworkInterface network = java.net.NetworkInterface.getByInetAddress(
                    java.net.InetAddress.getLocalHost());
            if (network != null) {
                byte[] mac = network.getHardwareAddress();
                if (mac != null) {
                    StringBuilder sb = new StringBuilder();
                    for (int i = 0; i < mac.length; i++) {
                        sb.append(String.format("%02X", mac[i]));
                    }
                    return sb.toString();
                }
            }
        } catch (Exception e) {

        }
        return "UNKNOWN_MAC";
    }
}

UserProfile:
Expand Collapse Copy
package ru.scamware.core.loginutils.utils;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

@Setter
@Getter
@AllArgsConstructor
public class UserProfile {
    private final String name;
    private final String role;
    private final String expireDate;
    private final int accessLevel;
}


Auth:
Expand Collapse Copy
package ru.scamware.core.loginutils;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import lombok.Getter;
import ru.scamware.core.loginutils.utils.HWIDUtils;
import ru.scamware.core.loginutils.utils.UserProfile;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Base64;

@Getter
public class Auth {
    @Getter
    private static Auth instance = new Auth();

    private UserProfile userProfile;
    private boolean authenticated = false;
    private String authMessage = "";

    private static final String ENCRYPTION_KEY = "ScamWareSecureKey2024!";
    private static final String AUTH_URL = "https://pastebin.com/raw/ТУТ_ВАШ_PASTEBIN";
   

    public boolean authenticate() {
        try {
            authMessage = "Начало аутентификации...";

            String hwid = HWIDUtils.getHwid();
            authMessage = "HWID сгенерирован: " + hwid.substring(0, 8) + "...";

            String encryptedData = downloadAuthData();
            if (encryptedData == null || encryptedData.isEmpty()) {
                authMessage = "Ошибка: Не удалось загрузить данные аутентификации";
                return false;
            }
           
            String jsonData = decrypt(encryptedData);
            if (jsonData == null || jsonData.isEmpty()) {
                authMessage = "Ошибка: Неверный формат данных аутентификации";
                return false;
            }
           
            JsonObject root = JsonParser.parseString(jsonData).getAsJsonObject();
           
            if (!root.has("version") || root.get("version").getAsInt() != 1) {
                authMessage = "Ошибка: Неверная версия данных";
                return false;
            }
           
            JsonArray users = root.getAsJsonArray("users");
            for (JsonElement userElement : users) {
                JsonObject user = userElement.getAsJsonObject();

                if (user.get("hwid").getAsString().equals(hwid)) {
                    String username = user.get("username").getAsString();
                    String role = user.get("role").getAsString();
                    String expireDate = user.get("expire").getAsString();
                    int accessLevel = user.get("accessLevel").getAsInt();

                    if (isExpired(expireDate)) {
                        authMessage = "Ошибка: Ваша лицензия истекла " + expireDate;
                        return false;
                    }
                   
                    this.userProfile = new UserProfile(username, role, expireDate, accessLevel);
                    this.authenticated = true;
                    authMessage = "Успешная аутентификация! Добро пожаловать, " + username;
                    return true;
                }
            }

            authMessage = "Ошибка: Ваш HWID не найден в списке разрешенных";
            return false;

        } catch (Exception e) {
            authMessage = "Ошибка аутентификации: " + e.getMessage();
            return false;
        }
    }

    private String downloadAuthData() {
        try {
            URL url = new URL(AUTH_URL);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36");
            connection.setConnectTimeout(10000);
            connection.setReadTimeout(10000);

            if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
                throw new RuntimeException("HTTP error: " + connection.getResponseCode());
            }

            try (BufferedReader reader = new BufferedReader(
                    new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) {
                StringBuilder response = new StringBuilder();
                String line;
                while ((line = reader.readLine()) != null) {
                    response.append(line);
                }
                return response.toString().trim();
            }
        } catch (Exception e) {
            authMessage = "Ошибка загрузки: " + e.getMessage();
            return null;
        }
    }

    private String decrypt(String encryptedData) {
        try {
            MessageDigest sha = MessageDigest.getInstance("SHA-256");
            byte[] key = sha.digest(ENCRYPTION_KEY.getBytes(StandardCharsets.UTF_8));
            key = java.util.Arrays.copyOf(key, 16);

            SecretKeySpec secretKey = new SecretKeySpec(key, "AES");
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            cipher.init(Cipher.DECRYPT_MODE, secretKey);

            byte[] decodedData = Base64.getDecoder().decode(encryptedData);
            byte[] decryptedData = cipher.doFinal(decodedData);

            return new String(decryptedData, StandardCharsets.UTF_8);
        } catch (Exception e) {
            authMessage = "Ошибка дешифровки: " + e.getMessage();
            return null;
        }
    }

    private boolean isExpired(String expireDate) {
        try {
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            LocalDate expire = LocalDate.parse(expireDate, formatter);
            LocalDate today = LocalDate.now();
            return today.isAfter(expire);
        } catch (Exception e) {
            return true;
        }
    }

    public String getHwid() {
        return HWIDUtils.getHwid();
    }
}


AuthDataGenerator:
Expand Collapse Copy
package ru.scamware.core.loginutils;

import ru.scamware.core.loginutils.utils.HWIDUtils;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.util.Base64;

public class AuthDataGenerator {
    private static final String ENCRYPTION_KEY = "ScamWareSecureKey2024!";

    public static void main(String[] args) {
        String jsonData = """
            {
                "version": 1,
                "users": [
                    {
                        "hwid": "e546611fb1bcca5cd5c18d669db881ab41a0f5deb573f28955581fa5dd192ee1",
                        "username": "warkzy666",
                        "role": "dev",
                        "expire": "2038-06-06",
                        "accessLevel": 333
                    }
                ]
            }
            """;

        String encrypted = encrypt(jsonData);
        System.out.println("Данные для Pastebin:");
        System.out.println(encrypted);

        System.out.println("\\nТестовый HWID: " + HWIDUtils.getHwid());
    }

    private static String encrypt(String data) {
        try {
            MessageDigest sha = MessageDigest.getInstance("SHA-256");
            byte[] key = sha.digest(ENCRYPTION_KEY.getBytes(StandardCharsets.UTF_8));
            key = java.util.Arrays.copyOf(key, 16);

            SecretKeySpec secretKey = new SecretKeySpec(key, "AES");
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            cipher.init(Cipher.ENCRYPT_MODE, secretKey);

            byte[] encryptedData = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));
            return Base64.getEncoder().encodeToString(encryptedData);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}


ЭТО В MAIN КЛАСС!!!!:
Expand Collapse Copy
    @Getter
    static Main instance;

    @Getter
    private Auth auth;
    private boolean authenticated;

    EventManager eventManager = new EventManager();
    ModuleRepository moduleRepository;
    ModuleSwitcher moduleSwitcher;
    CommandRepository commandRepository;
    CommandDispatcher commandDispatcher;
    BoxESPRepository boxESPRepository = new BoxESPRepository(eventManager);
    MacroRepository macroRepository = new MacroRepository(eventManager);
    WayRepository wayRepository = new WayRepository(eventManager);
    RCTRepository RCTRepository = new RCTRepository(eventManager);
    ModuleProvider moduleProvider;
    DraggableRepository draggableRepository;
    DiscordManager discordManager;
    FileRepository fileRepository;
    FileController fileController;
    ScissorManager scissorManager = new ScissorManager();
    ClientInfoProvider clientInfoProvider;
    ListenerRepository listenerRepository;
    AttackPerpetrator attackPerpetrator = new AttackPerpetrator();
    boolean initialized;

    @Override
    public void onInitialize() {
        instance = this;

        initAuthentication();
        if (!authenticated) {
            System.err.println("Аутентификация провалена: " + auth.getAuthMessage());
            showAuthError();
            return;
        }

        System.out.println("Аутентификация успешна: " + auth.getAuthMessage());
        initClientInfoProvider();
        initModules();
        initDraggable();
        initFileManager();
        initCommands();
        initListeners();
        initDiscordRPC();
        SoundManager.init();
        MenuScreen menuScreen = new MenuScreen();
        menuScreen.initialize();


        initialized = true;
    }

    private void initAuthentication() {
        auth = Auth.getInstance();
        authenticated = auth.authenticate();
    }

    private void showAuthError() {
        System.err.println("=== ОШИБКА АУТЕНТИФИКАЦИИ ===");
        System.err.println(auth.getAuthMessage());
        System.err.println("Ваш HWID: " + auth.getHwid());
        System.err.println("=============================");
    }


ОБНОВИТЬ PROFILE!!!:
Expand Collapse Copy
package ru.scamware.core;

import lombok.Getter;
import lombok.experimental.UtilityClass;

@UtilityClass
public class Profile {
    @Getter
    private String username = getActualUsername();
    @Getter
    private String role = getActualRole();
    @Getter
    private String expire = getActualExpire();
    @Getter
    private int accessLevel = getActualAccessLevel();

    private String getActualUsername() {
        if (Main.getInstance() != null &&
                Main.getInstance().getAuth() != null &&
                Main.getInstance().getAuth().getUserProfile() != null) {
            return Main.getInstance().getAuth().getUserProfile().getName();
        }
        return "Unauthorized";
    }

    private String getActualRole() {
        if (Main.getInstance() != null &&
                Main.getInstance().getAuth() != null &&
                Main.getInstance().getAuth().getUserProfile() != null) {
            return Main.getInstance().getAuth().getUserProfile().getRole();
        }
        return "unauthorized";
    }

    private String getActualExpire() {
        if (Main.getInstance() != null &&
                Main.getInstance().getAuth() != null &&
                Main.getInstance().getAuth().getUserProfile() != null) {
            return Main.getInstance().getAuth().getUserProfile().getExpireDate();
        }
        return "1970-01-01";
    }

    private int getActualAccessLevel() {
        if (Main.getInstance() != null &&
                Main.getInstance().getAuth() != null &&
                Main.getInstance().getAuth().getUserProfile() != null) {
            return Main.getInstance().getAuth().getUserProfile().getAccessLevel();
        }
        return 0;
    }
}

ЭТО НЕ ЗАЩИТА!! ВАС ТАК И ТАК КРЯКНУТ! ЭТО ДЛЯ ТЕХ У КОГО НЕТ ДЕНЕГ НА НОРМАЛЬНУЮ ЗАЩИТУ! ВАШ ЧИТ ОСТАЕТСЯ ВСЕ РАВНО OPENSOURCE, ГРУБО ГОВОРЯ ЭТО ДЛЯ ТОГО ЧТО БЫ НЕ ИГРАЛИ ДРУГИЕ ТИПЫ С ВАШИМ ЧИТОМ!
 
HWIDUtils:
Expand Collapse Copy
package ru.scamware.core.loginutils.utils;

import org.apache.commons.codec.digest.DigestUtils;

public class HWIDUtils {

    public static String getHwid() {
        try {
            StringBuilder hardwareInfo = new StringBuilder();
            hardwareInfo.append(System.getenv("PROCESSOR_IDENTIFIER"));
            hardwareInfo.append(System.getenv("PROCESSOR_LEVEL"));
            hardwareInfo.append(System.getenv("PROCESSOR_REVISION"));
            hardwareInfo.append(System.getenv("PROCESSOR_ARCHITECTURE"));
            hardwareInfo.append(System.getenv("PROCESSOR_ARCHITEW6432"));
            hardwareInfo.append(System.getProperty("os.name"));
            hardwareInfo.append(System.getProperty("os.arch"));
            hardwareInfo.append(System.getProperty("os.version"));
            hardwareInfo.append(System.getenv("COMPUTERNAME"));
            hardwareInfo.append(System.getenv("USERNAME"));
            hardwareInfo.append(System.getenv("HOMEDRIVE"));
            hardwareInfo.append(getDiskSerial());
            hardwareInfo.append(getMacAddress());
            String salted = hardwareInfo.toString() + "SCAMWARE_SALT_2024";
            String firstHash = DigestUtils.sha256Hex(salted);
            return DigestUtils.sha256Hex(firstHash + "SECOND_SALT");

        } catch (Exception e) {
            return DigestUtils.sha256Hex("fallback_hwid_" + System.currentTimeMillis());
        }
    }

    private static String getDiskSerial() {
        try {
            String os = System.getProperty("os.name").toLowerCase();
            if (os.contains("win")) {
                Process process = Runtime.getRuntime().exec(
                        new String[]{"wmic", "diskdrive", "get", "serialnumber"});
                java.util.Scanner scanner = new java.util.Scanner(process.getInputStream());
                StringBuilder result = new StringBuilder();
                while (scanner.hasNextLine()) {
                    String line = scanner.nextLine().trim();
                    if (!line.isEmpty() && !line.equals("SerialNumber")) {
                        result.append(line);
                    }
                }
                scanner.close();
                return result.toString();
            }
        } catch (Exception e) {
           
        }
        return "UNKNOWN_DISK";
    }

    private static String getMacAddress() {
        try {
            java.net.NetworkInterface network = java.net.NetworkInterface.getByInetAddress(
                    java.net.InetAddress.getLocalHost());
            if (network != null) {
                byte[] mac = network.getHardwareAddress();
                if (mac != null) {
                    StringBuilder sb = new StringBuilder();
                    for (int i = 0; i < mac.length; i++) {
                        sb.append(String.format("%02X", mac[i]));
                    }
                    return sb.toString();
                }
            }
        } catch (Exception e) {

        }
        return "UNKNOWN_MAC";
    }
}

UserProfile:
Expand Collapse Copy
package ru.scamware.core.loginutils.utils;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

@Setter
@Getter
@AllArgsConstructor
public class UserProfile {
    private final String name;
    private final String role;
    private final String expireDate;
    private final int accessLevel;
}


Auth:
Expand Collapse Copy
package ru.scamware.core.loginutils;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import lombok.Getter;
import ru.scamware.core.loginutils.utils.HWIDUtils;
import ru.scamware.core.loginutils.utils.UserProfile;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Base64;

@Getter
public class Auth {
    @Getter
    private static Auth instance = new Auth();

    private UserProfile userProfile;
    private boolean authenticated = false;
    private String authMessage = "";

    private static final String ENCRYPTION_KEY = "ScamWareSecureKey2024!";
    private static final String AUTH_URL = "https://pastebin.com/raw/ТУТ_ВАШ_PASTEBIN";
   

    public boolean authenticate() {
        try {
            authMessage = "Начало аутентификации...";

            String hwid = HWIDUtils.getHwid();
            authMessage = "HWID сгенерирован: " + hwid.substring(0, 8) + "...";

            String encryptedData = downloadAuthData();
            if (encryptedData == null || encryptedData.isEmpty()) {
                authMessage = "Ошибка: Не удалось загрузить данные аутентификации";
                return false;
            }
           
            String jsonData = decrypt(encryptedData);
            if (jsonData == null || jsonData.isEmpty()) {
                authMessage = "Ошибка: Неверный формат данных аутентификации";
                return false;
            }
           
            JsonObject root = JsonParser.parseString(jsonData).getAsJsonObject();
           
            if (!root.has("version") || root.get("version").getAsInt() != 1) {
                authMessage = "Ошибка: Неверная версия данных";
                return false;
            }
           
            JsonArray users = root.getAsJsonArray("users");
            for (JsonElement userElement : users) {
                JsonObject user = userElement.getAsJsonObject();

                if (user.get("hwid").getAsString().equals(hwid)) {
                    String username = user.get("username").getAsString();
                    String role = user.get("role").getAsString();
                    String expireDate = user.get("expire").getAsString();
                    int accessLevel = user.get("accessLevel").getAsInt();

                    if (isExpired(expireDate)) {
                        authMessage = "Ошибка: Ваша лицензия истекла " + expireDate;
                        return false;
                    }
                   
                    this.userProfile = new UserProfile(username, role, expireDate, accessLevel);
                    this.authenticated = true;
                    authMessage = "Успешная аутентификация! Добро пожаловать, " + username;
                    return true;
                }
            }

            authMessage = "Ошибка: Ваш HWID не найден в списке разрешенных";
            return false;

        } catch (Exception e) {
            authMessage = "Ошибка аутентификации: " + e.getMessage();
            return false;
        }
    }

    private String downloadAuthData() {
        try {
            URL url = new URL(AUTH_URL);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36");
            connection.setConnectTimeout(10000);
            connection.setReadTimeout(10000);

            if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
                throw new RuntimeException("HTTP error: " + connection.getResponseCode());
            }

            try (BufferedReader reader = new BufferedReader(
                    new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) {
                StringBuilder response = new StringBuilder();
                String line;
                while ((line = reader.readLine()) != null) {
                    response.append(line);
                }
                return response.toString().trim();
            }
        } catch (Exception e) {
            authMessage = "Ошибка загрузки: " + e.getMessage();
            return null;
        }
    }

    private String decrypt(String encryptedData) {
        try {
            MessageDigest sha = MessageDigest.getInstance("SHA-256");
            byte[] key = sha.digest(ENCRYPTION_KEY.getBytes(StandardCharsets.UTF_8));
            key = java.util.Arrays.copyOf(key, 16);

            SecretKeySpec secretKey = new SecretKeySpec(key, "AES");
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            cipher.init(Cipher.DECRYPT_MODE, secretKey);

            byte[] decodedData = Base64.getDecoder().decode(encryptedData);
            byte[] decryptedData = cipher.doFinal(decodedData);

            return new String(decryptedData, StandardCharsets.UTF_8);
        } catch (Exception e) {
            authMessage = "Ошибка дешифровки: " + e.getMessage();
            return null;
        }
    }

    private boolean isExpired(String expireDate) {
        try {
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            LocalDate expire = LocalDate.parse(expireDate, formatter);
            LocalDate today = LocalDate.now();
            return today.isAfter(expire);
        } catch (Exception e) {
            return true;
        }
    }

    public String getHwid() {
        return HWIDUtils.getHwid();
    }
}


AuthDataGenerator:
Expand Collapse Copy
package ru.scamware.core.loginutils;

import ru.scamware.core.loginutils.utils.HWIDUtils;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.util.Base64;

public class AuthDataGenerator {
    private static final String ENCRYPTION_KEY = "ScamWareSecureKey2024!";

    public static void main(String[] args) {
        String jsonData = """
            {
                "version": 1,
                "users": [
                    {
                        "hwid": "e546611fb1bcca5cd5c18d669db881ab41a0f5deb573f28955581fa5dd192ee1",
                        "username": "warkzy666",
                        "role": "dev",
                        "expire": "2038-06-06",
                        "accessLevel": 333
                    }
                ]
            }
            """;

        String encrypted = encrypt(jsonData);
        System.out.println("Данные для Pastebin:");
        System.out.println(encrypted);

        System.out.println("\\nТестовый HWID: " + HWIDUtils.getHwid());
    }

    private static String encrypt(String data) {
        try {
            MessageDigest sha = MessageDigest.getInstance("SHA-256");
            byte[] key = sha.digest(ENCRYPTION_KEY.getBytes(StandardCharsets.UTF_8));
            key = java.util.Arrays.copyOf(key, 16);

            SecretKeySpec secretKey = new SecretKeySpec(key, "AES");
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            cipher.init(Cipher.ENCRYPT_MODE, secretKey);

            byte[] encryptedData = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));
            return Base64.getEncoder().encodeToString(encryptedData);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}


ЭТО В MAIN КЛАСС!!!!:
Expand Collapse Copy
    @Getter
    static Main instance;

    @Getter
    private Auth auth;
    private boolean authenticated;

    EventManager eventManager = new EventManager();
    ModuleRepository moduleRepository;
    ModuleSwitcher moduleSwitcher;
    CommandRepository commandRepository;
    CommandDispatcher commandDispatcher;
    BoxESPRepository boxESPRepository = new BoxESPRepository(eventManager);
    MacroRepository macroRepository = new MacroRepository(eventManager);
    WayRepository wayRepository = new WayRepository(eventManager);
    RCTRepository RCTRepository = new RCTRepository(eventManager);
    ModuleProvider moduleProvider;
    DraggableRepository draggableRepository;
    DiscordManager discordManager;
    FileRepository fileRepository;
    FileController fileController;
    ScissorManager scissorManager = new ScissorManager();
    ClientInfoProvider clientInfoProvider;
    ListenerRepository listenerRepository;
    AttackPerpetrator attackPerpetrator = new AttackPerpetrator();
    boolean initialized;

    @Override
    public void onInitialize() {
        instance = this;

        initAuthentication();
        if (!authenticated) {
            System.err.println("Аутентификация провалена: " + auth.getAuthMessage());
            showAuthError();
            return;
        }

        System.out.println("Аутентификация успешна: " + auth.getAuthMessage());
        initClientInfoProvider();
        initModules();
        initDraggable();
        initFileManager();
        initCommands();
        initListeners();
        initDiscordRPC();
        SoundManager.init();
        MenuScreen menuScreen = new MenuScreen();
        menuScreen.initialize();


        initialized = true;
    }

    private void initAuthentication() {
        auth = Auth.getInstance();
        authenticated = auth.authenticate();
    }

    private void showAuthError() {
        System.err.println("=== ОШИБКА АУТЕНТИФИКАЦИИ ===");
        System.err.println(auth.getAuthMessage());
        System.err.println("Ваш HWID: " + auth.getHwid());
        System.err.println("=============================");
    }


ОБНОВИТЬ PROFILE!!!:
Expand Collapse Copy
package ru.scamware.core;

import lombok.Getter;
import lombok.experimental.UtilityClass;

@UtilityClass
public class Profile {
    @Getter
    private String username = getActualUsername();
    @Getter
    private String role = getActualRole();
    @Getter
    private String expire = getActualExpire();
    @Getter
    private int accessLevel = getActualAccessLevel();

    private String getActualUsername() {
        if (Main.getInstance() != null &&
                Main.getInstance().getAuth() != null &&
                Main.getInstance().getAuth().getUserProfile() != null) {
            return Main.getInstance().getAuth().getUserProfile().getName();
        }
        return "Unauthorized";
    }

    private String getActualRole() {
        if (Main.getInstance() != null &&
                Main.getInstance().getAuth() != null &&
                Main.getInstance().getAuth().getUserProfile() != null) {
            return Main.getInstance().getAuth().getUserProfile().getRole();
        }
        return "unauthorized";
    }

    private String getActualExpire() {
        if (Main.getInstance() != null &&
                Main.getInstance().getAuth() != null &&
                Main.getInstance().getAuth().getUserProfile() != null) {
            return Main.getInstance().getAuth().getUserProfile().getExpireDate();
        }
        return "1970-01-01";
    }

    private int getActualAccessLevel() {
        if (Main.getInstance() != null &&
                Main.getInstance().getAuth() != null &&
                Main.getInstance().getAuth().getUserProfile() != null) {
            return Main.getInstance().getAuth().getUserProfile().getAccessLevel();
        }
        return 0;
    }
}

ЭТО НЕ ЗАЩИТА!! ВАС ТАК И ТАК КРЯКНУТ! ЭТО ДЛЯ ТЕХ У КОГО НЕТ ДЕНЕГ НА НОРМАЛЬНУЮ ЗАЩИТУ! ВАШ ЧИТ ОСТАЕТСЯ ВСЕ РАВНО OPENSOURCE, ГРУБО ГОВОРЯ ЭТО ДЛЯ ТОГО ЧТО БЫ НЕ ИГРАЛИ ДРУГИЕ ТИПЫ С ВАШИМ ЧИТОМ!
Фул гпт щиткод
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
HWIDUtils:
Expand Collapse Copy
package ru.scamware.core.loginutils.utils;

import org.apache.commons.codec.digest.DigestUtils;

public class HWIDUtils {

    public static String getHwid() {
        try {
            StringBuilder hardwareInfo = new StringBuilder();
            hardwareInfo.append(System.getenv("PROCESSOR_IDENTIFIER"));
            hardwareInfo.append(System.getenv("PROCESSOR_LEVEL"));
            hardwareInfo.append(System.getenv("PROCESSOR_REVISION"));
            hardwareInfo.append(System.getenv("PROCESSOR_ARCHITECTURE"));
            hardwareInfo.append(System.getenv("PROCESSOR_ARCHITEW6432"));
            hardwareInfo.append(System.getProperty("os.name"));
            hardwareInfo.append(System.getProperty("os.arch"));
            hardwareInfo.append(System.getProperty("os.version"));
            hardwareInfo.append(System.getenv("COMPUTERNAME"));
            hardwareInfo.append(System.getenv("USERNAME"));
            hardwareInfo.append(System.getenv("HOMEDRIVE"));
            hardwareInfo.append(getDiskSerial());
            hardwareInfo.append(getMacAddress());
            String salted = hardwareInfo.toString() + "SCAMWARE_SALT_2024";
            String firstHash = DigestUtils.sha256Hex(salted);
            return DigestUtils.sha256Hex(firstHash + "SECOND_SALT");

        } catch (Exception e) {
            return DigestUtils.sha256Hex("fallback_hwid_" + System.currentTimeMillis());
        }
    }

    private static String getDiskSerial() {
        try {
            String os = System.getProperty("os.name").toLowerCase();
            if (os.contains("win")) {
                Process process = Runtime.getRuntime().exec(
                        new String[]{"wmic", "diskdrive", "get", "serialnumber"});
                java.util.Scanner scanner = new java.util.Scanner(process.getInputStream());
                StringBuilder result = new StringBuilder();
                while (scanner.hasNextLine()) {
                    String line = scanner.nextLine().trim();
                    if (!line.isEmpty() && !line.equals("SerialNumber")) {
                        result.append(line);
                    }
                }
                scanner.close();
                return result.toString();
            }
        } catch (Exception e) {
          
        }
        return "UNKNOWN_DISK";
    }

    private static String getMacAddress() {
        try {
            java.net.NetworkInterface network = java.net.NetworkInterface.getByInetAddress(
                    java.net.InetAddress.getLocalHost());
            if (network != null) {
                byte[] mac = network.getHardwareAddress();
                if (mac != null) {
                    StringBuilder sb = new StringBuilder();
                    for (int i = 0; i < mac.length; i++) {
                        sb.append(String.format("%02X", mac[i]));
                    }
                    return sb.toString();
                }
            }
        } catch (Exception e) {

        }
        return "UNKNOWN_MAC";
    }
}

UserProfile:
Expand Collapse Copy
package ru.scamware.core.loginutils.utils;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

@Setter
@Getter
@AllArgsConstructor
public class UserProfile {
    private final String name;
    private final String role;
    private final String expireDate;
    private final int accessLevel;
}


Auth:
Expand Collapse Copy
package ru.scamware.core.loginutils;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import lombok.Getter;
import ru.scamware.core.loginutils.utils.HWIDUtils;
import ru.scamware.core.loginutils.utils.UserProfile;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Base64;

@Getter
public class Auth {
    @Getter
    private static Auth instance = new Auth();

    private UserProfile userProfile;
    private boolean authenticated = false;
    private String authMessage = "";

    private static final String ENCRYPTION_KEY = "ScamWareSecureKey2024!";
    private static final String AUTH_URL = "https://pastebin.com/raw/ТУТ_ВАШ_PASTEBIN";
  

    public boolean authenticate() {
        try {
            authMessage = "Начало аутентификации...";

            String hwid = HWIDUtils.getHwid();
            authMessage = "HWID сгенерирован: " + hwid.substring(0, 8) + "...";

            String encryptedData = downloadAuthData();
            if (encryptedData == null || encryptedData.isEmpty()) {
                authMessage = "Ошибка: Не удалось загрузить данные аутентификации";
                return false;
            }
          
            String jsonData = decrypt(encryptedData);
            if (jsonData == null || jsonData.isEmpty()) {
                authMessage = "Ошибка: Неверный формат данных аутентификации";
                return false;
            }
          
            JsonObject root = JsonParser.parseString(jsonData).getAsJsonObject();
          
            if (!root.has("version") || root.get("version").getAsInt() != 1) {
                authMessage = "Ошибка: Неверная версия данных";
                return false;
            }
          
            JsonArray users = root.getAsJsonArray("users");
            for (JsonElement userElement : users) {
                JsonObject user = userElement.getAsJsonObject();

                if (user.get("hwid").getAsString().equals(hwid)) {
                    String username = user.get("username").getAsString();
                    String role = user.get("role").getAsString();
                    String expireDate = user.get("expire").getAsString();
                    int accessLevel = user.get("accessLevel").getAsInt();

                    if (isExpired(expireDate)) {
                        authMessage = "Ошибка: Ваша лицензия истекла " + expireDate;
                        return false;
                    }
                  
                    this.userProfile = new UserProfile(username, role, expireDate, accessLevel);
                    this.authenticated = true;
                    authMessage = "Успешная аутентификация! Добро пожаловать, " + username;
                    return true;
                }
            }

            authMessage = "Ошибка: Ваш HWID не найден в списке разрешенных";
            return false;

        } catch (Exception e) {
            authMessage = "Ошибка аутентификации: " + e.getMessage();
            return false;
        }
    }

    private String downloadAuthData() {
        try {
            URL url = new URL(AUTH_URL);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36");
            connection.setConnectTimeout(10000);
            connection.setReadTimeout(10000);

            if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
                throw new RuntimeException("HTTP error: " + connection.getResponseCode());
            }

            try (BufferedReader reader = new BufferedReader(
                    new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) {
                StringBuilder response = new StringBuilder();
                String line;
                while ((line = reader.readLine()) != null) {
                    response.append(line);
                }
                return response.toString().trim();
            }
        } catch (Exception e) {
            authMessage = "Ошибка загрузки: " + e.getMessage();
            return null;
        }
    }

    private String decrypt(String encryptedData) {
        try {
            MessageDigest sha = MessageDigest.getInstance("SHA-256");
            byte[] key = sha.digest(ENCRYPTION_KEY.getBytes(StandardCharsets.UTF_8));
            key = java.util.Arrays.copyOf(key, 16);

            SecretKeySpec secretKey = new SecretKeySpec(key, "AES");
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            cipher.init(Cipher.DECRYPT_MODE, secretKey);

            byte[] decodedData = Base64.getDecoder().decode(encryptedData);
            byte[] decryptedData = cipher.doFinal(decodedData);

            return new String(decryptedData, StandardCharsets.UTF_8);
        } catch (Exception e) {
            authMessage = "Ошибка дешифровки: " + e.getMessage();
            return null;
        }
    }

    private boolean isExpired(String expireDate) {
        try {
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            LocalDate expire = LocalDate.parse(expireDate, formatter);
            LocalDate today = LocalDate.now();
            return today.isAfter(expire);
        } catch (Exception e) {
            return true;
        }
    }

    public String getHwid() {
        return HWIDUtils.getHwid();
    }
}


AuthDataGenerator:
Expand Collapse Copy
package ru.scamware.core.loginutils;

import ru.scamware.core.loginutils.utils.HWIDUtils;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.util.Base64;

public class AuthDataGenerator {
    private static final String ENCRYPTION_KEY = "ScamWareSecureKey2024!";

    public static void main(String[] args) {
        String jsonData = """
            {
                "version": 1,
                "users": [
                    {
                        "hwid": "e546611fb1bcca5cd5c18d669db881ab41a0f5deb573f28955581fa5dd192ee1",
                        "username": "warkzy666",
                        "role": "dev",
                        "expire": "2038-06-06",
                        "accessLevel": 333
                    }
                ]
            }
            """;

        String encrypted = encrypt(jsonData);
        System.out.println("Данные для Pastebin:");
        System.out.println(encrypted);

        System.out.println("\\nТестовый HWID: " + HWIDUtils.getHwid());
    }

    private static String encrypt(String data) {
        try {
            MessageDigest sha = MessageDigest.getInstance("SHA-256");
            byte[] key = sha.digest(ENCRYPTION_KEY.getBytes(StandardCharsets.UTF_8));
            key = java.util.Arrays.copyOf(key, 16);

            SecretKeySpec secretKey = new SecretKeySpec(key, "AES");
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            cipher.init(Cipher.ENCRYPT_MODE, secretKey);

            byte[] encryptedData = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));
            return Base64.getEncoder().encodeToString(encryptedData);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}


ЭТО В MAIN КЛАСС!!!!:
Expand Collapse Copy
    @Getter
    static Main instance;

    @Getter
    private Auth auth;
    private boolean authenticated;

    EventManager eventManager = new EventManager();
    ModuleRepository moduleRepository;
    ModuleSwitcher moduleSwitcher;
    CommandRepository commandRepository;
    CommandDispatcher commandDispatcher;
    BoxESPRepository boxESPRepository = new BoxESPRepository(eventManager);
    MacroRepository macroRepository = new MacroRepository(eventManager);
    WayRepository wayRepository = new WayRepository(eventManager);
    RCTRepository RCTRepository = new RCTRepository(eventManager);
    ModuleProvider moduleProvider;
    DraggableRepository draggableRepository;
    DiscordManager discordManager;
    FileRepository fileRepository;
    FileController fileController;
    ScissorManager scissorManager = new ScissorManager();
    ClientInfoProvider clientInfoProvider;
    ListenerRepository listenerRepository;
    AttackPerpetrator attackPerpetrator = new AttackPerpetrator();
    boolean initialized;

    @Override
    public void onInitialize() {
        instance = this;

        initAuthentication();
        if (!authenticated) {
            System.err.println("Аутентификация провалена: " + auth.getAuthMessage());
            showAuthError();
            return;
        }

        System.out.println("Аутентификация успешна: " + auth.getAuthMessage());
        initClientInfoProvider();
        initModules();
        initDraggable();
        initFileManager();
        initCommands();
        initListeners();
        initDiscordRPC();
        SoundManager.init();
        MenuScreen menuScreen = new MenuScreen();
        menuScreen.initialize();


        initialized = true;
    }

    private void initAuthentication() {
        auth = Auth.getInstance();
        authenticated = auth.authenticate();
    }

    private void showAuthError() {
        System.err.println("=== ОШИБКА АУТЕНТИФИКАЦИИ ===");
        System.err.println(auth.getAuthMessage());
        System.err.println("Ваш HWID: " + auth.getHwid());
        System.err.println("=============================");
    }


ОБНОВИТЬ PROFILE!!!:
Expand Collapse Copy
package ru.scamware.core;

import lombok.Getter;
import lombok.experimental.UtilityClass;

@UtilityClass
public class Profile {
    @Getter
    private String username = getActualUsername();
    @Getter
    private String role = getActualRole();
    @Getter
    private String expire = getActualExpire();
    @Getter
    private int accessLevel = getActualAccessLevel();

    private String getActualUsername() {
        if (Main.getInstance() != null &&
                Main.getInstance().getAuth() != null &&
                Main.getInstance().getAuth().getUserProfile() != null) {
            return Main.getInstance().getAuth().getUserProfile().getName();
        }
        return "Unauthorized";
    }

    private String getActualRole() {
        if (Main.getInstance() != null &&
                Main.getInstance().getAuth() != null &&
                Main.getInstance().getAuth().getUserProfile() != null) {
            return Main.getInstance().getAuth().getUserProfile().getRole();
        }
        return "unauthorized";
    }

    private String getActualExpire() {
        if (Main.getInstance() != null &&
                Main.getInstance().getAuth() != null &&
                Main.getInstance().getAuth().getUserProfile() != null) {
            return Main.getInstance().getAuth().getUserProfile().getExpireDate();
        }
        return "1970-01-01";
    }

    private int getActualAccessLevel() {
        if (Main.getInstance() != null &&
                Main.getInstance().getAuth() != null &&
                Main.getInstance().getAuth().getUserProfile() != null) {
            return Main.getInstance().getAuth().getUserProfile().getAccessLevel();
        }
        return 0;
    }
}

ЭТО НЕ ЗАЩИТА!! ВАС ТАК И ТАК КРЯКНУТ! ЭТО ДЛЯ ТЕХ У КОГО НЕТ ДЕНЕГ НА НОРМАЛЬНУЮ ЗАЩИТУ! ВАШ ЧИТ ОСТАЕТСЯ ВСЕ РАВНО OPENSOURCE, ГРУБО ГОВОРЯ ЭТО ДЛЯ ТОГО ЧТО БЫ НЕ ИГРАЛИ ДРУГИЕ ТИПЫ С ВАШИМ ЧИТОМ!
Неплохо,можно взять как под псевдокод для изучения как работают лоадеры,или как под базу,только большую часть надо переписать.
 
HWIDUtils:
Expand Collapse Copy
package ru.scamware.core.loginutils.utils;

import org.apache.commons.codec.digest.DigestUtils;

public class HWIDUtils {

    public static String getHwid() {
        try {
            StringBuilder hardwareInfo = new StringBuilder();
            hardwareInfo.append(System.getenv("PROCESSOR_IDENTIFIER"));
            hardwareInfo.append(System.getenv("PROCESSOR_LEVEL"));
            hardwareInfo.append(System.getenv("PROCESSOR_REVISION"));
            hardwareInfo.append(System.getenv("PROCESSOR_ARCHITECTURE"));
            hardwareInfo.append(System.getenv("PROCESSOR_ARCHITEW6432"));
            hardwareInfo.append(System.getProperty("os.name"));
            hardwareInfo.append(System.getProperty("os.arch"));
            hardwareInfo.append(System.getProperty("os.version"));
            hardwareInfo.append(System.getenv("COMPUTERNAME"));
            hardwareInfo.append(System.getenv("USERNAME"));
            hardwareInfo.append(System.getenv("HOMEDRIVE"));
            hardwareInfo.append(getDiskSerial());
            hardwareInfo.append(getMacAddress());
            String salted = hardwareInfo.toString() + "SCAMWARE_SALT_2024";
            String firstHash = DigestUtils.sha256Hex(salted);
            return DigestUtils.sha256Hex(firstHash + "SECOND_SALT");

        } catch (Exception e) {
            return DigestUtils.sha256Hex("fallback_hwid_" + System.currentTimeMillis());
        }
    }

    private static String getDiskSerial() {
        try {
            String os = System.getProperty("os.name").toLowerCase();
            if (os.contains("win")) {
                Process process = Runtime.getRuntime().exec(
                        new String[]{"wmic", "diskdrive", "get", "serialnumber"});
                java.util.Scanner scanner = new java.util.Scanner(process.getInputStream());
                StringBuilder result = new StringBuilder();
                while (scanner.hasNextLine()) {
                    String line = scanner.nextLine().trim();
                    if (!line.isEmpty() && !line.equals("SerialNumber")) {
                        result.append(line);
                    }
                }
                scanner.close();
                return result.toString();
            }
        } catch (Exception e) {
          
        }
        return "UNKNOWN_DISK";
    }

    private static String getMacAddress() {
        try {
            java.net.NetworkInterface network = java.net.NetworkInterface.getByInetAddress(
                    java.net.InetAddress.getLocalHost());
            if (network != null) {
                byte[] mac = network.getHardwareAddress();
                if (mac != null) {
                    StringBuilder sb = new StringBuilder();
                    for (int i = 0; i < mac.length; i++) {
                        sb.append(String.format("%02X", mac[i]));
                    }
                    return sb.toString();
                }
            }
        } catch (Exception e) {

        }
        return "UNKNOWN_MAC";
    }
}

UserProfile:
Expand Collapse Copy
package ru.scamware.core.loginutils.utils;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

@Setter
@Getter
@AllArgsConstructor
public class UserProfile {
    private final String name;
    private final String role;
    private final String expireDate;
    private final int accessLevel;
}


Auth:
Expand Collapse Copy
package ru.scamware.core.loginutils;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import lombok.Getter;
import ru.scamware.core.loginutils.utils.HWIDUtils;
import ru.scamware.core.loginutils.utils.UserProfile;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Base64;

@Getter
public class Auth {
    @Getter
    private static Auth instance = new Auth();

    private UserProfile userProfile;
    private boolean authenticated = false;
    private String authMessage = "";

    private static final String ENCRYPTION_KEY = "ScamWareSecureKey2024!";
    private static final String AUTH_URL = "https://pastebin.com/raw/ТУТ_ВАШ_PASTEBIN";
  

    public boolean authenticate() {
        try {
            authMessage = "Начало аутентификации...";

            String hwid = HWIDUtils.getHwid();
            authMessage = "HWID сгенерирован: " + hwid.substring(0, 8) + "...";

            String encryptedData = downloadAuthData();
            if (encryptedData == null || encryptedData.isEmpty()) {
                authMessage = "Ошибка: Не удалось загрузить данные аутентификации";
                return false;
            }
          
            String jsonData = decrypt(encryptedData);
            if (jsonData == null || jsonData.isEmpty()) {
                authMessage = "Ошибка: Неверный формат данных аутентификации";
                return false;
            }
          
            JsonObject root = JsonParser.parseString(jsonData).getAsJsonObject();
          
            if (!root.has("version") || root.get("version").getAsInt() != 1) {
                authMessage = "Ошибка: Неверная версия данных";
                return false;
            }
          
            JsonArray users = root.getAsJsonArray("users");
            for (JsonElement userElement : users) {
                JsonObject user = userElement.getAsJsonObject();

                if (user.get("hwid").getAsString().equals(hwid)) {
                    String username = user.get("username").getAsString();
                    String role = user.get("role").getAsString();
                    String expireDate = user.get("expire").getAsString();
                    int accessLevel = user.get("accessLevel").getAsInt();

                    if (isExpired(expireDate)) {
                        authMessage = "Ошибка: Ваша лицензия истекла " + expireDate;
                        return false;
                    }
                  
                    this.userProfile = new UserProfile(username, role, expireDate, accessLevel);
                    this.authenticated = true;
                    authMessage = "Успешная аутентификация! Добро пожаловать, " + username;
                    return true;
                }
            }

            authMessage = "Ошибка: Ваш HWID не найден в списке разрешенных";
            return false;

        } catch (Exception e) {
            authMessage = "Ошибка аутентификации: " + e.getMessage();
            return false;
        }
    }

    private String downloadAuthData() {
        try {
            URL url = new URL(AUTH_URL);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36");
            connection.setConnectTimeout(10000);
            connection.setReadTimeout(10000);

            if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
                throw new RuntimeException("HTTP error: " + connection.getResponseCode());
            }

            try (BufferedReader reader = new BufferedReader(
                    new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) {
                StringBuilder response = new StringBuilder();
                String line;
                while ((line = reader.readLine()) != null) {
                    response.append(line);
                }
                return response.toString().trim();
            }
        } catch (Exception e) {
            authMessage = "Ошибка загрузки: " + e.getMessage();
            return null;
        }
    }

    private String decrypt(String encryptedData) {
        try {
            MessageDigest sha = MessageDigest.getInstance("SHA-256");
            byte[] key = sha.digest(ENCRYPTION_KEY.getBytes(StandardCharsets.UTF_8));
            key = java.util.Arrays.copyOf(key, 16);

            SecretKeySpec secretKey = new SecretKeySpec(key, "AES");
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            cipher.init(Cipher.DECRYPT_MODE, secretKey);

            byte[] decodedData = Base64.getDecoder().decode(encryptedData);
            byte[] decryptedData = cipher.doFinal(decodedData);

            return new String(decryptedData, StandardCharsets.UTF_8);
        } catch (Exception e) {
            authMessage = "Ошибка дешифровки: " + e.getMessage();
            return null;
        }
    }

    private boolean isExpired(String expireDate) {
        try {
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            LocalDate expire = LocalDate.parse(expireDate, formatter);
            LocalDate today = LocalDate.now();
            return today.isAfter(expire);
        } catch (Exception e) {
            return true;
        }
    }

    public String getHwid() {
        return HWIDUtils.getHwid();
    }
}


AuthDataGenerator:
Expand Collapse Copy
package ru.scamware.core.loginutils;

import ru.scamware.core.loginutils.utils.HWIDUtils;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.util.Base64;

public class AuthDataGenerator {
    private static final String ENCRYPTION_KEY = "ScamWareSecureKey2024!";

    public static void main(String[] args) {
        String jsonData = """
            {
                "version": 1,
                "users": [
                    {
                        "hwid": "e546611fb1bcca5cd5c18d669db881ab41a0f5deb573f28955581fa5dd192ee1",
                        "username": "warkzy666",
                        "role": "dev",
                        "expire": "2038-06-06",
                        "accessLevel": 333
                    }
                ]
            }
            """;

        String encrypted = encrypt(jsonData);
        System.out.println("Данные для Pastebin:");
        System.out.println(encrypted);

        System.out.println("\\nТестовый HWID: " + HWIDUtils.getHwid());
    }

    private static String encrypt(String data) {
        try {
            MessageDigest sha = MessageDigest.getInstance("SHA-256");
            byte[] key = sha.digest(ENCRYPTION_KEY.getBytes(StandardCharsets.UTF_8));
            key = java.util.Arrays.copyOf(key, 16);

            SecretKeySpec secretKey = new SecretKeySpec(key, "AES");
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            cipher.init(Cipher.ENCRYPT_MODE, secretKey);

            byte[] encryptedData = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));
            return Base64.getEncoder().encodeToString(encryptedData);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}


ЭТО В MAIN КЛАСС!!!!:
Expand Collapse Copy
    @Getter
    static Main instance;

    @Getter
    private Auth auth;
    private boolean authenticated;

    EventManager eventManager = new EventManager();
    ModuleRepository moduleRepository;
    ModuleSwitcher moduleSwitcher;
    CommandRepository commandRepository;
    CommandDispatcher commandDispatcher;
    BoxESPRepository boxESPRepository = new BoxESPRepository(eventManager);
    MacroRepository macroRepository = new MacroRepository(eventManager);
    WayRepository wayRepository = new WayRepository(eventManager);
    RCTRepository RCTRepository = new RCTRepository(eventManager);
    ModuleProvider moduleProvider;
    DraggableRepository draggableRepository;
    DiscordManager discordManager;
    FileRepository fileRepository;
    FileController fileController;
    ScissorManager scissorManager = new ScissorManager();
    ClientInfoProvider clientInfoProvider;
    ListenerRepository listenerRepository;
    AttackPerpetrator attackPerpetrator = new AttackPerpetrator();
    boolean initialized;

    @Override
    public void onInitialize() {
        instance = this;

        initAuthentication();
        if (!authenticated) {
            System.err.println("Аутентификация провалена: " + auth.getAuthMessage());
            showAuthError();
            return;
        }

        System.out.println("Аутентификация успешна: " + auth.getAuthMessage());
        initClientInfoProvider();
        initModules();
        initDraggable();
        initFileManager();
        initCommands();
        initListeners();
        initDiscordRPC();
        SoundManager.init();
        MenuScreen menuScreen = new MenuScreen();
        menuScreen.initialize();


        initialized = true;
    }

    private void initAuthentication() {
        auth = Auth.getInstance();
        authenticated = auth.authenticate();
    }

    private void showAuthError() {
        System.err.println("=== ОШИБКА АУТЕНТИФИКАЦИИ ===");
        System.err.println(auth.getAuthMessage());
        System.err.println("Ваш HWID: " + auth.getHwid());
        System.err.println("=============================");
    }


ОБНОВИТЬ PROFILE!!!:
Expand Collapse Copy
package ru.scamware.core;

import lombok.Getter;
import lombok.experimental.UtilityClass;

@UtilityClass
public class Profile {
    @Getter
    private String username = getActualUsername();
    @Getter
    private String role = getActualRole();
    @Getter
    private String expire = getActualExpire();
    @Getter
    private int accessLevel = getActualAccessLevel();

    private String getActualUsername() {
        if (Main.getInstance() != null &&
                Main.getInstance().getAuth() != null &&
                Main.getInstance().getAuth().getUserProfile() != null) {
            return Main.getInstance().getAuth().getUserProfile().getName();
        }
        return "Unauthorized";
    }

    private String getActualRole() {
        if (Main.getInstance() != null &&
                Main.getInstance().getAuth() != null &&
                Main.getInstance().getAuth().getUserProfile() != null) {
            return Main.getInstance().getAuth().getUserProfile().getRole();
        }
        return "unauthorized";
    }

    private String getActualExpire() {
        if (Main.getInstance() != null &&
                Main.getInstance().getAuth() != null &&
                Main.getInstance().getAuth().getUserProfile() != null) {
            return Main.getInstance().getAuth().getUserProfile().getExpireDate();
        }
        return "1970-01-01";
    }

    private int getActualAccessLevel() {
        if (Main.getInstance() != null &&
                Main.getInstance().getAuth() != null &&
                Main.getInstance().getAuth().getUserProfile() != null) {
            return Main.getInstance().getAuth().getUserProfile().getAccessLevel();
        }
        return 0;
    }
}

ЭТО НЕ ЗАЩИТА!! ВАС ТАК И ТАК КРЯКНУТ! ЭТО ДЛЯ ТЕХ У КОГО НЕТ ДЕНЕГ НА НОРМАЛЬНУЮ ЗАЩИТУ! ВАШ ЧИТ ОСТАЕТСЯ ВСЕ РАВНО OPENSOURCE, ГРУБО ГОВОРЯ ЭТО ДЛЯ ТОГО ЧТО БЫ НЕ ИГРАЛИ ДРУГИЕ ТИПЫ С ВАШИМ ЧИТОМ!
это что брух, не проще было бы этот весь щиткод засунуть в 1 класс и оптимизировать до 50-60 строк?, потом вызвать в мейне и все, смысл добавлять по 10 классов?
 
это что брух, не проще было бы этот весь щиткод засунуть в 1 класс и оптимизировать до 50-60 строк?, потом вызвать в мейне и все, смысл добавлять по 10 классов?
хз, будто так типы схавать должны
 
HWIDUtils:
Expand Collapse Copy
package ru.scamware.core.loginutils.utils;

import org.apache.commons.codec.digest.DigestUtils;

public class HWIDUtils {

    public static String getHwid() {
        try {
            StringBuilder hardwareInfo = new StringBuilder();
            hardwareInfo.append(System.getenv("PROCESSOR_IDENTIFIER"));
            hardwareInfo.append(System.getenv("PROCESSOR_LEVEL"));
            hardwareInfo.append(System.getenv("PROCESSOR_REVISION"));
            hardwareInfo.append(System.getenv("PROCESSOR_ARCHITECTURE"));
            hardwareInfo.append(System.getenv("PROCESSOR_ARCHITEW6432"));
            hardwareInfo.append(System.getProperty("os.name"));
            hardwareInfo.append(System.getProperty("os.arch"));
            hardwareInfo.append(System.getProperty("os.version"));
            hardwareInfo.append(System.getenv("COMPUTERNAME"));
            hardwareInfo.append(System.getenv("USERNAME"));
            hardwareInfo.append(System.getenv("HOMEDRIVE"));
            hardwareInfo.append(getDiskSerial());
            hardwareInfo.append(getMacAddress());
            String salted = hardwareInfo.toString() + "SCAMWARE_SALT_2024";
            String firstHash = DigestUtils.sha256Hex(salted);
            return DigestUtils.sha256Hex(firstHash + "SECOND_SALT");

        } catch (Exception e) {
            return DigestUtils.sha256Hex("fallback_hwid_" + System.currentTimeMillis());
        }
    }

    private static String getDiskSerial() {
        try {
            String os = System.getProperty("os.name").toLowerCase();
            if (os.contains("win")) {
                Process process = Runtime.getRuntime().exec(
                        new String[]{"wmic", "diskdrive", "get", "serialnumber"});
                java.util.Scanner scanner = new java.util.Scanner(process.getInputStream());
                StringBuilder result = new StringBuilder();
                while (scanner.hasNextLine()) {
                    String line = scanner.nextLine().trim();
                    if (!line.isEmpty() && !line.equals("SerialNumber")) {
                        result.append(line);
                    }
                }
                scanner.close();
                return result.toString();
            }
        } catch (Exception e) {
          
        }
        return "UNKNOWN_DISK";
    }

    private static String getMacAddress() {
        try {
            java.net.NetworkInterface network = java.net.NetworkInterface.getByInetAddress(
                    java.net.InetAddress.getLocalHost());
            if (network != null) {
                byte[] mac = network.getHardwareAddress();
                if (mac != null) {
                    StringBuilder sb = new StringBuilder();
                    for (int i = 0; i < mac.length; i++) {
                        sb.append(String.format("%02X", mac[i]));
                    }
                    return sb.toString();
                }
            }
        } catch (Exception e) {

        }
        return "UNKNOWN_MAC";
    }
}

UserProfile:
Expand Collapse Copy
package ru.scamware.core.loginutils.utils;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

@Setter
@Getter
@AllArgsConstructor
public class UserProfile {
    private final String name;
    private final String role;
    private final String expireDate;
    private final int accessLevel;
}


Auth:
Expand Collapse Copy
package ru.scamware.core.loginutils;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import lombok.Getter;
import ru.scamware.core.loginutils.utils.HWIDUtils;
import ru.scamware.core.loginutils.utils.UserProfile;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Base64;

@Getter
public class Auth {
    @Getter
    private static Auth instance = new Auth();

    private UserProfile userProfile;
    private boolean authenticated = false;
    private String authMessage = "";

    private static final String ENCRYPTION_KEY = "ScamWareSecureKey2024!";
    private static final String AUTH_URL = "https://pastebin.com/raw/ТУТ_ВАШ_PASTEBIN";
  

    public boolean authenticate() {
        try {
            authMessage = "Начало аутентификации...";

            String hwid = HWIDUtils.getHwid();
            authMessage = "HWID сгенерирован: " + hwid.substring(0, 8) + "...";

            String encryptedData = downloadAuthData();
            if (encryptedData == null || encryptedData.isEmpty()) {
                authMessage = "Ошибка: Не удалось загрузить данные аутентификации";
                return false;
            }
          
            String jsonData = decrypt(encryptedData);
            if (jsonData == null || jsonData.isEmpty()) {
                authMessage = "Ошибка: Неверный формат данных аутентификации";
                return false;
            }
          
            JsonObject root = JsonParser.parseString(jsonData).getAsJsonObject();
          
            if (!root.has("version") || root.get("version").getAsInt() != 1) {
                authMessage = "Ошибка: Неверная версия данных";
                return false;
            }
          
            JsonArray users = root.getAsJsonArray("users");
            for (JsonElement userElement : users) {
                JsonObject user = userElement.getAsJsonObject();

                if (user.get("hwid").getAsString().equals(hwid)) {
                    String username = user.get("username").getAsString();
                    String role = user.get("role").getAsString();
                    String expireDate = user.get("expire").getAsString();
                    int accessLevel = user.get("accessLevel").getAsInt();

                    if (isExpired(expireDate)) {
                        authMessage = "Ошибка: Ваша лицензия истекла " + expireDate;
                        return false;
                    }
                  
                    this.userProfile = new UserProfile(username, role, expireDate, accessLevel);
                    this.authenticated = true;
                    authMessage = "Успешная аутентификация! Добро пожаловать, " + username;
                    return true;
                }
            }

            authMessage = "Ошибка: Ваш HWID не найден в списке разрешенных";
            return false;

        } catch (Exception e) {
            authMessage = "Ошибка аутентификации: " + e.getMessage();
            return false;
        }
    }

    private String downloadAuthData() {
        try {
            URL url = new URL(AUTH_URL);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36");
            connection.setConnectTimeout(10000);
            connection.setReadTimeout(10000);

            if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
                throw new RuntimeException("HTTP error: " + connection.getResponseCode());
            }

            try (BufferedReader reader = new BufferedReader(
                    new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) {
                StringBuilder response = new StringBuilder();
                String line;
                while ((line = reader.readLine()) != null) {
                    response.append(line);
                }
                return response.toString().trim();
            }
        } catch (Exception e) {
            authMessage = "Ошибка загрузки: " + e.getMessage();
            return null;
        }
    }

    private String decrypt(String encryptedData) {
        try {
            MessageDigest sha = MessageDigest.getInstance("SHA-256");
            byte[] key = sha.digest(ENCRYPTION_KEY.getBytes(StandardCharsets.UTF_8));
            key = java.util.Arrays.copyOf(key, 16);

            SecretKeySpec secretKey = new SecretKeySpec(key, "AES");
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            cipher.init(Cipher.DECRYPT_MODE, secretKey);

            byte[] decodedData = Base64.getDecoder().decode(encryptedData);
            byte[] decryptedData = cipher.doFinal(decodedData);

            return new String(decryptedData, StandardCharsets.UTF_8);
        } catch (Exception e) {
            authMessage = "Ошибка дешифровки: " + e.getMessage();
            return null;
        }
    }

    private boolean isExpired(String expireDate) {
        try {
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            LocalDate expire = LocalDate.parse(expireDate, formatter);
            LocalDate today = LocalDate.now();
            return today.isAfter(expire);
        } catch (Exception e) {
            return true;
        }
    }

    public String getHwid() {
        return HWIDUtils.getHwid();
    }
}


AuthDataGenerator:
Expand Collapse Copy
package ru.scamware.core.loginutils;

import ru.scamware.core.loginutils.utils.HWIDUtils;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.util.Base64;

public class AuthDataGenerator {
    private static final String ENCRYPTION_KEY = "ScamWareSecureKey2024!";

    public static void main(String[] args) {
        String jsonData = """
            {
                "version": 1,
                "users": [
                    {
                        "hwid": "e546611fb1bcca5cd5c18d669db881ab41a0f5deb573f28955581fa5dd192ee1",
                        "username": "warkzy666",
                        "role": "dev",
                        "expire": "2038-06-06",
                        "accessLevel": 333
                    }
                ]
            }
            """;

        String encrypted = encrypt(jsonData);
        System.out.println("Данные для Pastebin:");
        System.out.println(encrypted);

        System.out.println("\\nТестовый HWID: " + HWIDUtils.getHwid());
    }

    private static String encrypt(String data) {
        try {
            MessageDigest sha = MessageDigest.getInstance("SHA-256");
            byte[] key = sha.digest(ENCRYPTION_KEY.getBytes(StandardCharsets.UTF_8));
            key = java.util.Arrays.copyOf(key, 16);

            SecretKeySpec secretKey = new SecretKeySpec(key, "AES");
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            cipher.init(Cipher.ENCRYPT_MODE, secretKey);

            byte[] encryptedData = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));
            return Base64.getEncoder().encodeToString(encryptedData);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}


ЭТО В MAIN КЛАСС!!!!:
Expand Collapse Copy
    @Getter
    static Main instance;

    @Getter
    private Auth auth;
    private boolean authenticated;

    EventManager eventManager = new EventManager();
    ModuleRepository moduleRepository;
    ModuleSwitcher moduleSwitcher;
    CommandRepository commandRepository;
    CommandDispatcher commandDispatcher;
    BoxESPRepository boxESPRepository = new BoxESPRepository(eventManager);
    MacroRepository macroRepository = new MacroRepository(eventManager);
    WayRepository wayRepository = new WayRepository(eventManager);
    RCTRepository RCTRepository = new RCTRepository(eventManager);
    ModuleProvider moduleProvider;
    DraggableRepository draggableRepository;
    DiscordManager discordManager;
    FileRepository fileRepository;
    FileController fileController;
    ScissorManager scissorManager = new ScissorManager();
    ClientInfoProvider clientInfoProvider;
    ListenerRepository listenerRepository;
    AttackPerpetrator attackPerpetrator = new AttackPerpetrator();
    boolean initialized;

    @Override
    public void onInitialize() {
        instance = this;

        initAuthentication();
        if (!authenticated) {
            System.err.println("Аутентификация провалена: " + auth.getAuthMessage());
            showAuthError();
            return;
        }

        System.out.println("Аутентификация успешна: " + auth.getAuthMessage());
        initClientInfoProvider();
        initModules();
        initDraggable();
        initFileManager();
        initCommands();
        initListeners();
        initDiscordRPC();
        SoundManager.init();
        MenuScreen menuScreen = new MenuScreen();
        menuScreen.initialize();


        initialized = true;
    }

    private void initAuthentication() {
        auth = Auth.getInstance();
        authenticated = auth.authenticate();
    }

    private void showAuthError() {
        System.err.println("=== ОШИБКА АУТЕНТИФИКАЦИИ ===");
        System.err.println(auth.getAuthMessage());
        System.err.println("Ваш HWID: " + auth.getHwid());
        System.err.println("=============================");
    }


ОБНОВИТЬ PROFILE!!!:
Expand Collapse Copy
package ru.scamware.core;

import lombok.Getter;
import lombok.experimental.UtilityClass;

@UtilityClass
public class Profile {
    @Getter
    private String username = getActualUsername();
    @Getter
    private String role = getActualRole();
    @Getter
    private String expire = getActualExpire();
    @Getter
    private int accessLevel = getActualAccessLevel();

    private String getActualUsername() {
        if (Main.getInstance() != null &&
                Main.getInstance().getAuth() != null &&
                Main.getInstance().getAuth().getUserProfile() != null) {
            return Main.getInstance().getAuth().getUserProfile().getName();
        }
        return "Unauthorized";
    }

    private String getActualRole() {
        if (Main.getInstance() != null &&
                Main.getInstance().getAuth() != null &&
                Main.getInstance().getAuth().getUserProfile() != null) {
            return Main.getInstance().getAuth().getUserProfile().getRole();
        }
        return "unauthorized";
    }

    private String getActualExpire() {
        if (Main.getInstance() != null &&
                Main.getInstance().getAuth() != null &&
                Main.getInstance().getAuth().getUserProfile() != null) {
            return Main.getInstance().getAuth().getUserProfile().getExpireDate();
        }
        return "1970-01-01";
    }

    private int getActualAccessLevel() {
        if (Main.getInstance() != null &&
                Main.getInstance().getAuth() != null &&
                Main.getInstance().getAuth().getUserProfile() != null) {
            return Main.getInstance().getAuth().getUserProfile().getAccessLevel();
        }
        return 0;
    }
}

ЭТО НЕ ЗАЩИТА!! ВАС ТАК И ТАК КРЯКНУТ! ЭТО ДЛЯ ТЕХ У КОГО НЕТ ДЕНЕГ НА НОРМАЛЬНУЮ ЗАЩИТУ! ВАШ ЧИТ ОСТАЕТСЯ ВСЕ РАВНО OPENSOURCE, ГРУБО ГОВОРЯ ЭТО ДЛЯ ТОГО ЧТО БЫ НЕ ИГРАЛИ ДРУГИЕ ТИПЫ С ВАШИМ ЧИТОМ!
это что за пиздец ебаный:roflanEbalo:
 
Назад
Сверху Снизу