PDA

Просмотр полной версии : Вопрос по AuthLogin


Stimer
21.10.2009, 15:22
Приветствую!
Решил переписать своего старого бота С6 под Грацию финал, столкнулся с такой проблемой... прошел авторизацию на логине дошел до гейма отправил протокол - получил ключ и стопарнулся на пакете AuthLogin.
В интерлюде ет было так:

procedure GS_RequestAuthLogin(login: string);
var
data: array[0..78] of byte;
i,len: integer;
ulogin: string;
begin
len:=23+(length(login)*2);
data[0]:=$08;
for i:=1 to length(login) do begin
ulogin:=UOrd(login[i]);
data[i*2-1]:=byte(ulogin[1]);
data[i*2]:=byte(ulogin[2]);
end;
data[len-22]:=$00;
data[len-21]:=$00;
data[len-20]:=SessionKey2[4];
data[len-19]:=SessionKey2[5];
data[len-18]:=SessionKey2[6];
data[len-17]:=SessionKey2[7];
data[len-16]:=SessionKey2[0];
data[len-15]:=SessionKey2[1];
data[len-14]:=SessionKey2[2];
data[len-13]:=SessionKey2[3];
data[len-12]:=SessionKey1[0];
data[len-11]:=SessionKey1[1];
data[len-10]:=SessionKey1[2];
data[len-9]:=SessionKey1[3];
data[len-8]:=SessionKey1[4];
data[len-7]:=SessionKey1[5];
data[len-6]:=SessionKey1[6];
data[len-5]:=SessionKey1[7];
data[len-4]:=$01;
data[len-3]:=$00;
data[len-2]:=$00;
data[len-1]:=$00;
SendGsp(data,len,true);

end;
Подампил пакеты клиента, заметил разницу, дописал константную постоянную:

procedure GS_RequestAuthLogin(login: string);
var
data: array[0..78] of byte;
i,len: integer;
ulogin: string;
begin
len:=35+(length(login)*2);
data[0]:=$2B;
for i:=1 to length(login) do begin
ulogin:=UOrd(login[i]);
data[i*2-1]:=byte(ulogin[1]);
data[i*2]:=byte(ulogin[2]);
end;
data[len-34]:=$00;
data[len-33]:=$00;
data[len-32]:=SessionKey2[4];
data[len-31]:=SessionKey2[5];
data[len-30]:=SessionKey2[6];
data[len-29]:=SessionKey2[7];
data[len-28]:=SessionKey2[0];
data[len-27]:=SessionKey2[1];
data[len-26]:=SessionKey2[2];
data[len-25]:=SessionKey2[3];
data[len-24]:=SessionKey1[0];
data[len-23]:=SessionKey1[1];
data[len-22]:=SessionKey1[2];
data[len-21]:=SessionKey1[3];
data[len-20]:=SessionKey1[4];
data[len-19]:=SessionKey1[5];
data[len-18]:=SessionKey1[6];
data[len-17]:=SessionKey1[7];
data[len-16]:=$08;
data[len-15]:=$00;
data[len-14]:=$00;
data[len-13]:=$00;
data[len-12]:=$6B;
data[len-11]:=$01;
data[len-10]:=$00;
data[len-9]:=$00;
data[len-8]:=$00;
data[len-7]:=$00;
data[len-6]:=$00;
data[len-5]:=$00;
data[len-4]:=$01;
data[len-3]:=$00;
data[len-2]:=$00;
data[len-1]:=$00;
SendGsp(data,len,true);

end;

Посылаю в ответ тишина, смотрю дампы бота и клиента..
Клиент:
2B 73 00 74 00 69 00 6D 00 65 00 72 00 66 00 78 00 00 00 C6 02 F7 76 47 78 39 80 26 7F A2 87 19 54 D1 D2 08 00 00 00 6B 01 00 00 00 00 00 00 01 00 00 00
Бот:
2B 73 00 74 00 69 00 6D 00 65 00 72 00 66 00 78 00 00 00 8C 77 94 A3 3B 33 5D F4 00 00 00 00 00 00 00 00 08 00 00 00 6B 01 00 00 00 00 00 00 01 00 00 00
Собственно делаю выводы что с времен Ил чет изменилось, дайте ктонить информацию откуда растут значения выделенные.

alexteam
21.10.2009, 15:49
выделенное цветом - ключи авторизации и плэй ключи получаемые во время логина на лс.
у тебя нет логин ключей. которые выуживаются из LoginOk при авторизации на ЛС. из 4-8 байтов этого пакета.
судя по тому что ты получаешь плей ключи - ищи где после выбора сервера у тебя в коде обнуляются логинключи.

Добавлено через 4 минуты
возможно они нигде не обнуляются, а действительно равны нулю в логинок, что в принципе немного абсурдно..
тогда это будет явным признаком наличия защиты от ботоф -)

Stimer
21.10.2009, 16:17
Благодарю, проблема решена)
Оказывается в ИЛ ети ключи не были важны и пускало так...интересно но факт)

Asmoday
02.05.2010, 16:11
alexteam, если не сложно подскажи пожалуйста что идет на оф серверах в этом же пакете последние 12 байт (выделены цветом)?

2B - ID пакета
4D 00 61 00 6C 00 6F 00 6A 00 53 00 68 00 65 00 00 00 - логин
C6 3F 01 00 - PlayKey2
91 82 00 00 - PlayKey1
C6 3F 01 00 - LoginKey1
27 52 7C 1D - LoginKey2
08 00 00 00 - константа
00 80 8E 20 -?
F8 3A 00 00 - ?

Не в курсе алгоритма генерации их на стороне клиента?

AdDa
04.05.2010, 03:05
alexteam, если не сложно подскажи пожалуйста что идет на оф серверах в этом же пакете последние 12 байт (выделены цветом)?

2B - ID пакета
4D 00 61 00 6C 00 6F 00 6A 00 53 00 68 00 65 00 00 00 - логин
C6 3F 01 00 - PlayKey2
91 82 00 00 - PlayKey1
C6 3F 01 00 - LoginKey1
27 52 7C 1D - LoginKey2
08 00 00 00 - константа
00 80 8E 20 -?
F8 3A 00 00 - ?

Не в курсе алгоритма генерации их на стороне клиента?

Походу как стали запихивать MAC адрес. Проверь через ipconfig /all для данного примера пакета
А ключи которые отправляет AuthLogin конечно же приходят от сервера. Например ключи гейм сервера в пакете 0x2e (keypacket).

Yegor
09.05.2010, 23:29
Походу как стали запихивать MAC адрес

Да ну, это же жесть!!!

AdDa
13.05.2010, 03:15
Проверить это очень просто. Достаточно сниф данного пакета с офф сервера и выполнить Ipconfig /all.

P.S. Почему жесть? Как будто MAC адрес сложно изменить?

Yegor
13.05.2010, 03:32
AdDa, жесть что слишком легко палится многооконка.
Ты же не будешь менять мак между запуском первого и n-ого окна.
Хотя если учесть что многооконка пока что спокойно работает наверно мак адрес все таки не берется в расчет.

Argot
25.05.2010, 17:14
AdDa, жесть что слишком легко палится многооконка.
Ты же не будешь менять мак между запуском первого и n-ого окна.
Хотя если учесть что многооконка пока что спокойно работает наверно мак адрес все таки не берется в расчет.

Мак легко меняется манипуляцией апи ) пишется маленький патчик за 5 минут. И у тебя всегда будет динамический Мак при каждом его запросе )).

TheSun
27.05.2010, 19:30
Господа, прошу помощи. Уже все мозги себе свернул :confused:

Есть пакет от сервера (CriptInit ??):
19 00 2E 01 5B 84 C5 45 12 68 6C C8 01 00 00 00 33 00 00 00 00 99 CC 4D 6E

Следом уходит пакет на сервер (AuthLogin ??)
AD 89 D2 06 6D 6F 60 EA 24 B6 63 B0 81 CB 08 D6 06 AD 94 CE EA 4B EF CB 43 01 23 68 1F FE 1E AB 02 10 6D 4E 52 0D CE ED 3C 3B 23 4F 61 56 49 20 8F 3D D8 59 02

Как с помощью первого пакета расшифровать второй?

Руофф.

TrUnK
27.05.2010, 23:32
Мак легко меняется манипуляцией апи ) пишется маленький патчик за 5 минут. И у тебя всегда будет динамический Мак при каждом его запросе )).

Может еще объяснишь как будет работать сеть, если твой мак будет постоянно меняться?
Хотя работать поидее будет, но медленно и через жопу, ибо будет постоянное обновление arp записи на ближайшем роутере.

Yegor
28.05.2010, 00:48
Скорее всего что не будет, думаю связь будет рвать во время смены мака. На физическом уровне сети мак это святое при маршрутизации кадров.

Argot
28.05.2010, 09:39
Может еще объяснишь как будет работать сеть, если твой мак будет постоянно меняться?
Хотя работать поидее будет, но медленно и через жопу, ибо будет постоянное обновление arp записи на ближайшем роутере.

Теоретики ? )) у меня не что не рвется ). Да причем тут роутер если Мак будет меняется только для клиента л2 ).

xkor
28.05.2010, 10:31
TheSun, расковыряв алгоритмы шифрации фроста)

TheSun
28.05.2010, 10:48
TheSun, расковыряв алгоритмы шифрации фроста)

Вот блин. Т.е. тут не обычный (хитровыкрученый) XOR, как везде написано?

Prixmegently
28.05.2010, 19:12
А ты как думал. Траффик дополнительно шифруется.

xkor
28.05.2010, 20:19
TheSun, ну впринципе на вид там доп шифрация эт XOR, только вот ключик меняется по какому то жуткому алгоритму который хрен расковыряешь (хотя ктот грят расковырял)

TheSun
14.06.2010, 19:36
Логин сервер прошел. Возник вопрос по гейм серверу... (Исходящие пакеты пока вообще не трогаю).
Шифруются ли байты длины во входящих пакетах от гейм сервера на руоффе?

До пакета QuestList включительно, все чудесно декодируется, потом идет отправка на сервер подряд двух пакетов (EnterWorld наверно и еще какой-то), после чего с сервера идут пакеты с подозрительно большой длиной... Это действительно длинные пакеты, или тут начинается еще какое-то шифрование как в исходящих?

xkor
15.06.2010, 01:36
TheSun, на руофе фрост шифрует не пакеты а весь поток данных и ему не важно что там, размер гейм пакета или сам гейм пакет...
ЗЫ первые пакеты нормальные так как фрост начинает шифровать входящие (вроде входящие, точно уже не помню и да и измениться за пол года могло) пакеты не сразу