пошли в дс, на демке покажунихуя ты прятальщик508 zzz
а в какой папке
пошли в дс, на демке покажунихуя ты прятальщик508 zzz
а в какой папке
/dell ezz deobfПривет друзья, недавно написал вам систему хеширование файлов конфигураций прямо как в Nursultan Alpha. Для хеширование использовал AOE а также оставил в коде строку "yousecretkey12345678" лучше ничего не менять если не хотите разбиратся в моем селфкоде.
-----------------------------------ConfigStorage.java:package fun.nursultan.config; import com.google.gson.GsonBuilder; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import net.minecraft.client.Minecraft; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.io.*; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.util.ArrayList; import java.util.Base64; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; public class ConfigStorage { public final Logger logger = Logger.getLogger(ConfigStorage.class.getName()); public final File CONFIG_DIR = new File(Minecraft.getInstance().gameDir, "\\expensive\\configs"); public final File AUTOCFG_DIR = new File(CONFIG_DIR, "autocfg.cfg"); public final JsonParser jsonParser = new JsonParser(); private static final String ALGORITHM = "AES"; public void init() throws IOException { setupFolder(); } public void setupFolder() { if (!CONFIG_DIR.exists()) { CONFIG_DIR.mkdirs(); } else if (AUTOCFG_DIR.exists()) { loadConfiguration("system", "defaultKey12345678"); logger.log(Level.SEVERE, "Load system configuration..."); } else { logger.log(Level.SEVERE, "Creating system configuration..."); try { AUTOCFG_DIR.createNewFile(); logger.log(Level.SEVERE, "Created!"); } catch (IOException e) { logger.log(Level.SEVERE, "Failed to create system configuration file", e); } } } public boolean isEmpty() { return getConfigs().isEmpty(); } public List<Config> getConfigs() { List<Config> configs = new ArrayList<>(); File[] configFiles = CONFIG_DIR.listFiles(); if (configFiles != null) { for (File configFile : configFiles) { if (configFile.isFile() && configFile.getName().endsWith(".cfg")) { String configName = configFile.getName().replace(".cfg", ""); Config config = findConfig(configName); if (config != null) { configs.add(config); } } } } return configs; } public void loadConfiguration(String configuration, String secretKey) { Config config = findConfig(configuration); if (config == null) { logger.log(Level.WARNING, "Конфигурация не найдена: " + configuration); return; } try (BufferedReader reader = new BufferedReader(new FileReader(config.getFile()))) { String encryptedContent = reader.readLine(); if (encryptedContent == null || encryptedContent.isEmpty()) { logger.log(Level.WARNING, "Файл конфигурации пуст."); return; } String decryptedContent = decrypt(encryptedContent, secretKey); JsonObject object = (JsonObject) jsonParser.parse(decryptedContent); config.loadConfig(object); } catch (FileNotFoundException e) { logger.log(Level.WARNING, "Файл не найден: " + config.getFile().getName(), e); } catch (Exception e) { logger.log(Level.WARNING, "Ошибка при загрузке конфигурации", e); } } public void saveConfiguration(String configuration, String secretKey) { Config config = new Config(configuration); String contentPrettyPrint = new GsonBuilder().setPrettyPrinting().create().toJson(config.saveConfig()); try (FileWriter writer = new FileWriter(config.getFile())) { if (contentPrettyPrint.isEmpty()) { logger.log(Level.WARNING, "Данные для сохранения конфигурации пусты."); return; } String encryptedContent = encrypt(contentPrettyPrint, secretKey); writer.write(encryptedContent); } catch (IOException e) { logger.log(Level.WARNING, "Ошибка при сохранении конфигурации", e); } catch (Exception e) { logger.log(Level.WARNING, "Ошибка при шифровании!", e); } } public Config findConfig(String configName) { if (configName == null) return null; File configFile = new File(CONFIG_DIR, configName + ".cfg"); if (configFile.exists()) { return new Config(configName); } return null; } public String encrypt(String data, String secretKey) throws Exception { Cipher cipher = Cipher.getInstance(ALGORITHM); SecretKeySpec key = new SecretKeySpec(hashKey(secretKey), ALGORITHM); cipher.init(Cipher.ENCRYPT_MODE, key); byte[] encryptedData = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8)); return Base64.getEncoder().encodeToString(encryptedData); } public String decrypt(String encryptedData, String secretKey) throws Exception { Cipher cipher = Cipher.getInstance(ALGORITHM); SecretKeySpec key = new SecretKeySpec(hashKey(secretKey), ALGORITHM); cipher.init(Cipher.DECRYPT_MODE, key); byte[] decryptedData = cipher.doFinal(Base64.getDecoder().decode(encryptedData)); return new String(decryptedData, StandardCharsets.UTF_8); } private byte[] hashKey(String key) throws Exception { MessageDigest sha = MessageDigest.getInstance("SHA-256"); return sha.digest(key.getBytes(StandardCharsets.UTF_8)); } }
SS:Посмотреть вложение 288644ConfigCommand.java:package fun.nursultan.command.impl.feature; import im.expensive.command.*; import im.expensive.config.Config; import im.expensive.config.ConfigStorage; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import lombok.experimental.FieldDefaults; import net.minecraft.util.text.TextFormatting; import java.io.File; import java.io.IOException; import java.util.List; @RequiredArgsConstructor @FieldDefaults(level = AccessLevel.PRIVATE) public class ConfigCommand implements Command, CommandWithAdvice, MultiNamedCommand { final ConfigStorage configStorage; final Prefix prefix; final Logger logger; @Override public void execute(Parameters parameters) { String commandType = parameters.asString(0).orElse(""); switch (commandType) { case "load" -> loadConfig(parameters); case "save" -> saveConfig(parameters); case "list" -> configList(); case "dir" -> getDirectory(); default -> throw new RuntimeException(TextFormatting.RED + "Укажите тип команды: " + TextFormatting.GRAY + "load, save, list, dir"); } } @Override public String name() { return "config"; } @Override public String description() { return "Позволяет взаимодействовать с конфигами в чите"; } @Override public List<String> adviceMessage() { String commandPrefix = prefix.get(); return List.of(commandPrefix + name() + " load <config> - Загрузить конфиг", commandPrefix + name() + " save <config> - Сохранить конфиг", commandPrefix + name() + " list - Получить список конфигов", commandPrefix + name() + " dir - Открыть папку с конфигами", "Пример: " + TextFormatting.RED + commandPrefix + "cfg save myConfig", "Пример: " + TextFormatting.RED + commandPrefix + "cfg load myConfig" ); } @Override public List<String> aliases() { return List.of("cfg"); } private void loadConfig(Parameters parameters) { String configName = parameters.asString(1) .orElseThrow(() -> new RuntimeException(TextFormatting.RED + "Укажите название конфига!")); String secretKey = "yourSecretKey123"; if (new File(configStorage.CONFIG_DIR, configName + ".cfg").exists()) { configStorage.loadConfiguration(configName, secretKey); logger.log(TextFormatting.GREEN + "Конфигурация " + TextFormatting.RED + configName + TextFormatting.GREEN + " загружена!"); } else { logger.log(TextFormatting.RED + "Конфигурация " + TextFormatting.GRAY + configName + TextFormatting.RED + " не найдена!"); } } private void saveConfig(Parameters parameters) { String configName = parameters.asString(1) .orElseThrow(() -> new RuntimeException(TextFormatting.RED + "Укажите название конфига!")); String secretKey = "yourSecretKey123"; configStorage.saveConfiguration(configName, secretKey); logger.log(TextFormatting.GREEN + "Конфигурация " + TextFormatting.RED + configName + TextFormatting.GREEN + " сохранена!"); } private void configList() { if (configStorage.isEmpty()) { logger.log(TextFormatting.RED + "Список конфигураций пустой"); return; } logger.log(TextFormatting.GRAY + "Список конфигов:"); for (Config config : configStorage.getConfigs()) { logger.log(TextFormatting.GRAY + config.getName()); } } private void getDirectory() { try { Runtime.getRuntime().exec("explorer " + configStorage.CONFIG_DIR.getAbsolutePath()); } catch (IOException e) { logger.log(TextFormatting.RED + "Папка с конфигурациями не найдена!" + e.getMessage()); } } }
как всегда насрал дерьмом, смысл от ключа? тебе так слабо реализовать динамику?Привет друзья, недавно написал вам систему хеширование файлов конфигураций прямо как в Nursultan Alpha. Для хеширование использовал AOE а также оставил в коде строку "yousecretkey12345678" лучше ничего не менять если не хотите разбиратся в моем селфкоде.
-----------------------------------ConfigStorage.java:package fun.nursultan.config; import com.google.gson.GsonBuilder; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import net.minecraft.client.Minecraft; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.io.*; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.util.ArrayList; import java.util.Base64; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; public class ConfigStorage { public final Logger logger = Logger.getLogger(ConfigStorage.class.getName()); public final File CONFIG_DIR = new File(Minecraft.getInstance().gameDir, "\\expensive\\configs"); public final File AUTOCFG_DIR = new File(CONFIG_DIR, "autocfg.cfg"); public final JsonParser jsonParser = new JsonParser(); private static final String ALGORITHM = "AES"; public void init() throws IOException { setupFolder(); } public void setupFolder() { if (!CONFIG_DIR.exists()) { CONFIG_DIR.mkdirs(); } else if (AUTOCFG_DIR.exists()) { loadConfiguration("system", "defaultKey12345678"); logger.log(Level.SEVERE, "Load system configuration..."); } else { logger.log(Level.SEVERE, "Creating system configuration..."); try { AUTOCFG_DIR.createNewFile(); logger.log(Level.SEVERE, "Created!"); } catch (IOException e) { logger.log(Level.SEVERE, "Failed to create system configuration file", e); } } } public boolean isEmpty() { return getConfigs().isEmpty(); } public List<Config> getConfigs() { List<Config> configs = new ArrayList<>(); File[] configFiles = CONFIG_DIR.listFiles(); if (configFiles != null) { for (File configFile : configFiles) { if (configFile.isFile() && configFile.getName().endsWith(".cfg")) { String configName = configFile.getName().replace(".cfg", ""); Config config = findConfig(configName); if (config != null) { configs.add(config); } } } } return configs; } public void loadConfiguration(String configuration, String secretKey) { Config config = findConfig(configuration); if (config == null) { logger.log(Level.WARNING, "Конфигурация не найдена: " + configuration); return; } try (BufferedReader reader = new BufferedReader(new FileReader(config.getFile()))) { String encryptedContent = reader.readLine(); if (encryptedContent == null || encryptedContent.isEmpty()) { logger.log(Level.WARNING, "Файл конфигурации пуст."); return; } String decryptedContent = decrypt(encryptedContent, secretKey); JsonObject object = (JsonObject) jsonParser.parse(decryptedContent); config.loadConfig(object); } catch (FileNotFoundException e) { logger.log(Level.WARNING, "Файл не найден: " + config.getFile().getName(), e); } catch (Exception e) { logger.log(Level.WARNING, "Ошибка при загрузке конфигурации", e); } } public void saveConfiguration(String configuration, String secretKey) { Config config = new Config(configuration); String contentPrettyPrint = new GsonBuilder().setPrettyPrinting().create().toJson(config.saveConfig()); try (FileWriter writer = new FileWriter(config.getFile())) { if (contentPrettyPrint.isEmpty()) { logger.log(Level.WARNING, "Данные для сохранения конфигурации пусты."); return; } String encryptedContent = encrypt(contentPrettyPrint, secretKey); writer.write(encryptedContent); } catch (IOException e) { logger.log(Level.WARNING, "Ошибка при сохранении конфигурации", e); } catch (Exception e) { logger.log(Level.WARNING, "Ошибка при шифровании!", e); } } public Config findConfig(String configName) { if (configName == null) return null; File configFile = new File(CONFIG_DIR, configName + ".cfg"); if (configFile.exists()) { return new Config(configName); } return null; } public String encrypt(String data, String secretKey) throws Exception { Cipher cipher = Cipher.getInstance(ALGORITHM); SecretKeySpec key = new SecretKeySpec(hashKey(secretKey), ALGORITHM); cipher.init(Cipher.ENCRYPT_MODE, key); byte[] encryptedData = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8)); return Base64.getEncoder().encodeToString(encryptedData); } public String decrypt(String encryptedData, String secretKey) throws Exception { Cipher cipher = Cipher.getInstance(ALGORITHM); SecretKeySpec key = new SecretKeySpec(hashKey(secretKey), ALGORITHM); cipher.init(Cipher.DECRYPT_MODE, key); byte[] decryptedData = cipher.doFinal(Base64.getDecoder().decode(encryptedData)); return new String(decryptedData, StandardCharsets.UTF_8); } private byte[] hashKey(String key) throws Exception { MessageDigest sha = MessageDigest.getInstance("SHA-256"); return sha.digest(key.getBytes(StandardCharsets.UTF_8)); } }
SS:Посмотреть вложение 288644ConfigCommand.java:package fun.nursultan.command.impl.feature; import im.expensive.command.*; import im.expensive.config.Config; import im.expensive.config.ConfigStorage; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import lombok.experimental.FieldDefaults; import net.minecraft.util.text.TextFormatting; import java.io.File; import java.io.IOException; import java.util.List; @RequiredArgsConstructor @FieldDefaults(level = AccessLevel.PRIVATE) public class ConfigCommand implements Command, CommandWithAdvice, MultiNamedCommand { final ConfigStorage configStorage; final Prefix prefix; final Logger logger; @Override public void execute(Parameters parameters) { String commandType = parameters.asString(0).orElse(""); switch (commandType) { case "load" -> loadConfig(parameters); case "save" -> saveConfig(parameters); case "list" -> configList(); case "dir" -> getDirectory(); default -> throw new RuntimeException(TextFormatting.RED + "Укажите тип команды: " + TextFormatting.GRAY + "load, save, list, dir"); } } @Override public String name() { return "config"; } @Override public String description() { return "Позволяет взаимодействовать с конфигами в чите"; } @Override public List<String> adviceMessage() { String commandPrefix = prefix.get(); return List.of(commandPrefix + name() + " load <config> - Загрузить конфиг", commandPrefix + name() + " save <config> - Сохранить конфиг", commandPrefix + name() + " list - Получить список конфигов", commandPrefix + name() + " dir - Открыть папку с конфигами", "Пример: " + TextFormatting.RED + commandPrefix + "cfg save myConfig", "Пример: " + TextFormatting.RED + commandPrefix + "cfg load myConfig" ); } @Override public List<String> aliases() { return List.of("cfg"); } private void loadConfig(Parameters parameters) { String configName = parameters.asString(1) .orElseThrow(() -> new RuntimeException(TextFormatting.RED + "Укажите название конфига!")); String secretKey = "yourSecretKey123"; if (new File(configStorage.CONFIG_DIR, configName + ".cfg").exists()) { configStorage.loadConfiguration(configName, secretKey); logger.log(TextFormatting.GREEN + "Конфигурация " + TextFormatting.RED + configName + TextFormatting.GREEN + " загружена!"); } else { logger.log(TextFormatting.RED + "Конфигурация " + TextFormatting.GRAY + configName + TextFormatting.RED + " не найдена!"); } } private void saveConfig(Parameters parameters) { String configName = parameters.asString(1) .orElseThrow(() -> new RuntimeException(TextFormatting.RED + "Укажите название конфига!")); String secretKey = "yourSecretKey123"; configStorage.saveConfiguration(configName, secretKey); logger.log(TextFormatting.GREEN + "Конфигурация " + TextFormatting.RED + configName + TextFormatting.GREEN + " сохранена!"); } private void configList() { if (configStorage.isEmpty()) { logger.log(TextFormatting.RED + "Список конфигураций пустой"); return; } logger.log(TextFormatting.GRAY + "Список конфигов:"); for (Config config : configStorage.getConfigs()) { logger.log(TextFormatting.GRAY + config.getName()); } } private void getDirectory() { try { Runtime.getRuntime().exec("explorer " + configStorage.CONFIG_DIR.getAbsolutePath()); } catch (IOException e) { logger.log(TextFormatting.RED + "Папка с конфигурациями не найдена!" + e.getMessage()); } } }
Гений с своей обфа тупая которая /dell ezz deobf что-то говорит на обфу конфигов експ 3.1 нурикакак всегда насрал дерьмом, смысл от ключа? тебе так слабо реализовать динамику?
ты че несешь, больной.. у меня нету обфы..Гений с своей обфа тупая которая /dell ezz deobf что-то говорит на обфу конфигов експ 3.1 нурика
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz