Прошу помощи! Сейчас объясню все по порядку что мне не понятно...
(Исправляйте меня, если я что-то не правильно понял )
Вот очень старый пост, который является ключевым в понимании алгоритма... http://coderx.ru/showpost.php?p=3056&postcount=97
исходные данные для вычисления начального ключа присылаются сервером во 2-м пакете..
начиная с 3-го пакета- исходящего и 4-го входящего данные уже зашифрованы.. с применением начального ключа...
Как я понял "Дано" это 2я, 3я, 4я и 5я пары во 2м пакете (Начиная со входа в игру)
А вот откуда нужно найти (Начальный ключ) и что с ним потом делать (Это уже другой вопрос) мне не понятно...
Поможете разобраться в столетней проблеме...
(Надеюсь тема еще многим пригодится)
Последний раз редактировалось Nickers, 07.12.2010 в 19:55.
Nickers, вот смотри, есть, как минимум, два пути
1) Распотрошить клиент, вытащить из него алгоритм шифрования(в данном случае не подходит из-за недостатка знаний предметной области)
2) Обычно!!(расрас) 2й пакет(Init или как-то так) после начала обмена инфой с гейм сервером, содержит ключик, на основе которого генерируется ключ шифрования для текущей сессии.
Далее, сначала нам нужно найти сам алгоритм шифрования, для этого нам нужен исходный материал.
Добыча исходного материала для анализа:
Для начала нужно добиться того, чтобы пакетхак подключался к серверу и ловил пакеты, далее, ставим галку "не дешифровать трафик" или как там она обзывается.
Итак:
Нам нужны пакеты, в которых есть очень много байтов 00 идущих подряд, например: пакет UseSkill - в нем 1й байт - идшник пакета, далее 4 байта - идшник скилла (05 00 00 00 power strike - очень удобно) ну а дальше флаги нажатия клавиш шифт и контрол ( по-умолчанию - тоже нули).
Значиццо делаем так - топаем в безлюдное&безмобное место, садимся на ж... пардон на 5ю точку, выносим павер страйк на панельку быстрого доступа(или как она там называется) и зажимаем соответствующий батон на клаве. В одно мгновение к серверу улетают порядка 10-20 запросов на использование скила, после чего сервак присылает пакет эпик фейл, пардон ActionFail собссенно какого худенького мы сидя хотим павер страйк заюзать?
Так вот, сохраняем лог, точнее ту часть, где идут подряд(расрас!!11) интересующие нас пакеты юз скилл, без вкраплений левых пакетов типа валидайт позишн, нет пинг и прочего недоразумения. Ну и далее, зная, как должен выглядеть исходный пакет, и видя, как он выглядит на самом деле пытаемся методом тыка подобрать ключ и алгоритм, по которому совершается злючее коверкание трафика.
QaK, Большое тебе спасибо! 1) За то что все обьяснил 2) Одним постом
Большинство конечно уже ясно стало из главной темы ветки...
Вот что еще не понятно (Ну уж такой я )
Цитата:
Сообщение от QaK
2) Обычно!!(расрас) 2й пакет(Init или как-то так) после начала обмена инфой с гейм сервером, содержит ключик, на основе которого генерируется ключ шифрования для текущей сессии.
Есть какие-нибудь методы извлечения ключа для сессии? Стандартные чтоле... или просто пример...
И не это ли делал VORON? (И что он тут вообще делал?)
QaK, Еще вопрос:
В цитате Ворона (3й пост) он просто (Случайно) начинал ксорит байты друг не друга? оО
Плин, вот написал это и понял что нх*я не понял)
Так от куда он взял 2й кусок (Это же должен быть "Начальный ключ" который нужно находить...)
А ксорит он для получения одинаковых значений... (Алгоритм) но как начать тогда без 2го куска?
Объясни плиз как сможешь) Для меня реально проблема...
Плин... а минуту назад я уже думал что осталось перейти к практике (То есть к ломанию мозга)
Сейчас нету над чем работать (Скоро сервак мой врубят (Если админы уже додумаются защиту купить) буду потеть над алгоритмом... Обязательно сюда все отпишу (Все кроме названия сервера)
Nickers, случайно ничего не бывает, Ворон сначала вычислили алгоритм шифрования, затем для нескольких сессий нашел сочетания: начальный ключ(4 байта) из 2го пакета, и начальный ключ шифрования(8 байт) который должен генерится из первого ключа, после чего он пытался найти, по какому принципу 4 байта становятся 8ю байтами
Ясно) Большое спасибо...
1)ксорим рандомно, применяем логику, паримся - получаем Алгоритм и Начальный ключ (Для сессии)
2) Берем 4 байта (Этой же сессии) и ищем алгоритм составление этого Начального ключа...
3) 4 байта новой сессии подставляем к алгоритму составления ключа - получаем Начальный ключ новой сессии
4) Подставляем начальный Ключ в алгоритм с определенным пакетом(Шифрованным) (Из этой же сессии) получаем расшифрованный пакет, посылаем - УРА!
Надеюсь уж теперь то я все правильно понял))