L2PacketHackФорум программы L2PacketHack, всё что с ней связано находится тут.
Правила раздела!
Категорически запрещено:
* Просить пакеты/скрипты на шмот/адену/другие вещи;
* Просить (помочь) взломать/сломать сервак/аккаунт или раздеть/наказать кого-то на любом серваке;
* Просить научить работать с программой, если не понимаете элементарных вещей в отношениях клиент-сервер (так как, если вы их понимаете, то вопросов по основным возможностям программы быть недолжно);
* Все посты не удовлетворяющие этим запретам, а так же не относящиеся к теме будут удаляться при первой возможности.
* Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы.
* Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
* Данные запреты неподлежат обсуждению.
Я только недавно решил побаловаться с пакетами. Почитал несколько статей о l2phx, попробовал поиграться с пакетами на серве, где играю. Использую l2phx 3.1.8 (более новые версии не захотели работать). Заметил, что пойманые пакеты от клиента как-то странно определяются прогой. Например, пакет на соц действие определяется как Ride. Но потом заметил, что после релогина персом, тп пакетов становится совершенно другим. И тот же самый пакет на соц действие определяется как "неизвестный" (Unknown). Приведу конкретный пример пакетов на использование Healing Potion:
FB 67 EC 77 22 4A 5B 2B 00
после релогина это же действие выглядит как:
21 5E 10 85 60 15 96 95 00
Попробовал отлавливать пакеты бота (Волкер) - всё прекрасно ловится и определяется, но бот только торговый и ничего не умеет делать. Хотелось бы разобраться с клиентом.
Как я понял из мануалов, тип пакета должен быть постоянным. Хотелось бы узнать, что это такое. Или надо использовать какую другую версию пх (3.1.9 и 3.2.0 не захотели работать), или это хитрая защита сервера от читеров, или же у меня какие-то настройки неправильно стоят. Если надо что-то ещё уточнить - пишите что.
Попробуй взять последнюю версию здесь и в неё положи inject.dll от 3.1.8
У тебя сервак не Грация случаем? В ней ID пакетов меняются.
Эти кнопочки появились в более поздней версии, уже после 3.2.0
Отвечу по порядку.
Попробовал загрузить версию 3.4.1.81 и в неё скинуть inject из 3.1.8. Не дало ровным счетом ничего. Пакеты всё равно меняются при перезаходе. Пробовал выбирать разные протоколы - от с4 до камаэля - так же ничего не даёт. Пробовал включать/отключать галочки Kamael-Hellbound-Gracia и Gracia (off server) - так же результат нулевой.
Далее. Сервак не Грация, а Интерлюдия.
В связи с этим, я делаю вывод, что на серве идёт свой алгоритм шифрования. И вот тут есть подозрение, что ключ меняется каждый раз при заходе персонажем и передаётся во время захода.
Но мне немного непонятен механизм работы "торгового" бота. Пакеты от бота очень даже хорошо дешифруются. Но заходит он в режиме ограниченных функций (13:13:25 PROTECTION : Now you has logged with limit functionality) - потому невозможны таргет, принятие пати и другие штучки. Значит, сервер определяет, где заходит клиент, а где бот.
Приведу пакет от бота и от клиента "Protocol Version":
Бот:
00 EA 02 00 00 09 07 54 56 03 09 0B 01 07 02 54 54 56 07 00 02 55 56 00......бла-бла-бла....
версия 746
Клиент:
00 57 04 00 00 09 07 54 56 03 09 0B 01 07 02 54 54 56 07 00 02 55 56 00........бла-бла-бла.....
версия 1111
Вопрос: Вот с помощью этих пакетов определяется где клиент, а где бот? И где в клиенте прописано, по какому протоколу он будет работать? Или же нужно рассмотреть ещё и пакеты серва?
P.S. Спасибо что ответили на мою тему, а не послали "фпоиск, нуб!" =)
Прямой посыл в тему "Дешифрируем траффик"?
Пробовал её читать, но там сразу же в такие дебри авторы лезут... А вот нельзя ли подсказать, где можно почитать что-нибудь по основам этого дела? Ну и хотелось бы понять сам механизм работы изначального шифрования, если я правильно понимаю, что в обычном режиме есть некоторая стандартная шифрация пакетов, которая всем известна (ну или как минимум автору данной программы) и которая стоит на сервах, где админы - лентяи.
Стал анализировать пакеты. Вычислил, что ключ меняется именно при заходе на аккаунт. При смене перса с этого же акка пакеты не изменились. Далее, стал смотреть, какой тип пакета не меняется при перезаходах. Обратил внимание на пакетик "Tип: 0x00 (KeyInit: )" и стал играться с ним. Обнаружил связь этого пакета с пакетом для отправки сообщения в пати чат. Я отправлял слово Hello. Изначально, пакет должен выглядеть так:
Обратил внимание, что часть пакета дополнительной шифрации не подверглась, а часть изменилась, а именно, первые 8 байт. Далее 8 байт - без шифрации, а вот следующая восьмерка (Выяснил более длинным сообщением) - снова шифруется, причем, похоже, таким же методом.
Теперь я сопоставил 8 байт из пакета KeyInit, которые заботливо были выделены в программке и зашифрованные 8 байт в пакете с сообщением. Составил такую табличку:
Исходник___38 48 0065 _ 00 6C 006C
Ключ_______8B 99 7B7C _ B3 F8 7F80
Результат___23 AA 7B19 _ 08 C0 7FEC
Методом академика Тыка получил, что если применять операцию XOr к последним 2м байтам в каждой такой четвёрке (Выделено жирным), то как раз и получим тот пакет, что и отсылается клиентом: (например) h6C XOr h80 = hEC.
Но вот сопоставить оставшиеся 2 байта никак не могу. Причем, что интересно, я выловил 5 (на большее пока терпения не хватило) разных ключиков и соответственно 5 разных пакетов на отправку одного и того же сообщения. Из варирования сообщением и последующим сопоставлением пакетов, составил табличку "умножения" для одного ключа. Т.е. зная ключ, я мог бы зашифровать любой пакет. Эта неизвестная операция(обозначу её *, не путать с умножением) производится к соответствующим 4 битам в байте: 38*1B = 5D, 35*1B = 50...казалось, уже можно было бы написать шифрующую функцию.... НО! Результат действия ключа на зашифрованный пакет меняется от ключа к ключу. Для одного ключа результат действия 38*8B = 23, а при другом ключе 38*EB = 58. Вот тут я и застрял. Где-то есть ещё один параметр, влияющий на результат, и я его не могу найти.
Может быть, написал немного коряво, просто задачка так глубоко засела в голову, что пишу это уже в 3 часа ночи .
Стал анализировать пакеты. Вычислил, что ключ меняется именно при заходе на аккаунт. При смене перса с этого же акка пакеты не изменились. Далее, стал смотреть, какой тип пакета не меняется при перезаходах. Обратил внимание на пакетик "Tип: 0x00 (KeyInit: )" и стал играться с ним. Обнаружил связь этого пакета с пакетом для отправки сообщения в пати чат. Я отправлял слово Hello. Изначально, пакет должен выглядеть так:
Обратил внимание, что часть пакета дополнительной шифрации не подверглась, а часть изменилась, а именно, первые 8 байт. Далее 8 байт - без шифрации, а вот следующая восьмерка (Выяснил более длинным сообщением) - снова шифруется, причем, похоже, таким же методом.
Теперь я сопоставил 8 байт из пакета KeyInit, которые заботливо были выделены в программке и зашифрованные 8 байт в пакете с сообщением. Составил такую табличку:
Исходник___38 48 0065 _ 00 6C 006C
Ключ_______8B 99 7B7C _ B3 F8 7F80
Результат___23 AA 7B19 _ 08 C0 7FEC
Методом академика Тыка получил, что если применять операцию XOr к последним 2м байтам в каждой такой четвёрке (Выделено жирным), то как раз и получим тот пакет, что и отсылается клиентом: (например) h6C XOr h80 = hEC.
Но вот сопоставить оставшиеся 2 байта никак не могу. Причем, что интересно, я выловил 5 (на большее пока терпения не хватило) разных ключиков и соответственно 5 разных пакетов на отправку одного и того же сообщения. Из варирования сообщением и последующим сопоставлением пакетов, составил табличку "умножения" для одного ключа. Т.е. зная ключ, я мог бы зашифровать любой пакет. Эта неизвестная операция(обозначу её *, не путать с умножением) производится к соответствующим 4 битам в байте: 38*1B = 5D, 35*1B = 50...казалось, уже можно было бы написать шифрующую функцию.... НО! Результат действия ключа на зашифрованный пакет меняется от ключа к ключу. Для одного ключа результат действия 38*8B = 23, а при другом ключе 38*EB = 58. Вот тут я и застрял. Где-то есть ещё один параметр, влияющий на результат, и я его не могу найти.
Может быть, написал немного коряво, просто задачка так глубоко засела в голову, что пишу это уже в 3 часа ночи .
оО тебя название пакета KeyInit ничего не напоминает? И вообще ты теорию щифрации ГС читал? Ты для чего велосипед изобретаешь?