LaPrizmo ClientMod

  • Автор темы Автор темы Prizmo
  • Дата начала Дата начала

Prizmo

Путник
Участник
Сообщения
19
Розыгрыши
0
Репутация
55
Реакции
19
Баллы
13
Для понимания принципов работы и дополнительных аспектов в вашей сфере, взял трупы утилит для анализа. И на основе L2crypt (acmi) пробую немного ковыряться.
Некоторые функции делались по наитию и находятся в тестовом режиме.
Для анализа были взяты L2ph/L2clientdat/
l2endec
В процессе l2emu netpro

LaPrizmo - современный инструмент для шифрования/дешифрования и анализа файлов игры Lineage 2. Проект представляет собой полностью переработанную версию утилиты L2Crypt с улучшенной структурой кода, расширенной функциональностью и поддержкой всех версий протоколов.

Основные возможности:

  • Поддержка всех версий от C1 (111) до Eternal (912)
  • Шифрование/дешифрование с авто-определением версии
  • Пакетная обработка файлов и директорий
  • Анализ сетевых пакетов и структуры DAT-файлов
  • Встроенный HEX-редактор
  • Расширяемость через систему плагинов
  • GUI и консольный режим
Системные требования:

  • Java 11 или выше
  • 4 ГБ RAM (рек. 8 ГБ)
  • Windows/Linux/macOS
🛠 Компоненты:

  • Графический интерфейс
  • Консольный режим для автоматизации
  • Поддержка всех алгоритмов шифрования L2 (XOR, Blowfish, RSA, AES)
  • Инструменты анализа и отладки
Поддерживаемые форматы:

  • Все типы DAT-файлов
  • Сетевые пакеты всех версий
  • Системные файлы игры
  • Конфигурационные файлы
Функции:

  • Автоопределение версии протокола
  • Пакетная обработка файлов
  • Анализ структуры DAT-файлов
  • Извлечение текстур и моделей
  • Анализ сетевых пакетов
  • Встроенный HEX-редактор
  • Поддержка плагинов



В репозитории присутствует подробнейшая документация по проекту.

P.S. Тестирование проводил бегло, могут быть ошибки и неточности. Буду рад вашим замечаниям, советам и предложениям. Если есть примеры op.src. проектов в подобном направлении был бы благодарен за наводку (язык не важен)
 
Просьба к модерам.
Сменить ссылку на git
 
ии кодинг захватывает форум? на гите какое то месиво всего и сразу.
 
Я бы всем пользователям рекомендовал максимально внимательно изучить исходный код и код сопутствующих либ ДО того, как пытаться запускать что-то из тулз этого автора на своем компьютере.
 
ии кодинг захватывает форум? на гите какое то месиво всего и сразу.
поделись пожалуйста употребляемым веществом
должно быть вроде обидно, но по факту согласен. Я вообще всегда проверяю любой ****** код который беру с сети.
 
расскажите что это за магия и от куда она. По коду видно что там ии ибо разумный человек такое не делает. Даже если взять кто не шарит комментарии на каждую строку в большинстве без нужды ( явный признак использования ии который дает такие комментарии на каждый чих ).
 
Последнее редактирование:
расскажите что это за магия и от куда она
AES используется в UE4/5 делал подобное под другую игру на UE4. А так как умельцев хватает и ремастер для LineAge 2 UE4 уже в работе, данный функционал будет совсем кстати.
 
серьезно? вопрос был в другом напиши от куда такие данные взял ( или все же нейросеть глюк поймала? )
 
Оффтоп:



Я всегда знал - что я ИИ

Java:
        // нужна ли здесь потоко-защищенность? // is required concurrent?
        final List<ExDropHolder> dropList = new ArrayList<>(dropCategory.getDropItems());
        Collections.shuffle(dropList);
        // Вдруг сделают значение с минусом // in case if in file will be value lowest than zero
        final long minItemFromGroup = Math.max(dropCategory.getMin(), 0);
        // На случай если мин значение будет больше чем макс // in case if min value being higher than max
        final long maxItemFromGroup = Math.max(minItemFromGroup, dropCategory.getMax());
        // не будем делать интерации @maxItemFromGroup у нас 0. Теоритически может быть в случае если minItemFromGroup <= 0
        // no reason to do iterations if @maxItemFromGroup will 0. May be in case if minItemFromGroup <= 0
        final double totalChance = calculateTotalGroupChance(_type, killer, victim, dropCategory, dropList);
        for (long iterator = minItemFromGroup; iterator <= (maxItemFromGroup == 0 ? -1 : maxItemFromGroup); iterator++)
        {
            final double randomValueForRoll = Rnd.nextDouble() * totalChance;
            double currentChance = 0.d;
            ITEMS : for (ExDropHolder item : dropList)
            {
                ItemTemplate normalTemplate = ItemHolder.getInstance().getTemplate(item.getItemId());
                SpecialItemsHolder specialTemplate = normalTemplate == null ? SpecialItemsHolder.getSpecialItemById(item.getItemId()) : null;
                if (normalTemplate == null && specialTemplate == null)
                {
                    _logger.warn(getClass().getSimpleName() + ": Item with id " + item.getItemId() + " has null template;");
                    continue ITEMS;
                }
                // нельзя допустить чтоб шанс уменьшался! // required to increase chance, check on case if cant be decreased
                // смешно что мобиус конфиг придумал, но он несовместим :)
                // funny thing - mobius created config for increasing chance for selected items, but it will not work there :)
                // из-за этого и приходится делать вот такие финты, считать полный шанс и тд
                // and I need to calculate all chances before guiding the chance
                double itemChanceForPlayer = getPlayerItemDropChance(_type, killer, victim, dropCategory, item, true);
 

Вложения

  • 1742532180378.webp
    67,7 КБ · Просмотры: 40
Некоторые функции делались по наитию и находятся в тестовом режиме.
Буду рад вашим замечаниям, советам и предложениям.

для таких писал. Надо было ВОТ ТАК
 
у тебя в этом смысл есть для функций которые не дают информацию там же иное.


 
для таких писал. Надо было ВОТ ТАК
Тут скорее вопрос не к том, что есть поддержка крипта выше 414 (чего? в л2 выше 414 нету), а то, что он поддерживается для разных протоколов? + цифры то не совпадают :\
Так вот вопрос - откуда взялось
Код:
     /**
     * Реализация алгоритма шифрования Lineage 2 версии 5.1.x.
 * Использует AES-128 в режиме CBC с PKCS5Padding.
     */
и как были высчитаны "протоколы" для заголовков, если такого шифрования в л2 никогда не было
 
В Unreal Engine 4 были реализованы алгоритмы AES-128, AES-192 и AES-256
Я непосредственно сталкивался с AES_128_GCM2

Назвал Ver 5.1.x для удобства и не более того.

Некоторые функции делались по наитию и находятся в тестовом режиме.
 
Называйте как душе угодно
Вопрос второй остается открытый - откуда взялась таблица протоколов если игра на Unreal 2.5 написана?
Java:
         /**
     * Создает информацию о протоколе AES 51x.
         *
         * @param header начало файла для анализа
     * @return информация о протоколе
         */
        private static ProtocolInfo createAes51xInfo(byte[] header) {
            boolean compressed = false;
            int version = 516;
           
            // Проверяем флаг сжатия в заголовке
            if (header.length >= 7) {
                if (header[4] == 0x01) {
                    compressed = true;
                }
               
                // Определяем точную версию
                if (header.length >= 8) {
                    version = header[7] & 0xFF;
                    if (version == 0) {
                        version = 516; // По умолчанию для Hellbound
                    } else if (version == 1) {
                        version = 517; // GoD
                    } else if (version == 2) {
                        version = 530; // Harmony
                    } else if (version == 3) {
                        version = 531; // Tauti
                    } else if (version == 4) {
                        version = 532; // Glory Days
                    } else if (version == 5) {
                        version = 534; // Infinite Odyssey
                    } else if (version == 6) {
                        version = 559; // Helios
                    } else if (version == 7) {
                        version = 578; // Eternal
                    } else if (version == 8) {
                        version = 581; // Prelude of War
                    } else if (version == 9) {
                        version = 600; // Fafurion
                    } else if (version > 9) {
                        version = 600 + version - 9; // Более новые версии
                    } else {
                        version = 516; // По умолчанию
                    }
                }
            }
           
            ProtocolInfo info = new ProtocolInfo(version, CryptoOperations.CryptoType.AES, compressed);
            info.setParam("subversion", version);
            return info;
        }
Ну и что за версии тут указаны?
Логически - Prelude Of War - 225/235/245, когда Fafurion - 166/196
И версии Eternal вроде не существует, ну официально точно
 
почему нет протоколов c1, c2, c3, c4, c5, interlude, kamael, gracia final, gracia epilogue, high five?
 
какие же вы вредные ей богу. Сделал от своей головы - захотелось. Посмотреть заполнение данными для удобоваримости личной и не более.
И если говорить о протоколах то о великие мудрецы:
C3 557/560 C4 65x
Имело место быть.
почему нет протоколов c1, c2, c3, c4, c5, interlude, kamael, gracia final, gracia epilogue, high five?
 
What are some unique encryption methods?
 
Пробовал кто? Есть скриншоты?
 
Данный сайт использует cookie. Вы должны принять их для продолжения использования. Узнать больше…