PDA

Просмотр полной версии : Newxor под L/2/f/i/n/a/l/...


birmanian
01.10.2009, 19:07
Ку всем! есть вопрос!
я разобрался с шифрацией на своём сервере - известно откуда брать ключи и алгоритм известен. Кстати не сильно отличаются от стандартного :)
Так вот, может кто-то сделать newxor.dll по этим данным или нужно что-то ещё?
Или подскажите как эту инфу в скрипт слить так, чтоб нормально в phx работать можно было. А то для меня это тёмный лес :confused:!
Заранее благодарен!

birmanian
02.10.2009, 01:34
Речь пойдёт о недавно открытом сервере с клиентом Gracia Final...

После некоторых манипуляций с RAW траффиком мне удалось выяснить, что:
1) Шифрование пакетов начинается сразу после пакета KeyPacket;
2) Шифрование на сервере - обычное смещение XOR;
3) Ключ XOR состоит из 2х частей по 8 байт, причём 1я часть приходит с сервера и находится непосредственно в KeyPacket (с 3 по 10 байты), вторая же часть является заданной константой, которая берётся по всей видимости из недр клиента...

Покопавшись в пакетах и помудрив с ними при помощи l2dpx выяснился и алгоритм шифрования:

var
k: integer;
begin
for k:=size-1 downto 1 do
pck[k]:=pck[k] xor key[k and 15] xor pck[k-1];
if size<>0 then pck[0]:=pck[0] xor key[0];
IncAsInteger(key, 8, size);
end.


Также выяснилось, что ключи исходящего траффика и входящего не зависят друг от друга! Однако для исходящих и входящих пакетов применяется, по сути хоть и один и тот же алгоритм, но со своими счётчиками! Я имею ввиду, что начальный 16 байтный ключ применяется для обоих типов траффика и каждый из типов потом идёт по одинаковому алгоритму, но у каждого свой цикл. (для тех, кто интересуется, пакеты сырые, шифрованые и расшифрованые для наглядности собраны тут (http://slil.ru/28035192)).

И наконец, к чему это всё: нужен кто-то, кто сможет проанализировав всю эту инфу состряпать newxor.dll, чтобы l2phx дал возможность нормально работать с траффиком! Помогите плз с dll'кой или если кто в курсе как это делается, то подскажите как оформить скрипт для тех же целей).

Используемая версия l2phx: 3.5.24.142. В настройках снята галка "Обход смены XOR ключа" и стоит галка "Не дешифровать траффик". Включён LSP перехват коннекта.

nezabudkin
02.10.2009, 13:28
birmanian, тебе сильно повезло, алгоритм шифрования у тебя используется родной от линейки, а что творит пакетхак с разными комбинациями галочек? Он хоть часть трафика дешифрует? Как выглядит та часть ключа, которая константа?

alexteam
02.10.2009, 14:04
родной алгоритм просто изменена константа ?
возми пример невксора с родным алгоритмом.
измени константу, скомпиль, прилепи к пх и радуйся.

birmanian
02.10.2009, 14:38
Если поставить галку "Обход смены XOR" то по сути ничего не происходит... применяется тот же алгоритм и та же система ключей - т.е. no effect от этой галки у меня.
Если же включить дешифрацию с XOR'ом, то phx муть несёт...
Дешифрация без XOR'а приводит к тому, что правильно дешифруются пакеты только входящего трафика, а у исходящего неверно дешифруется только первые 2 байта... вот такая ерунда :(
Работает только с перехватом коннекта LSP... с обычным перехватом не отлавливает ничего - даже не видит, что коннект есть(

всё! сорцы нашёл... буду калдавать)