Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 14.10.2011, 10:38   #1
Новичок
 
Регистрация: 14.10.2011
Сообщений: 14
Сказал Спасибо: 5
Имеет 0 спасибок в 0 сообщенях
andrewcik пока неопределено
По умолчанию

Кстати мне функция send возвращает результат своей работы в виде - 50, что это я немогу понять? в описании ошибок нет цифр 50, есть 10000, 10050, 10051 и т.д.
andrewcik вне форума   Ответить с цитированием
Старый 14.10.2011, 14:28   #2
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Цитата:
Сообщение от andrewcik Посмотреть сообщение
Кстати мне функция send возвращает результат своей работы в виде - 50, что это я немогу понять?
функция send возвращает количество отправленных байт, в случае ошибки она возвращает -1
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
За это сообщение xkor нажился спасибкой от:
Старый 13.10.2011, 22:49   #3
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

Цитата:
что на самом деле правильно?
пх попробуй подцепить к клиенту. и смотри что нужно слать.

зы. опять же. в случае если нет дополнительный криптовки траффика.
зы2. за пх могут посадить в бан.
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
Старый 14.10.2011, 13:47   #4
Пользователь
 
Регистрация: 17.12.2010
Сообщений: 37
Сказал Спасибо: 13
Имеет 1 спасибку в 1 сообщении
glukmaker пока неопределено
По умолчанию

Ну вобщем пока решил пакет ProtocolVersion оставить в том виде в каком его передает клиент, и не пытаться понять его суть...
Вернее насчет того, что клиент передает серверу информацию о своем протоколе - понятно.
Непонятно только смысл передаваемых 256 байт данных, начиная с 8-го... И непонятно то, почему у сервера своя нумерация протоколов, а у клиента своя... Ведь протокол - это вроде нечто общее, определяющее правила взаимодействия клиента и сервера.

Добавлено через 1 час 0 минут
Отправил пакет protocolVersion. Сервер мне прислал пакет с XOR-ключом.

А вот дальше пока возникла проблема с шифрованием:

Описание такое:
Код:
1.2. Шифрация пакетов GameServer'a:
Чтобы не загружать ваши и без того замученные головы, вместо алгоритмов, я дам готовые исходники (немного измененные для наглядности):


    char key_sc[8];
    char key_cs[8];

    void Encrypt(char *raw, int size) 
    { 
        int temp = 0;
        for (int i=0; i<size; i++) 
        { 
            int temp2 = raw[i] &0xff; 
            raw[i] = (char)(temp2 ^ (key_cs[i&7] &0xff) ^ temp); 
            temp = raw[i]; 
        }
        int old = key_cs[0] &0xff; 
        old |= key_cs[1] << 8 &0xff00; 
        old |= key_cs[2] << 0x10 &0xff0000; 
        old |= key_cs[3] << 0x18 &0xff000000; 
        old += size; 
        key_cs[0] = (char)(old &0xff); 
        key_cs[1] = (char)(old >> 0x08 &0xff); 
        key_cs[2] = (char)(old >> 0x10 &0xff); 
        key_cs[3] = (char)(old >> 0x18 &0xff); 
    }


    void Decode(char *input, int size)
    {
        int i = 0;
        int j = 0;
        for(int k=0; k < size; k++)
        {
            int i1 = input[k] & 0xFF;
            input[k] = (char)(i1 ^ key_sc[j++] & 0xFF ^i);
            i = i1;
            if(j>7) j=0;
        }
        long l = key_sc[0] & 0xFF;
        l |= key_sc[1] << 8 & 0xFF00;
        l |= key_sc[2] << 16 & 0xFF0000;
        l |= key_sc[3] << 24 & 0xFF000000;
        l += size;
        key_sc[0] = (char)(l & 255L);
        key_sc[1] = (char)(l >> 8 & 255L);
        key_sc[2] = (char)(l >> 16 & 255L);
        key_sc[3] = (char)(l >> 24 & 255L);
    }


    void Key(char* packet, int len)
    {
        key_sc[0] = packet[4];
        key_sc[1] = packet[5];
        key_sc[2] = packet[6];
        key_sc[3] = packet[7];
        key_sc[4] = (char)0xA1;
        key_sc[5] = (char)0x6C;
        key_sc[6] = (char)0x54;
        key_sc[7] = (char)0x87;
        for(i=0;i<8;i++) {key_cs[i]=key_sc[i];}
    }

    void add_ckecksum(unsigned char *raw, int count) //вычисляет чексумму и вставляет её в пакет
    {                                                //как пользоватся: add_ckecksum(CelyjPaket+2, DlinaPaketa-(2+4+4));
        unsigned long chksum = 0;
        unsigned long ecx;
        int i = 0;
        for(i = 0; i < count; i += 4)
        {
            ecx  = (unsigned long)raw[i];
            ecx |= (unsigned long)raw[i + 1]<<8;
            ecx |= (unsigned long)raw[i + 2]<<16;
            ecx |= (unsigned long)raw[i + 3]<<24;
            chksum ^= ecx;
        }
        memcpy(raw+count, (char *)&chksum, 4);
    }

    void RSAKeyDecode(char* RSAKey)
    {
        for (int i = 0; i < 64; i++)
        {
            RSAKey[i + 64] ^= RSAKey[i];
        }
        for (int i = 0; i < 4; i++)
        {
            RSAKey[i + 13] ^= RSAKey[i + 52];
        }
        for (int i = 0; i < 64; i++)
        {
            RSAKey[i] ^= RSAKey[i + 64];
        }
        for (int i = 0; i < 4; i++)
        {
            BYTE tmp = RSAKey[i];
            RSAKey[i] = RSAKey[i + 77];
            RSAKey[i + 77] = tmp;
        }
    }
Но сишный код мне очень трудно понять.
Может кто-нить на словах объяснить как идет шифрация/дешифрация и смена ключа?

Последний раз редактировалось glukmaker, 14.10.2011 в 13:47. Причина: Добавлено сообщение
glukmaker вне форума   Ответить с цитированием
Старый 14.10.2011, 13:54   #5
Новичок
 
Регистрация: 14.10.2011
Сообщений: 14
Сказал Спасибо: 5
Имеет 0 спасибок в 0 сообщенях
andrewcik пока неопределено
По умолчанию

это вот и есть чтоли ТОКЕН?
Код:
Packet ID: 32      Packet size: 267   
Source IP      :    192.168.1.25: 61787
Destination IP :     192.168.1.6: 7777
------------------------------------------------------------------------------
000000 0B 01 0E 0B 01 00 00 09 | 07 54 56 03 09 0B 01 07     .........TV.....
000010 02 54 54 56 07 00 02 55 | 56 00 51 00 53 57 04 07     .TTV...UV.Q.SW..
000020 55 08 54 01 07 01 53 00 | 56 55 56 01 06 05 04 51     U.T...S.VUV....Q
000030 03 08 51 08 51 56 04 54 | 06 55 08 02 09 51 56 01     ..Q.QV.T.U...QV.
000040 53 06 55 04 53 00 56 56 | 53 01 09 02 09 01 51 54     S.U.S.VVS.....QT
000050 51 09 55 56 09 03 04 07 | 05 55 04 06 55 04 06 09     Q.UV.....U..U...
000060 04 51 01 08 08 06 05 52 | 06 04 01 07 54 03 06 52     .Q.....R....T..R
000070 55 06 55 55 51 01 02 04 | 54 03 55 54 01 57 51 55     U.UUQ...T.UT.WQU
000080 05 52 05 54 07 51 51 55 | 07 02 53 53 00 52 05 52     .R.T.QQU..SS.R.R
000090 07 01 54 00 03 05 05 08 | 06 05 05 06 03 00 0D 08     ..T.............
0000A0 01 07 09 03 51 03 07 53 | 09 51 06 07 54 0A 50 56     ....Q..S.Q..T.PV
0000B0 02 52 04 05 55 51 02 53 | 00 08 54 04 52 56 06 02     .R..UQ.S..T.RV..
0000C0 09 00 08 03 53 56 01 05 | 00 55 06 08 56 04 0D 06     ....SV...U..V...
0000D0 07 52 06 07 04 0A 06 01 | 04 54 04 00 05 02 04 54     .R.......T.....T
0000E0 00 09 52 53 05 04 01 04 | 05 05 01 52 51 52 0D 06     ..RS.......RQR..
0000F0 51 08 09 54 53 00 0D 01 | 02 03 54 53 01 05 03 08     Q..TS.....TS....
000100 56 54 07 02 54 0B 06 A6 | 23 F4 FE                    VT..T...#..
__________________
если чёта не так написал, то извиняйте, не программер я , а так самоучка чуть-чуть
andrewcik вне форума   Ответить с цитированием
Старый 15.10.2011, 13:55   #6
Пользователь
 
Регистрация: 08.05.2008
Сообщений: 61
Сказал Спасибо: 0
Имеет 21 спасибок в 12 сообщенях
Hint пока неопределено
По умолчанию

Мой модуль для удобной работы с L2-потоком:
http://pastebin.com/X9BnJJJ8
Не надо думать о шифровании, о делении потока на пакеты и прочих мелочах.

Требуется установить свои обработчики PacketEvent (сюда передается очередной дешифрованный пакет) и SendEvent (сюда передается строка для передачи на сервер).
Сырые данные от сервера передавать в метод ProcessData, отправлять через метод Send.

Обработчик PacketEvent получает объект класса TL2Packet (доступны все функции ReadX) и управляющий объект класса TL2Stream. Писать данные можно в свой объект TL2Packet (все WriteX функции), а потом вызываеть L2Stream.Send(L2Packet.Data).

Последний раз редактировалось Hint, 15.10.2011 в 13:58.
Hint вне форума   Ответить с цитированием
За это сообщение Hint нажился 3 спасибками от:
Старый 16.10.2011, 16:39   #7
Пользователь
 
Регистрация: 17.12.2010
Сообщений: 37
Сказал Спасибо: 13
Имеет 1 спасибку в 1 сообщении
glukmaker пока неопределено
По умолчанию

Вобщем у меня все получилось. Загвоздка была в том, что при выборе чара я слал его Id, а нужно было номер чарслота (как оказалось с в xor-шифровании я не сделал ошибки, как думал ранее).

Авторизацию (до посылки пакета EnterWorld включительно) реализовал.
И далее теперь могу принимать и отправлять пакеты.
Спасибо всем, кто помог!

Цитата:
Сообщение от Hint Посмотреть сообщение
Мой модуль для удобной работы с L2-потоком
Обязательно посмотрю. Я сам уже было подумал все, что я написал оформить в виде компонента. Но вот увидел твое сообщение. Эх. если бы ты раньше написал, я бы не стал мучаться... А то теперь не знаю, что взять за основу: твой модуль или то, что я уже сам написал дорабатывать.
glukmaker вне форума   Ответить с цитированием
Старый 16.10.2011, 16:43   #8
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,224
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию

свой лучше. пока напишешь мозг сломаешь, время потеряешь, но зато станешь в этом гуру. да и свой код "роднее".
__________________
хочу картинку в подпись!
SeregaZ вне форума   Ответить с цитированием
Старый 16.10.2011, 23:49   #9
Новичок
 
Регистрация: 14.10.2011
Сообщений: 14
Сказал Спасибо: 5
Имеет 0 спасибок в 0 сообщенях
andrewcik пока неопределено
По умолчанию

а у меня походу гуард стоит чтоли? первый пакет от серва приходит вот этот:
Код:
000000 BA 00 DE 86 44 3C 7C 5B | 73 BF 9A 75 EE B3 1C 4D     ....D<|[s..u..M
000010 03 EF 2C D7 41 70 57 3A | A4 E0 5C 92 DC 09 E5 2E     ..,.ApW:..\.....
000020 C2 49 4D 42 C8 C5 2C 78 | 68 D1 CF D7 E1 D7 34 EA     .IMB..,xh.....4.
000030 7B DC 7B D2 A2 CB 5E FB | D5 B6 AC 3D AF 39 D5 B7     {.{...^....=.9..
000040 AF 2F C6 DA D1 51 AD AB | 5D C5 F1 FD F3 AC 9D 59     ./...Q..]......Y
000050 C3 25 E0 7A 53 86 35 D1 | 6A E3 DF 87 16 B6 EE 73     .%.zS.5.j......s
000060 22 B1 FB 52 F2 39 A1 C6 | 22 C0 A9 49 CD EF E7 E7     "..R.9.."..I....
000070 3A AB 8B CC 57 A3 AE 00 | 77 7E F5 3B 74 ED 86 70     :...W...w~.;t..p
000080 1A FE 7C AE C4 07 D3 87 | 76 DF CA 7F EF 23 4D 6F     .|.....v...#Mo
000090 FF 73 67 32 45 07 F0 0B | 2E A1 DB 47 30 8D CA F6     .sg2E......G0...
0000A0 9C 64 08 00 57 E0 00 9A | BF 20 AC 27 ED 00 B2 5D     .d..W.... .'...]
0000B0 95 8D 8B 71 0A E8 25 84 | 6D CE                       ...q..%.m.
пытался его расшифровать - нифига невышло((
он даже ваще не похож на пакет Init
__________________
если чёта не так написал, то извиняйте, не программер я , а так самоучка чуть-чуть
andrewcik вне форума   Ответить с цитированием
Старый 17.10.2011, 00:02   #10
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

andrewcik, очень даже похож на протокол c621)

Добавлено через 2 минуты
то есть пакет зашифрован BlowFish с начальным ключем, под ним XOR, в пакете новый BlowFish ключ и RSA ключ для формирования последующих пакетов)
__________________
Я здесь практически не появляюсь!, Skype - ikskor

Последний раз редактировалось xkor, 17.10.2011 в 00:02. Причина: Добавлено сообщение
xkor вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



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

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


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

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

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