Программинг Форум для тем связанных с программированием
09.06.2010, 18:09
#11
Рыцарь
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
в сурсах пх класс tencdec кажеццо.
+ ключи при отсылке иниткея с сервера не трогаем.
вроде все.
__________________
L2Ext - project closed.
Последний раз редактировалось alexteam, 09.06.2010 в 18:13 .
За это сообщение alexteam нажился спасибкой от:
09.06.2010, 18:22
#12
Новичок
Регистрация: 07.06.2010
Адрес: Russia
Сообщений: 14
Сказал Спасибо: 11
Имеет 1 спасибку в 1 сообщении
Цитата:
Сообщение от
alexteam
+ ключи при отсылке иниткея с сервера не трогаем.
т.е. не трогаем? а как шифровать пакеты клиенту? ирасшифровывать?
__________________
Coding is my live...
09.06.2010, 18:22
#13
Рыцарь
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
ай. L2Xor класс точнее.
в том же модуле.
http://l2phx.pp.ru/svn/l2phx3/3.5.x/units/uencdec.pas
генерим иниткей. отсылаем на клиент.
создаем вот такой вот класс. делаем иниткей в нем
дальше гоняем пакеты через EncryptGP/DecryptGP
иниткей на клиент приходит нексореный. все последующее - ксореное.
то же касаеться всех пакетов идущих от клиента, до того как мы ему ключ подсунем.
__________________
L2Ext - project closed.
За это сообщение alexteam нажился спасибкой от:
09.06.2010, 18:28
#14
Новичок
Регистрация: 07.06.2010
Адрес: Russia
Сообщений: 14
Сказал Спасибо: 11
Имеет 1 спасибку в 1 сообщении
Цитата:
Сообщение от
alexteam
а где тут генерится InitKeY? Смотрю и не вижу
__________________
Coding is my live...
09.06.2010, 18:43
#15
Рыцарь
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
нигде. ключ делай рандомный. запоминай. и отсылай.
потом этот же ключ используй как параметр для метода InitKey.
__________________
L2Ext - project closed.
За это сообщение alexteam нажился спасибкой от:
09.06.2010, 18:49
#16
Новичок
Регистрация: 07.06.2010
Адрес: Russia
Сообщений: 14
Сказал Спасибо: 11
Имеет 1 спасибку в 1 сообщении
alexteam , Смотри я генерирую ключ. Отсылаю клиенту. и сразу же делаю l2xorC.initkey(мой ключ) и l2xorS.initkey(мой ключ), после того как мне отвечает клиент, я дешифрую l2xorC.DecriptGP(Pck[2],size-2), и логин считывается не корректно, т.е первые 4 символа логина считываются норм- потом вопросы, при попытке отправить список чаров ( l2xorS.EncriptGP(PckCharList[2],size-2) ) - ПХ вообще показывает не известный пакет
__________________
Coding is my live...
09.06.2010, 19:14
#17
Рыцарь
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
ай..ай..
в пх 2 екземпляра класса l2xorC и l2xorS т.к. из за того что там 4 направления. от клиента к пх и обратно и от сервера к пх и обратно.
в сервере нужен всего 1 екземпляр класса l2Xor.
DecryptGP - дешифруем пакеты от клиента
EncryptGP - Шифруем пакеты и отправляем на клиент.
Добавлено через 8 минут
хотя.. эта ошибка не должна была повлиять на декрипт первого пакета с логином от клиента.. проверяй правильно ли ты отправляешь ключ %)
__________________
L2Ext - project closed.
Последний раз редактировалось alexteam, 09.06.2010 в 19:14 .
Причина: Добавлено сообщение
09.06.2010, 19:18
#18
Новичок
Регистрация: 07.06.2010
Адрес: Russia
Сообщений: 14
Сказал Спасибо: 11
Имеет 1 спасибку в 1 сообщении
Всёравно логин не правильно считыватся
Ключ отправляю так
Код:
PckStr:=HexToStr('2E 01 A3 E4 FA 62 A0 BD DB B4 C8 27 93 01 A1 6C 31 97 01 00 00 00 00 00 00 00 00 00 00 00 00'); - это пакет от l2j сервера без размера
CryptXor.InitKey(PckStr[2],True); // инициализирую ключ у себя
SendToClient(PckStr); // отправляю ключ клиенту
__________________
Coding is my live...
Последний раз редактировалось Алёна, 09.06.2010 в 19:21 .
09.06.2010, 19:39
#19
Новичок
Регистрация: 27.05.2010
Сообщений: 26
Сказал Спасибо: 1
Имеет 13 спасибок в 11 сообщенях
Код:
switch(inptype)
{
case 0x2E://InitCrypt
{
if(!in.readC())
QMessageBox::information(NULL, "L2M Alfa:Omg",
"Wrong protocol version can be troubles :'(");
for(int x=0;x<8;x+=1)
{
inxorkey[x]=in.readC();
outxorkey[x]=inxorkey[x];
}
xorkeyaccepted=true;
out.writeC(0x2b);
l2m_mstr a;
l2m_uch tmp[28];
for(int x=0;x<28;x+=1)
tmp[x]=0;
for(int x=0;x<14;x+=1)
tmp[x*2]=ulogin[x];
a.fromuch(tmp,28);
a.killzero();
out.writeS(&a,true);
out.writeC(0x00);
out.writeD(playOK[1]);
out.writeD(playOK[0]);
out.writeD(loginOK[0]);
out.writeD(loginOK[1]);
out.writeD(0);
out.writeD(0);
out.writeD(0);
sendpacket();
}
break;
}
Так у мну в клиенте а так на l2j серваке
Код:
public void writeImpl()
{
writeC(0x2e);
writeC(_id); //0 - wrong protocol, 1 - protocol ok
for (int i = 0; i < 8; i++)
{
writeC(_key[i]); // key
}
writeD(0x01);
writeD(0x01); // server id
writeC(0x01);
writeD(0x00); // obfuscation key
}
За это сообщение arrjj нажился спасибкой от:
09.06.2010, 19:52
#20
Новичок
Регистрация: 07.06.2010
Адрес: Russia
Сообщений: 14
Сказал Спасибо: 11
Имеет 1 спасибку в 1 сообщении
Код:
PckStr:=#$2E;
WriteC(PckStr,$01);
WriteD(PckStr,777777);
WriteD(PckStr,777777);
WriteD(PckStr,666666);
WriteD(PckStr,1);
WriteC(PckStr,$01);
WriteD(PckStr,0);
WriteD(PckStr,0);
WriteD(PckStr,0);
CryptXor.InitKey(PckStr[2],True); //7B 32 8B 04 77 24 90 F3
SendToClient(PckStr);
Переписала, ничего не изменилось
__________________
Coding is my live...
Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
Часовой пояс GMT +4, время: 19:24 .
vBulletin style designed by
MSC Team .
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод:
zCarot
Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!