Тема: RequestAuthLogin
Показать сообщение отдельно
Старый 21.02.2012, 16:25   #2
Местный
 
Аватар для Sherman
 
Регистрация: 24.04.2008
Сообщений: 364
Сказал Спасибо: 15
Имеет 116 спасибок в 83 сообщенях
Sherman пока неопределено
По умолчанию

Не богуугодным делом ты занялся... неправославно это тырить своими троянами логиныпароли православных ботоводов.

Но если уж хочется, то...
Код:
procedure RequestAuthLogin(login,password: string);
var
  data: array[0..175] of byte;
  crypt_text: string;
begin
  FillChar(data,Length(data),0);
  crypt_text:=RSAEncrypt(login,password,RepairKey(RSA_key));
  Move(crypt_text[1],data[1],128);
  Move(GGAuthResponse,data[129],4);
  data[149]:=8;
  AddCheckSumm(Data,160);
  SendPkt(Data,176);
end;
RSA_key получается из:
Код:
procedure LS_init(buff: array of byte; Len: integer);
begin
  if Len<8 then exit;
  Move(buff[3],SessionID,4);
  if Len>=155 then begin
    SetLength(RSA_key,128);
    Move(buff[11],RSA_key[1],128);
    ToLog('RSA Key changed');
  end;
  if Len>=171 then begin
    SetLength(bf_key,16);
    Move(buff[155],bf_key[1],16);
    bf.Init(bf_key);
    ToLog('BlowFish key changed');
  end;
  //sending AuthGG packet
  AuthGameGuard;
end;
Следовательно, надо
1. нарыть RSADecrypt (такой нет т.к. шифрование необратимое , без закрытого ключа не работает)
2. перехватить RSAkey из первого пакета от логин сервера в ответ на Connect сокета, т.к. называемого LS_Init
3. Перехватить 128 байт пакета RequestAuthLogin, засунуть crypted_text и RSAKey в несуществующую функцию RSADecrypt, b ждать несколько миллонов лет....


Ну и пруф в пределах форума : ТЫК

Последний раз редактировалось Sherman, 21.02.2012 в 16:55.
Sherman вне форума   Ответить с цитированием
За это сообщение Sherman нажился спасибкой от: