Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Разработка
Войти через OpenID

Разработка Раздел для совместной разработки/доработки программы

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 18.06.2010, 13:51   #11
Новичок
 
Аватар для ecl
 
Регистрация: 15.06.2010
Адрес: Москва
Сообщений: 11
Сказал Спасибо: 9
Имеет 1 спасибку в 1 сообщении
ecl пока неопределено
По умолчанию

00 01 66 14 00 00 0A 7D 00 00 C8 27 93 01 A1 6C 31 97 01 00 00 00 01 00 00 00 это инит ключ отловленый пакетхаком

Расшифровка его
Tèï: 0x00 (KeyInit)
Pàçìåð: 26+2
Âðåìÿ ïðèõîäà: 12:46:02:465
0002 c 01: 1 (0x01)
0003 q Key: 137481903150182
000B d d: 26421192 (0x019327C8)

не понятно почему в твоем коде обрабатывается case 0x2E:

Если не трудно прокометни пожалуйста свой код русским языком что деается и зачем

P.S. ушел читать про протокол L2 thx.

Последний раз редактировалось ecl, 18.06.2010 в 14:03.
ecl вне форума   Ответить с цитированием
Старый 18.06.2010, 14:47   #12
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

c4-t0
00=KeyInit:c(01)q(Key)d(d)

T1+
2E=KeyPacket:c(id 0-wrong protocol,1-protocol ok)q(key)d(01)d(ServerID)c(01)d(ObfuscationKey)
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
За это сообщение alexteam нажился спасибкой от:
Старый 18.06.2010, 14:48   #13
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

я вот как то тоже начинал писать аналог пакетхака только не для линейки а универсальный на C#, но чтот не пошло.., дальше реализации socks5 сервера дело не сдвинулось(
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 18.06.2010, 14:49   #14
Новичок
 
Аватар для arrjj
 
Регистрация: 27.05.2010
Сообщений: 26
Сказал Спасибо: 1
Имеет 13 спасибок в 11 сообщенях
arrjj пока неопределено
По умолчанию

Сорь, у мну для грации там (финал/эпилог), пакеты отличаются от интерлюдии
__________________
#define true false//счастливой отладки суки
arrjj вне форума   Ответить с цитированием
Старый 18.06.2010, 19:46   #15
Новичок
 
Аватар для ecl
 
Регистрация: 15.06.2010
Адрес: Москва
Сообщений: 11
Сказал Спасибо: 9
Имеет 1 спасибку в 1 сообщении
ecl пока неопределено
По умолчанию

Спасибо всем.
Теперь работает крипт\декрипт пакетов.
Приступим к реализации парсера пакетов.
ecl вне форума   Ответить с цитированием
Старый 20.06.2010, 02:01   #16
Новичок
 
Аватар для ecl
 
Регистрация: 15.06.2010
Адрес: Москва
Сообщений: 11
Сказал Спасибо: 9
Имеет 1 спасибку в 1 сообщении
ecl пока неопределено
По умолчанию

Провафлил я с шифрацией, на первый взгляд было все заебись да не так уж заебись оказалось=(
Дешифрую вот в такое
2D 43 76 10 48 02 00 00 07
вместо
2D 43 76 10 48 02 00 00 00 (это пакет хак дешифровал)


static public void DecryptPacket(Packet packet)
{
byte PreviousByte = 0, CurrentByte;
for (int k = 0; k < packet.Data.Length; k++)
{
CurrentByte = packet.Data[k];
packet.Data[k] = (byte)(CurrentByte ^ packet.CurrentClient.GKey[k & 15] ^ PreviousByte);
PreviousByte = CurrentByte;
}
if (packet.FromServer)
{
unchecked
{
int old = packet.CurrentClient.GKey[8] & 0xff;
old |= (packet.CurrentClient.GKey[9] << 0x08) & 0xff00;
old |= (packet.CurrentClient.GKey[10] << 0x10) & 0xff0000;
old |= (packet.CurrentClient.GKey[11] << 0x18) & (int)0xff000000;
old += packet.Size;
packet.CurrentClient.GKey[8] = (byte)(old & 0xff);
packet.CurrentClient.GKey[9] = (byte)((old >> 0x08) & 0xff);
packet.CurrentClient.GKey[10] = (byte)((old >> 0x10) & 0xff);
packet.CurrentClient.GKey[11] = (byte)((old >> 0x18) & 0xff);
}

}
}

Размер Пакета определяю из первыйх двух байт пакета.
string SizeHex = data[1].ToString("X2") + data[0].ToString("X2");
Size = int.Parse(SizeHex, NumberStyles.AllowHexSpecifier);

Вынес себе весь мозг уже не могу понять где косячу.
Help me please!

Последний раз редактировалось ecl, 20.06.2010 в 09:43.
ecl вне форума   Ответить с цитированием
Старый 20.06.2010, 11:47   #17
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

у тебя ж ИЛ.. вроде...
а ты юзаеш ксор с т1+..
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
За это сообщение alexteam нажился спасибкой от:
Старый 20.06.2010, 15:16   #18
Новичок
 
Аватар для arrjj
 
Регистрация: 27.05.2010
Сообщений: 26
Сказал Спасибо: 1
Имеет 13 спасибок в 11 сообщенях
arrjj пока неопределено
По умолчанию

порпобуй используй не int а unsigned int
вместо этого string SizeHex = data[1].ToString("X2") + data[0].ToString("X2");
Size = int.Parse(SizeHex, NumberStyles.AllowHexSpecifier);
лучше какнить так: Size=data[1]*0x100+data[0]; (data какнить типа unsigned char мона объявить)
Ну и чтоб посмотреть где ты ошибся - подебаж пх и посмотри как там ключ меняется и как у тебя.
alexteam, в интерлюдии также как и в грации
__________________
#define true false//счастливой отладки суки
arrjj вне форума   Ответить с цитированием
За это сообщение arrjj нажился спасибкой от:
Старый 20.06.2010, 16:08   #19
Новичок
 
Аватар для ecl
 
Регистрация: 15.06.2010
Адрес: Москва
Сообщений: 11
Сказал Спасибо: 9
Имеет 1 спасибку в 1 сообщении
ecl пока неопределено
По умолчанию

Оказывается увеличивать надо не на Size который записан в первых 2х байтах а на Size-2, т.е. длина пакета не учитывая длины первых двух байт с данными о размере.
+ ко всему прочему ток щас заметил что у меня некоторые пакеты приходят слипшимися, приеду с дачи буду править.

Спасибо.
ecl вне форума   Ответить с цитированием
Старый 20.06.2010, 16:12   #20
Новичок
 
Аватар для arrjj
 
Регистрация: 27.05.2010
Сообщений: 26
Сказал Спасибо: 1
Имеет 13 спасибок в 11 сообщенях
arrjj пока неопределено
По умолчанию

Слипшиеся/обрезанные пакеты будут приходить всегда, я решил так это:
Код:
void l2m_packets::ondata()
{
    start:

    if((con->bytesAvailable()<2) && (!underflow))
        return;
    if(!underflow)
    {
        l2m_uch sz[2];
        sz[0]=0;
        sz[1]=0;
        size=0;
        con->read((char*)sz,2);
        size=sz[0]+sz[1]*0x100;
        if(size==0)
            return;
        delete [] tmp_buf;
        size-=2;
        tmp_buf=new l2m_uch[size];
        readed=con->read((char*)tmp_buf,size);
        if(readed!=size)
        {
            underflow=true;
            return;
        }
    }
    else
    {
        l2m_uint readed2=0;
        readed2=con->read((char*)tmp_buf+readed,size-readed);
        readed+=readed2;
        if(readed==size)
            underflow=false;
        else
            return;
    }
    in.buffromuch(tmp_buf,size);
    onpacket();
    goto start;
}
__________________
#define true false//счастливой отладки суки
arrjj вне форума   Ответить с цитированием
За это сообщение arrjj нажился спасибкой от:
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Разработка



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 03:36.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!