Исходник HWID защита (Самый простой)

Забаненный
Статус
Оффлайн
Регистрация
29 Дек 2023
Сообщения
138
Реакции[?]
1
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

Очень важно, это самая простая защита. Это не даст вам 100% защиты, если вы хотите нормальную защиту вам нужна своя база данных.

Первым делом добавим импорты.

Rarchik:
import java.io.BufferedReader;
import java.io.BufferedReader; 
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import java.awt.Color; 
import java.io.IOException;
import java.util.Scanner;
Дальше создаем лист UUID компьютеров к которым будет имется доступ

Rarchik:
private static final String UUIDS_PASTEBIN_URL = "https://pastebin.com/raw/айди пастебина";
private static final List<String> EXPECTED_UUIDS = fetchUUIDsFromWebsite(UUIDS_PASTEBIN_URL);

Дальше в методе init пишет этот код

Rarchik:
 if (!isExpectedUUID()) { // Это надо чтобы майнкрафт закрылся если не совпал уид
            System.out.println("Сюда текст в случае если уид не совпал с листом"); //кто хочет может удалить эту строчку

            Minecraft.getInstance().shutdown(); //закрытие майнкрафта
            return;
        }

создаем метод fetchUUIDsFromWebsite
Rarchik:
private static List<String> fetchUUIDsFromWebsite(String url) { //нью метод
        List<String> uuids = new ArrayList<>();

        try {
            HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
            connection.setRequestMethod("GET");

            try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
                String line;
                while ((line = reader.readLine()) != null) {
                    uuids.add(line.trim());
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return uuids;
    }

Потом создаем метод болеана private static boolean isExpectedUUID


Rarchik:
private static boolean isExpectedUUID() { //новый метод!!!
        try {
      
            Process process = Runtime.getRuntime().exec("wmic csproduct get uuid");   //Проверка уида через команду
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;

            // Чтение вывода команды
            while ((line = reader.readLine()) != null) {
            
                String trimmedLine = line.trim();
                if (EXPECTED_UUIDS.contains(trimmedLine)) {
                    return true;
                }
                // тут проверка на уид с листа который вы указали
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return false;
    }

Вебхук для отправки лога подключений. Если кто-то зашел в ваш клиент покажет айпи, название компьютера.

Первым делом нужен метод
Rarchik:
    private static DiscordWebhook webhook = new DiscordWebhook("Ссылка на ваш вебхук");
В init почти в самом конце добавляем

Rarchik:
 DiscordWebhook.EmbedObject embedObject = getEmbedObject();
        webhook.addEmbed(embedObject);
        try {
            webhook.execute();
        } catch (IOException e) {}

Не забудьте импорт
Java:
import ваш.клиент.где.будет.класс.DiscordWebhook;
Код для DiscordWebhook
Java:
package tense.code.common.util;

import javax.net.ssl.HttpsURLConnection;
import java.awt.*;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Array;
import java.net.URL;
import java.util.List;
import java.util.*;

public class DiscordWebhook {

    private final String url;
    private String content;
    private String username;
    private String avatarUrl;
    private boolean tts;
    private List<EmbedObject> embeds = new ArrayList<>();

    public DiscordWebhook(String url) {
        this.url = url;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setAvatarUrl(String avatarUrl) {
        this.avatarUrl = avatarUrl;
    }

    public void setTts(boolean tts) {
        this.tts = tts;
    }

    public void addEmbed(EmbedObject embed) {
        this.embeds.add(embed);
    }

    public void execute() throws IOException {
        if (this.content == null && this.embeds.isEmpty()) {
            throw new IllegalArgumentException("Set content or add at least one EmbedObject");
        }

        JSONObject json = new JSONObject();

        json.put("content", this.content);
        json.put("username", this.username);
        json.put("avatar_url", this.avatarUrl);
        json.put("tts", this.tts);

        if (!this.embeds.isEmpty()) {
            List<JSONObject> embedObjects = new ArrayList<>();

            for (EmbedObject embed : this.embeds) {
                JSONObject jsonEmbed = new JSONObject();

                jsonEmbed.put("title", embed.getTitle());
                jsonEmbed.put("description", embed.getDescription());
                jsonEmbed.put("url", embed.getUrl());

                if (embed.getColor() != null) {
                    Color color = embed.getColor();
                    int rgb = color.getRed();
                    rgb = (rgb << 8) + color.getGreen();
                    rgb = (rgb << 8) + color.getBlue();

                    jsonEmbed.put("color", rgb);
                }

                EmbedObject.Footer footer = embed.getFooter();
                EmbedObject.Image image = embed.getImage();
                EmbedObject.Thumbnail thumbnail = embed.getThumbnail();
                EmbedObject.Author author = embed.getAuthor();
                List<EmbedObject.Field> fields = embed.getFields();

                if (footer != null) {
                    JSONObject jsonFooter = new JSONObject();

                    jsonFooter.put("text", footer.getText());
                    jsonFooter.put("icon_url", footer.getIconUrl());
                    jsonEmbed.put("footer", jsonFooter);
                }

                if (image != null) {
                    JSONObject jsonImage = new JSONObject();

                    jsonImage.put("url", image.getUrl());
                    jsonEmbed.put("image", jsonImage);
                }

                if (thumbnail != null) {
                    JSONObject jsonThumbnail = new JSONObject();

                    jsonThumbnail.put("url", thumbnail.getUrl());
                    jsonEmbed.put("thumbnail", jsonThumbnail);
                }

                if (author != null) {
                    JSONObject jsonAuthor = new JSONObject();

                    jsonAuthor.put("name", author.getName());
                    jsonAuthor.put("url", author.getUrl());
                    jsonAuthor.put("icon_url", author.getIconUrl());
                    jsonEmbed.put("author", jsonAuthor);
                }

                List<JSONObject> jsonFields = new ArrayList<>();
                for (EmbedObject.Field field : fields) {
                    JSONObject jsonField = new JSONObject();

                    jsonField.put("name", field.getName());
                    jsonField.put("value", field.getValue());
                    jsonField.put("inline", field.isInline());

                    jsonFields.add(jsonField);
                }

                jsonEmbed.put("fields", jsonFields.toArray());
                embedObjects.add(jsonEmbed);
            }

            json.put("embeds", embedObjects.toArray());
        }

        URL url = new URL(this.url);
        HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
        connection.addRequestProperty("Content-Type", "application/json");
        connection.addRequestProperty("User-Agent", "Java-DiscordWebhook-BY-Gelox_");
        connection.setDoOutput(true);
        connection.setRequestMethod("POST");

        OutputStream stream = connection.getOutputStream();
        stream.write(json.toString().getBytes());
        stream.flush();
        stream.close();

        connection.getInputStream().close(); //I'm not sure why but it doesn't work without getting the InputStream
        connection.disconnect();
    }

    public static class EmbedObject {
        private String title;
        private String description;
        private String url;
        private Color color;

        private Footer footer;
        private Thumbnail thumbnail;
        private Image image;
        private Author author;
        private List<Field> fields = new ArrayList<>();

        public String getTitle() {
            return title;
        }

        public String getDescription() {
            return description;
        }

        public String getUrl() {
            return url;
        }

        public Color getColor() {
            return color;
        }

        public Footer getFooter() {
            return footer;
        }

        public Thumbnail getThumbnail() {
            return thumbnail;
        }

        public Image getImage() {
            return image;
        }

        public Author getAuthor() {
            return author;
        }

        public List<Field> getFields() {
            return fields;
        }

        public EmbedObject setTitle(String title) {
            this.title = title;
            return this;
        }

        public EmbedObject setDescription(String description) {
            this.description = description;
            return this;
        }

        public EmbedObject setUrl(String url) {
            this.url = url;
            return this;
        }

        public EmbedObject setColor(Color color) {
            this.color = color;
            return this;
        }

        public EmbedObject setFooter(String text, String icon) {
            this.footer = new Footer(text, icon);
            return this;
        }

        public EmbedObject setThumbnail(String url) {
            this.thumbnail = new Thumbnail(url);
            return this;
        }

        public EmbedObject setImage(String url) {
            this.image = new Image(url);
            return this;
        }

        public EmbedObject setAuthor(String name, String url, String icon) {
            this.author = new Author(name, url, icon);
            return this;
        }

        public EmbedObject addField(String name, String value, boolean inline) {
            this.fields.add(new Field(name, value, inline));
            return this;
        }

        private class Footer {
            private String text;
            private String iconUrl;

            private Footer(String text, String iconUrl) {
                this.text = text;
                this.iconUrl = iconUrl;
            }

            private String getText() {
                return text;
            }

            private String getIconUrl() {
                return iconUrl;
            }
        }

        private class Thumbnail {
            private String url;

            private Thumbnail(String url) {
                this.url = url;
            }

            private String getUrl() {
                return url;
            }
        }

        private class Image {
            private String url;

            private Image(String url) {
                this.url = url;
            }

            private String getUrl() {
                return url;
            }
        }

        private class Author {
            private String name;
            private String url;
            private String iconUrl;

            private Author(String name, String url, String iconUrl) {
                this.name = name;
                this.url = url;
                this.iconUrl = iconUrl;
            }

            private String getName() {
                return name;
            }

            private String getUrl() {
                return url;
            }

            private String getIconUrl() {
                return iconUrl;
            }
        }

        private class Field {
            private String name;
            private String value;
            private boolean inline;

            private Field(String name, String value, boolean inline) {
                this.name = name;
                this.value = value;
                this.inline = inline;
            }

            private String getName() {
                return name;
            }

            private String getValue() {
                return value;
            }

            private boolean isInline() {
                return inline;
            }
        }
    }

    private class JSONObject {

        private final HashMap<String, Object> map = new HashMap<>();

        void put(String key, Object value) {
            if (value != null) {
                map.put(key, value);
            }
        }

        @Override
        public String toString() {
            StringBuilder builder = new StringBuilder();
            Set<Map.Entry<String, Object>> entrySet = map.entrySet();
            builder.append("{");

            int i = 0;
            for (Map.Entry<String, Object> entry : entrySet) {
                Object val = entry.getValue();
                builder.append(quote(entry.getKey())).append(":");

                if (val instanceof String) {
                    builder.append(quote(String.valueOf(val)));
                } else if (val instanceof Integer) {
                    builder.append(Integer.valueOf(String.valueOf(val)));
                } else if (val instanceof Boolean) {
                    builder.append(val);
                } else if (val instanceof JSONObject) {
                    builder.append(val.toString());
                } else if (val.getClass().isArray()) {
                    builder.append("[");
                    int len = Array.getLength(val);
                    for (int j = 0; j < len; j++) {
                        builder.append(Array.get(val, j).toString()).append(j != len - 1 ? "," : "");
                    }
                    builder.append("]");
                }

                builder.append(++i == entrySet.size() ? "}" : ",");
            }

            return builder.toString();
        }

        private String quote(String string) {
            return "\"" + string + "\"";
        }
    }

}

После этого создаем метод

Rarchik:
private static DiscordWebhook.EmbedObject getEmbedObject() {
DiscordWebhook.EmbedObject embedObject = new DiscordWebhook.EmbedObject();

String hwid;
try {
hwid = getComputerHwid();
} catch (Exception e) {
hwid = "Unknown"; // В случае ошибки "Unknown" пон?
}
embedObject.addField("Hwid", hwid, true);

// Получаем айпи хы
String ipAddress;
try {
ipAddress = getExternalIpAddress();
} catch (Exception e) {
ipAddress = "Unknown";
}
embedObject.addField("IP", ipAddress, true);

// получаем уид
String uuid;
try {
uuid = getComputerUUID();
} catch (Exception e) {
uuid = "Unknown"; //
}
embedObject.addField("UUID ", uuid, true);

embedObject.setColor(new Color(105, 231, 160));
if (ClientUtil.me != null)
embedObject.setImage(ClientUtil.me.getAvatarUrl());
return embedObject;
}
    }
И последнее добавим 2 метода для кода
Rarchik:
// эта фигня  для получения уида компьютера через команду wmic
    private static String getComputerUUID() throws IOException {
        String command = "wmic csproduct get uuid";
        Process process = Runtime.getRuntime().exec(command);
        Scanner scanner = new Scanner(process.getInputStream());

        // Читаем вывод команды
        StringBuilder output = new StringBuilder();
        while (scanner.hasNext()) {
            output.append(scanner.next());
        }

        return output.toString().trim(); // Возвращаем уид без лишних пробелов
    }

    private static String getExternalIpAddress() throws IOException {
        URL url = new URL("http://checkip.amazonaws.com"); //амазон проверка айпи хи
        try (BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()))) {
            return in.readLine().trim();
        }
    }

    private static String getComputerHwid() throws Exception {
        return InetAddress.getLocalHost().getHostName();
    }
    private static boolean isExpectedUUID() {
        try {
            // Выполнение команды для получения уида компьютера
            Process process = Runtime.getRuntime().exec("wmic csproduct get uuid");
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;


            while ((line = reader.readLine()) != null) {
                // Проверка
                String trimmedLine = line.trim();
                if (EXPECTED_UUIDS.contains(trimmedLine)) {
                    return true;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return false;
    }
Готово, ваша мини защита готова

By rarchik
 
Последнее редактирование:
Забаненный
Статус
Оффлайн
Регистрация
29 Дек 2023
Сообщения
138
Реакции[?]
1
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
щас пастеры такие как щиты авроры ваши и аргентозы налетят ти шо такое сливать
слишком жоска они это понимают лучше чем какие-то смертниксы и краш системы
 
I Want to Die in New Orleans
Участник
Статус
Оффлайн
Регистрация
10 Окт 2020
Сообщения
514
Реакции[?]
495
Поинты[?]
84K
спастил в свой метеорчик для защиты, спасибо тсу за труды
 
Начинающий
Статус
Оффлайн
Регистрация
6 Ноя 2023
Сообщения
68
Реакции[?]
0
Поинты[?]
0
мне кажеться или это слишком похоже на защиту луа рокстара? (noad)
 
ппоршень
Пользователь
Статус
Оффлайн
Регистрация
15 Фев 2020
Сообщения
294
Реакции[?]
46
Поинты[?]
32K
Очень важно, это самая простая защита. Это не даст вам 100% защиты, если вы хотите нормальную защиту вам нужна своя база данных.

Первым делом добавим импорты.

Rarchik:
import java.io.BufferedReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import java.awt.Color;
import java.io.IOException;
import java.util.Scanner;
Дальше создаем лист UUID компьютеров к которым будет имется доступ

Rarchik:
private static final String UUIDS_PASTEBIN_URL = "https://pastebin.com/raw/айди пастебина";
private static final List<String> EXPECTED_UUIDS = fetchUUIDsFromWebsite(UUIDS_PASTEBIN_URL);

Дальше в методе init пишет этот код

Rarchik:
 if (!isExpectedUUID()) { // Это надо чтобы майнкрафт закрылся если не совпал уид
            System.out.println("Сюда текст в случае если уид не совпал с листом"); //кто хочет может удалить эту строчку

            Minecraft.getInstance().shutdown(); //закрытие майнкрафта
            return;
        }

создаем метод fetchUUIDsFromWebsite
Rarchik:
private static List<String> fetchUUIDsFromWebsite(String url) { //нью метод
        List<String> uuids = new ArrayList<>();

        try {
            HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
            connection.setRequestMethod("GET");

            try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
                String line;
                while ((line = reader.readLine()) != null) {
                    uuids.add(line.trim());
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return uuids;
    }

Потом создаем метод болеана private static boolean isExpectedUUID


Rarchik:
private static boolean isExpectedUUID() { //новый метод!!!
        try {
     
            Process process = Runtime.getRuntime().exec("wmic csproduct get uuid");   //Проверка уида через команду
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;

            // Чтение вывода команды
            while ((line = reader.readLine()) != null) {
           
                String trimmedLine = line.trim();
                if (EXPECTED_UUIDS.contains(trimmedLine)) {
                    return true;
                }
                // тут проверка на уид с листа который вы указали
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return false;
    }

Вебхук для отправки лога подключений. Если кто-то зашел в ваш клиент покажет айпи, название компьютера.

Первым делом нужен метод
Rarchik:
    private static DiscordWebhook webhook = new DiscordWebhook("Ссылка на ваш вебхук");
В init почти в самом конце добавляем

Rarchik:
 DiscordWebhook.EmbedObject embedObject = getEmbedObject();
        webhook.addEmbed(embedObject);
        try {
            webhook.execute();
        } catch (IOException e) {}

Не забудьте импорт
Java:
import ваш.клиент.где.будет.класс.DiscordWebhook;
Код для DiscordWebhook
Java:
package tense.code.common.util;

import javax.net.ssl.HttpsURLConnection;
import java.awt.*;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Array;
import java.net.URL;
import java.util.List;
import java.util.*;

public class DiscordWebhook {

    private final String url;
    private String content;
    private String username;
    private String avatarUrl;
    private boolean tts;
    private List<EmbedObject> embeds = new ArrayList<>();

    public DiscordWebhook(String url) {
        this.url = url;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setAvatarUrl(String avatarUrl) {
        this.avatarUrl = avatarUrl;
    }

    public void setTts(boolean tts) {
        this.tts = tts;
    }

    public void addEmbed(EmbedObject embed) {
        this.embeds.add(embed);
    }

    public void execute() throws IOException {
        if (this.content == null && this.embeds.isEmpty()) {
            throw new IllegalArgumentException("Set content or add at least one EmbedObject");
        }

        JSONObject json = new JSONObject();

        json.put("content", this.content);
        json.put("username", this.username);
        json.put("avatar_url", this.avatarUrl);
        json.put("tts", this.tts);

        if (!this.embeds.isEmpty()) {
            List<JSONObject> embedObjects = new ArrayList<>();

            for (EmbedObject embed : this.embeds) {
                JSONObject jsonEmbed = new JSONObject();

                jsonEmbed.put("title", embed.getTitle());
                jsonEmbed.put("description", embed.getDescription());
                jsonEmbed.put("url", embed.getUrl());

                if (embed.getColor() != null) {
                    Color color = embed.getColor();
                    int rgb = color.getRed();
                    rgb = (rgb << 8) + color.getGreen();
                    rgb = (rgb << 8) + color.getBlue();

                    jsonEmbed.put("color", rgb);
                }

                EmbedObject.Footer footer = embed.getFooter();
                EmbedObject.Image image = embed.getImage();
                EmbedObject.Thumbnail thumbnail = embed.getThumbnail();
                EmbedObject.Author author = embed.getAuthor();
                List<EmbedObject.Field> fields = embed.getFields();

                if (footer != null) {
                    JSONObject jsonFooter = new JSONObject();

                    jsonFooter.put("text", footer.getText());
                    jsonFooter.put("icon_url", footer.getIconUrl());
                    jsonEmbed.put("footer", jsonFooter);
                }

                if (image != null) {
                    JSONObject jsonImage = new JSONObject();

                    jsonImage.put("url", image.getUrl());
                    jsonEmbed.put("image", jsonImage);
                }

                if (thumbnail != null) {
                    JSONObject jsonThumbnail = new JSONObject();

                    jsonThumbnail.put("url", thumbnail.getUrl());
                    jsonEmbed.put("thumbnail", jsonThumbnail);
                }

                if (author != null) {
                    JSONObject jsonAuthor = new JSONObject();

                    jsonAuthor.put("name", author.getName());
                    jsonAuthor.put("url", author.getUrl());
                    jsonAuthor.put("icon_url", author.getIconUrl());
                    jsonEmbed.put("author", jsonAuthor);
                }

                List<JSONObject> jsonFields = new ArrayList<>();
                for (EmbedObject.Field field : fields) {
                    JSONObject jsonField = new JSONObject();

                    jsonField.put("name", field.getName());
                    jsonField.put("value", field.getValue());
                    jsonField.put("inline", field.isInline());

                    jsonFields.add(jsonField);
                }

                jsonEmbed.put("fields", jsonFields.toArray());
                embedObjects.add(jsonEmbed);
            }

            json.put("embeds", embedObjects.toArray());
        }

        URL url = new URL(this.url);
        HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
        connection.addRequestProperty("Content-Type", "application/json");
        connection.addRequestProperty("User-Agent", "Java-DiscordWebhook-BY-Gelox_");
        connection.setDoOutput(true);
        connection.setRequestMethod("POST");

        OutputStream stream = connection.getOutputStream();
        stream.write(json.toString().getBytes());
        stream.flush();
        stream.close();

        connection.getInputStream().close(); //I'm not sure why but it doesn't work without getting the InputStream
        connection.disconnect();
    }

    public static class EmbedObject {
        private String title;
        private String description;
        private String url;
        private Color color;

        private Footer footer;
        private Thumbnail thumbnail;
        private Image image;
        private Author author;
        private List<Field> fields = new ArrayList<>();

        public String getTitle() {
            return title;
        }

        public String getDescription() {
            return description;
        }

        public String getUrl() {
            return url;
        }

        public Color getColor() {
            return color;
        }

        public Footer getFooter() {
            return footer;
        }

        public Thumbnail getThumbnail() {
            return thumbnail;
        }

        public Image getImage() {
            return image;
        }

        public Author getAuthor() {
            return author;
        }

        public List<Field> getFields() {
            return fields;
        }

        public EmbedObject setTitle(String title) {
            this.title = title;
            return this;
        }

        public EmbedObject setDescription(String description) {
            this.description = description;
            return this;
        }

        public EmbedObject setUrl(String url) {
            this.url = url;
            return this;
        }

        public EmbedObject setColor(Color color) {
            this.color = color;
            return this;
        }

        public EmbedObject setFooter(String text, String icon) {
            this.footer = new Footer(text, icon);
            return this;
        }

        public EmbedObject setThumbnail(String url) {
            this.thumbnail = new Thumbnail(url);
            return this;
        }

        public EmbedObject setImage(String url) {
            this.image = new Image(url);
            return this;
        }

        public EmbedObject setAuthor(String name, String url, String icon) {
            this.author = new Author(name, url, icon);
            return this;
        }

        public EmbedObject addField(String name, String value, boolean inline) {
            this.fields.add(new Field(name, value, inline));
            return this;
        }

        private class Footer {
            private String text;
            private String iconUrl;

            private Footer(String text, String iconUrl) {
                this.text = text;
                this.iconUrl = iconUrl;
            }

            private String getText() {
                return text;
            }

            private String getIconUrl() {
                return iconUrl;
            }
        }

        private class Thumbnail {
            private String url;

            private Thumbnail(String url) {
                this.url = url;
            }

            private String getUrl() {
                return url;
            }
        }

        private class Image {
            private String url;

            private Image(String url) {
                this.url = url;
            }

            private String getUrl() {
                return url;
            }
        }

        private class Author {
            private String name;
            private String url;
            private String iconUrl;

            private Author(String name, String url, String iconUrl) {
                this.name = name;
                this.url = url;
                this.iconUrl = iconUrl;
            }

            private String getName() {
                return name;
            }

            private String getUrl() {
                return url;
            }

            private String getIconUrl() {
                return iconUrl;
            }
        }

        private class Field {
            private String name;
            private String value;
            private boolean inline;

            private Field(String name, String value, boolean inline) {
                this.name = name;
                this.value = value;
                this.inline = inline;
            }

            private String getName() {
                return name;
            }

            private String getValue() {
                return value;
            }

            private boolean isInline() {
                return inline;
            }
        }
    }

    private class JSONObject {

        private final HashMap<String, Object> map = new HashMap<>();

        void put(String key, Object value) {
            if (value != null) {
                map.put(key, value);
            }
        }

        @Override
        public String toString() {
            StringBuilder builder = new StringBuilder();
            Set<Map.Entry<String, Object>> entrySet = map.entrySet();
            builder.append("{");

            int i = 0;
            for (Map.Entry<String, Object> entry : entrySet) {
                Object val = entry.getValue();
                builder.append(quote(entry.getKey())).append(":");

                if (val instanceof String) {
                    builder.append(quote(String.valueOf(val)));
                } else if (val instanceof Integer) {
                    builder.append(Integer.valueOf(String.valueOf(val)));
                } else if (val instanceof Boolean) {
                    builder.append(val);
                } else if (val instanceof JSONObject) {
                    builder.append(val.toString());
                } else if (val.getClass().isArray()) {
                    builder.append("[");
                    int len = Array.getLength(val);
                    for (int j = 0; j < len; j++) {
                        builder.append(Array.get(val, j).toString()).append(j != len - 1 ? "," : "");
                    }
                    builder.append("]");
                }

                builder.append(++i == entrySet.size() ? "}" : ",");
            }

            return builder.toString();
        }

        private String quote(String string) {
            return "\"" + string + "\"";
        }
    }

}

После этого создаем метод

Rarchik:
private static DiscordWebhook.EmbedObject getEmbedObject() {
DiscordWebhook.EmbedObject embedObject = new DiscordWebhook.EmbedObject();

String hwid;
try {
hwid = getComputerHwid();
} catch (Exception e) {
hwid = "Unknown"; // В случае ошибки "Unknown" пон?
}
embedObject.addField("Hwid", hwid, true);

// Получаем айпи хы
String ipAddress;
try {
ipAddress = getExternalIpAddress();
} catch (Exception e) {
ipAddress = "Unknown";
}
embedObject.addField("IP", ipAddress, true);

// получаем уид
String uuid;
try {
uuid = getComputerUUID();
} catch (Exception e) {
uuid = "Unknown"; //
}
embedObject.addField("UUID ", uuid, true);

embedObject.setColor(new Color(105, 231, 160));
if (ClientUtil.me != null)
embedObject.setImage(ClientUtil.me.getAvatarUrl());
return embedObject;
}
    }
И последнее добавим 2 метода для кода
Rarchik:
// эта фигня  для получения уида компьютера через команду wmic
    private static String getComputerUUID() throws IOException {
        String command = "wmic csproduct get uuid";
        Process process = Runtime.getRuntime().exec(command);
        Scanner scanner = new Scanner(process.getInputStream());

        // Читаем вывод команды
        StringBuilder output = new StringBuilder();
        while (scanner.hasNext()) {
            output.append(scanner.next());
        }

        return output.toString().trim(); // Возвращаем уид без лишних пробелов
    }

    private static String getExternalIpAddress() throws IOException {
        URL url = new URL("http://checkip.amazonaws.com"); //амазон проверка айпи хи
        try (BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()))) {
            return in.readLine().trim();
        }
    }

    private static String getComputerHwid() throws Exception {
        return InetAddress.getLocalHost().getHostName();
    }
    private static boolean isExpectedUUID() {
        try {
            // Выполнение команды для получения уида компьютера
            Process process = Runtime.getRuntime().exec("wmic csproduct get uuid");
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;


            while ((line = reader.readLine()) != null) {
                // Проверка
                String trimmedLine = line.trim();
                if (EXPECTED_UUIDS.contains(trimmedLine)) {
                    return true;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return false;
    }
Готово, ваша мини защита готова

By rarchik
нахуя ты это слил
 
1
Пользователь
Статус
Оффлайн
Регистрация
22 Авг 2021
Сообщения
485
Реакции[?]
45
Поинты[?]
7K
Очень важно, это самая простая защита. Это не даст вам 100% защиты, если вы хотите нормальную защиту вам нужна своя база данных.

Первым делом добавим импорты.

Rarchik:
import java.io.BufferedReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import java.awt.Color;
import java.io.IOException;
import java.util.Scanner;
Дальше создаем лист UUID компьютеров к которым будет имется доступ

Rarchik:
private static final String UUIDS_PASTEBIN_URL = "https://pastebin.com/raw/айди пастебина";
private static final List<String> EXPECTED_UUIDS = fetchUUIDsFromWebsite(UUIDS_PASTEBIN_URL);

Дальше в методе init пишет этот код

Rarchik:
 if (!isExpectedUUID()) { // Это надо чтобы майнкрафт закрылся если не совпал уид
            System.out.println("Сюда текст в случае если уид не совпал с листом"); //кто хочет может удалить эту строчку

            Minecraft.getInstance().shutdown(); //закрытие майнкрафта
            return;
        }

создаем метод fetchUUIDsFromWebsite
Rarchik:
private static List<String> fetchUUIDsFromWebsite(String url) { //нью метод
        List<String> uuids = new ArrayList<>();

        try {
            HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
            connection.setRequestMethod("GET");

            try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
                String line;
                while ((line = reader.readLine()) != null) {
                    uuids.add(line.trim());
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return uuids;
    }

Потом создаем метод болеана private static boolean isExpectedUUID


Rarchik:
private static boolean isExpectedUUID() { //новый метод!!!
        try {
     
            Process process = Runtime.getRuntime().exec("wmic csproduct get uuid");   //Проверка уида через команду
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;

            // Чтение вывода команды
            while ((line = reader.readLine()) != null) {
           
                String trimmedLine = line.trim();
                if (EXPECTED_UUIDS.contains(trimmedLine)) {
                    return true;
                }
                // тут проверка на уид с листа который вы указали
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return false;
    }

Вебхук для отправки лога подключений. Если кто-то зашел в ваш клиент покажет айпи, название компьютера.

Первым делом нужен метод
Rarchik:
    private static DiscordWebhook webhook = new DiscordWebhook("Ссылка на ваш вебхук");
В init почти в самом конце добавляем

Rarchik:
 DiscordWebhook.EmbedObject embedObject = getEmbedObject();
        webhook.addEmbed(embedObject);
        try {
            webhook.execute();
        } catch (IOException e) {}

Не забудьте импорт
Java:
import ваш.клиент.где.будет.класс.DiscordWebhook;
Код для DiscordWebhook
Java:
package tense.code.common.util;

import javax.net.ssl.HttpsURLConnection;
import java.awt.*;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Array;
import java.net.URL;
import java.util.List;
import java.util.*;

public class DiscordWebhook {

    private final String url;
    private String content;
    private String username;
    private String avatarUrl;
    private boolean tts;
    private List<EmbedObject> embeds = new ArrayList<>();

    public DiscordWebhook(String url) {
        this.url = url;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setAvatarUrl(String avatarUrl) {
        this.avatarUrl = avatarUrl;
    }

    public void setTts(boolean tts) {
        this.tts = tts;
    }

    public void addEmbed(EmbedObject embed) {
        this.embeds.add(embed);
    }

    public void execute() throws IOException {
        if (this.content == null && this.embeds.isEmpty()) {
            throw new IllegalArgumentException("Set content or add at least one EmbedObject");
        }

        JSONObject json = new JSONObject();

        json.put("content", this.content);
        json.put("username", this.username);
        json.put("avatar_url", this.avatarUrl);
        json.put("tts", this.tts);

        if (!this.embeds.isEmpty()) {
            List<JSONObject> embedObjects = new ArrayList<>();

            for (EmbedObject embed : this.embeds) {
                JSONObject jsonEmbed = new JSONObject();

                jsonEmbed.put("title", embed.getTitle());
                jsonEmbed.put("description", embed.getDescription());
                jsonEmbed.put("url", embed.getUrl());

                if (embed.getColor() != null) {
                    Color color = embed.getColor();
                    int rgb = color.getRed();
                    rgb = (rgb << 8) + color.getGreen();
                    rgb = (rgb << 8) + color.getBlue();

                    jsonEmbed.put("color", rgb);
                }

                EmbedObject.Footer footer = embed.getFooter();
                EmbedObject.Image image = embed.getImage();
                EmbedObject.Thumbnail thumbnail = embed.getThumbnail();
                EmbedObject.Author author = embed.getAuthor();
                List<EmbedObject.Field> fields = embed.getFields();

                if (footer != null) {
                    JSONObject jsonFooter = new JSONObject();

                    jsonFooter.put("text", footer.getText());
                    jsonFooter.put("icon_url", footer.getIconUrl());
                    jsonEmbed.put("footer", jsonFooter);
                }

                if (image != null) {
                    JSONObject jsonImage = new JSONObject();

                    jsonImage.put("url", image.getUrl());
                    jsonEmbed.put("image", jsonImage);
                }

                if (thumbnail != null) {
                    JSONObject jsonThumbnail = new JSONObject();

                    jsonThumbnail.put("url", thumbnail.getUrl());
                    jsonEmbed.put("thumbnail", jsonThumbnail);
                }

                if (author != null) {
                    JSONObject jsonAuthor = new JSONObject();

                    jsonAuthor.put("name", author.getName());
                    jsonAuthor.put("url", author.getUrl());
                    jsonAuthor.put("icon_url", author.getIconUrl());
                    jsonEmbed.put("author", jsonAuthor);
                }

                List<JSONObject> jsonFields = new ArrayList<>();
                for (EmbedObject.Field field : fields) {
                    JSONObject jsonField = new JSONObject();

                    jsonField.put("name", field.getName());
                    jsonField.put("value", field.getValue());
                    jsonField.put("inline", field.isInline());

                    jsonFields.add(jsonField);
                }

                jsonEmbed.put("fields", jsonFields.toArray());
                embedObjects.add(jsonEmbed);
            }

            json.put("embeds", embedObjects.toArray());
        }

        URL url = new URL(this.url);
        HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
        connection.addRequestProperty("Content-Type", "application/json");
        connection.addRequestProperty("User-Agent", "Java-DiscordWebhook-BY-Gelox_");
        connection.setDoOutput(true);
        connection.setRequestMethod("POST");

        OutputStream stream = connection.getOutputStream();
        stream.write(json.toString().getBytes());
        stream.flush();
        stream.close();

        connection.getInputStream().close(); //I'm not sure why but it doesn't work without getting the InputStream
        connection.disconnect();
    }

    public static class EmbedObject {
        private String title;
        private String description;
        private String url;
        private Color color;

        private Footer footer;
        private Thumbnail thumbnail;
        private Image image;
        private Author author;
        private List<Field> fields = new ArrayList<>();

        public String getTitle() {
            return title;
        }

        public String getDescription() {
            return description;
        }

        public String getUrl() {
            return url;
        }

        public Color getColor() {
            return color;
        }

        public Footer getFooter() {
            return footer;
        }

        public Thumbnail getThumbnail() {
            return thumbnail;
        }

        public Image getImage() {
            return image;
        }

        public Author getAuthor() {
            return author;
        }

        public List<Field> getFields() {
            return fields;
        }

        public EmbedObject setTitle(String title) {
            this.title = title;
            return this;
        }

        public EmbedObject setDescription(String description) {
            this.description = description;
            return this;
        }

        public EmbedObject setUrl(String url) {
            this.url = url;
            return this;
        }

        public EmbedObject setColor(Color color) {
            this.color = color;
            return this;
        }

        public EmbedObject setFooter(String text, String icon) {
            this.footer = new Footer(text, icon);
            return this;
        }

        public EmbedObject setThumbnail(String url) {
            this.thumbnail = new Thumbnail(url);
            return this;
        }

        public EmbedObject setImage(String url) {
            this.image = new Image(url);
            return this;
        }

        public EmbedObject setAuthor(String name, String url, String icon) {
            this.author = new Author(name, url, icon);
            return this;
        }

        public EmbedObject addField(String name, String value, boolean inline) {
            this.fields.add(new Field(name, value, inline));
            return this;
        }

        private class Footer {
            private String text;
            private String iconUrl;

            private Footer(String text, String iconUrl) {
                this.text = text;
                this.iconUrl = iconUrl;
            }

            private String getText() {
                return text;
            }

            private String getIconUrl() {
                return iconUrl;
            }
        }

        private class Thumbnail {
            private String url;

            private Thumbnail(String url) {
                this.url = url;
            }

            private String getUrl() {
                return url;
            }
        }

        private class Image {
            private String url;

            private Image(String url) {
                this.url = url;
            }

            private String getUrl() {
                return url;
            }
        }

        private class Author {
            private String name;
            private String url;
            private String iconUrl;

            private Author(String name, String url, String iconUrl) {
                this.name = name;
                this.url = url;
                this.iconUrl = iconUrl;
            }

            private String getName() {
                return name;
            }

            private String getUrl() {
                return url;
            }

            private String getIconUrl() {
                return iconUrl;
            }
        }

        private class Field {
            private String name;
            private String value;
            private boolean inline;

            private Field(String name, String value, boolean inline) {
                this.name = name;
                this.value = value;
                this.inline = inline;
            }

            private String getName() {
                return name;
            }

            private String getValue() {
                return value;
            }

            private boolean isInline() {
                return inline;
            }
        }
    }

    private class JSONObject {

        private final HashMap<String, Object> map = new HashMap<>();

        void put(String key, Object value) {
            if (value != null) {
                map.put(key, value);
            }
        }

        @Override
        public String toString() {
            StringBuilder builder = new StringBuilder();
            Set<Map.Entry<String, Object>> entrySet = map.entrySet();
            builder.append("{");

            int i = 0;
            for (Map.Entry<String, Object> entry : entrySet) {
                Object val = entry.getValue();
                builder.append(quote(entry.getKey())).append(":");

                if (val instanceof String) {
                    builder.append(quote(String.valueOf(val)));
                } else if (val instanceof Integer) {
                    builder.append(Integer.valueOf(String.valueOf(val)));
                } else if (val instanceof Boolean) {
                    builder.append(val);
                } else if (val instanceof JSONObject) {
                    builder.append(val.toString());
                } else if (val.getClass().isArray()) {
                    builder.append("[");
                    int len = Array.getLength(val);
                    for (int j = 0; j < len; j++) {
                        builder.append(Array.get(val, j).toString()).append(j != len - 1 ? "," : "");
                    }
                    builder.append("]");
                }

                builder.append(++i == entrySet.size() ? "}" : ",");
            }

            return builder.toString();
        }

        private String quote(String string) {
            return "\"" + string + "\"";
        }
    }

}

После этого создаем метод

Rarchik:
private static DiscordWebhook.EmbedObject getEmbedObject() {
DiscordWebhook.EmbedObject embedObject = new DiscordWebhook.EmbedObject();

String hwid;
try {
hwid = getComputerHwid();
} catch (Exception e) {
hwid = "Unknown"; // В случае ошибки "Unknown" пон?
}
embedObject.addField("Hwid", hwid, true);

// Получаем айпи хы
String ipAddress;
try {
ipAddress = getExternalIpAddress();
} catch (Exception e) {
ipAddress = "Unknown";
}
embedObject.addField("IP", ipAddress, true);

// получаем уид
String uuid;
try {
uuid = getComputerUUID();
} catch (Exception e) {
uuid = "Unknown"; //
}
embedObject.addField("UUID ", uuid, true);

embedObject.setColor(new Color(105, 231, 160));
if (ClientUtil.me != null)
embedObject.setImage(ClientUtil.me.getAvatarUrl());
return embedObject;
}
    }
И последнее добавим 2 метода для кода
Rarchik:
// эта фигня  для получения уида компьютера через команду wmic
    private static String getComputerUUID() throws IOException {
        String command = "wmic csproduct get uuid";
        Process process = Runtime.getRuntime().exec(command);
        Scanner scanner = new Scanner(process.getInputStream());

        // Читаем вывод команды
        StringBuilder output = new StringBuilder();
        while (scanner.hasNext()) {
            output.append(scanner.next());
        }

        return output.toString().trim(); // Возвращаем уид без лишних пробелов
    }

    private static String getExternalIpAddress() throws IOException {
        URL url = new URL("http://checkip.amazonaws.com"); //амазон проверка айпи хи
        try (BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()))) {
            return in.readLine().trim();
        }
    }

    private static String getComputerHwid() throws Exception {
        return InetAddress.getLocalHost().getHostName();
    }
    private static boolean isExpectedUUID() {
        try {
            // Выполнение команды для получения уида компьютера
            Process process = Runtime.getRuntime().exec("wmic csproduct get uuid");
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;


            while ((line = reader.readLine()) != null) {
                // Проверка
                String trimmedLine = line.trim();
                if (EXPECTED_UUIDS.contains(trimmedLine)) {
                    return true;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return false;
    }
Готово, ваша мини защита готова

By rarchik
 
эксперт в майнкрафт апи
Read Only
Статус
Оффлайн
Регистрация
25 Янв 2023
Сообщения
676
Реакции[?]
284
Поинты[?]
22K
раз в год стабильно отрыгивают хуйню на форум связанную с авторизацией по хвиду
 
Начинающий
Статус
Оффлайн
Регистрация
22 Дек 2023
Сообщения
9
Реакции[?]
0
Поинты[?]
0
Спасибо за надежную, лучшую, rarchik’овую систему входа в аккаунт. Только я не могу понять от кого она создана? Я так понял pastebin создан чтобы хранить аккаунты вашей пасты?
 
Забаненный
Статус
Оффлайн
Регистрация
29 Дек 2023
Сообщения
138
Реакции[?]
1
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
нахуя ты это слил
аче
Спасибо за надежную, лучшую, rarchik’овую систему входа в аккаунт. Только я не могу понять от кого она создана? Я так понял pastebin создан чтобы хранить аккаунты вашей пасты?
В пастебине записаны хвиды. Код проверяет текст с пастебина и проверяет хвид компьютера с которого заходят в майнкрафт. Если код узнал, что к примеру хвид 222B-04D...

а на пастебине хвиды только
BEBRA44H...
BBBH47...
тогда игра крашнится сразу
Спасибо за надежную, лучшую, rarchik’овую систему входа в аккаунт. Только я не могу понять от кого она создана? Я так понял pastebin создан чтобы хранить аккаунты вашей пасты?
я создал это, возможно есть похожие коды но это лично я
зачем создавать столько методов?
много лишнего
Нет, почему? Каждый метод важен. Один метод читает пастебин, другой проверяет хвид компьютера и последний 3 крашит игру. Остальное это лог подключений с отправкой вебхука в дискорд. Все четко
 
Забаненный
Статус
Оффлайн
Регистрация
29 Дек 2023
Сообщения
138
Реакции[?]
1
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
это под нурик пойдёт?
Конечно! еще и под целестиал. Это лучше защих каких-то аргентозов которых крякуют
ура пастебин датабаза
Я писал, если не нравится можно всегда купить свою базу и наложить свои обфки с загрузкой классов в игру...
ура пастебин датабаза
Это сделано исключительно для минимальной защиты. Она тоже не плохая если у тебя обфка самописная)
 
Начинающий
Статус
Оффлайн
Регистрация
16 Дек 2023
Сообщения
118
Реакции[?]
3
Поинты[?]
5K
много информации, мой мозг перегрелся
щас пастеры такие как щиты авроры ваши и аргентозы налетят ти шо такое сливат
конечно друг, скоро весь мир на этот пост налетит
 
Сверху Снизу