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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 27.02.2008, 14:26   #1
Местный
 
Регистрация: 13.12.2007
Сообщений: 126
Сказал Спасибо: 10
Имеет 39 спасибок в 32 сообщенях
Zergatul
По умолчанию Все сначала...

Вообщем решыл сделать некое подобие бота для интерлюда. Из алгоритмов шыфрования я знаю только обычное ксорирование, никогда не работал с чем-то другим. При конекте к логин серверу как я понял мне пришол пакет Init длиной $AB (знач используется ревизия протокола c621). Обясните плиз что мне извлекать из него, как шыфровать следующие пакеты. И ище если можна обьясните плиз с чексумой.
Где-то было написано : в пакетах сервера авторизации, в конце добавляется контрольная сумма и дополняется нулями так, чтобы размер пакета был кратен 8-ми байтам.
Где-то здесь на форуме xkor давал пример:
Код:
procedure AddChecksum(var data:array of char; position: Word);
var
  i:Word;
begin
  for i := 0 to (position div 4)-1 do
    PCardinal(@data[position])^:=PCardinal(@data[position])^ xor PCardinal(@data[i*4])^;
end;
и написал как использовать его:
Код:
pck:=HexToString('26 00 02 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00');
AddChecksum(pck[3],Length(pck)-8-2);
В итоге результат - 26 00 '02 00 00 00' '00 00 00 00' '00 01 00 00' '00 00 00 00' '02 01 00 00' '00 00 00 00'
Тоесть процедура проходится по скроке и каким-то образом считает что-то, что вовсе не похоже на сумму :)
Здесь у меня вопрос: AddChecksum надо использовать уже после дополнения пакета нулями, или раньше ? (Вопрос возможно глупый, но с примера я так и не понял этого. Возможно pck, это уже пакет, дополненый 8 нулевыми байтами - если это так, тогда мне все понятно).
Zergatul вне форума   Ответить с цитированием
Старый 27.02.2008, 14:26   #2
Местный
 
Регистрация: 13.12.2007
Сообщений: 126
Сказал Спасибо: 10
Имеет 39 спасибок в 32 сообщенях
Zergatul
По умолчанию Все сначала...

Вообщем решыл сделать некое подобие бота для интерлюда. Из алгоритмов шыфрования я знаю только обычное ксорирование, никогда не работал с чем-то другим. При конекте к логин серверу как я понял мне пришол пакет Init длиной $AB (знач используется ревизия протокола c621). Обясните плиз что мне извлекать из него, как шыфровать следующие пакеты. И ище если можна обьясните плиз с чексумой.
Где-то было написано : в пакетах сервера авторизации, в конце добавляется контрольная сумма и дополняется нулями так, чтобы размер пакета был кратен 8-ми байтам.
Где-то здесь на форуме xkor давал пример:
Код:
procedure AddChecksum(var data:array of char; position: Word);
var
  i:Word;
begin
  for i := 0 to (position div 4)-1 do
    PCardinal(@data[position])^:=PCardinal(@data[position])^ xor PCardinal(@data[i*4])^;
end;
и написал как использовать его:
Код:
pck:=HexToString('26 00 02 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00');
AddChecksum(pck[3],Length(pck)-8-2);
В итоге результат - 26 00 '02 00 00 00' '00 00 00 00' '00 01 00 00' '00 00 00 00' '02 01 00 00' '00 00 00 00'
Тоесть процедура проходится по скроке и каким-то образом считает что-то, что вовсе не похоже на сумму :)
Здесь у меня вопрос: AddChecksum надо использовать уже после дополнения пакета нулями, или раньше ? (Вопрос возможно глупый, но с примера я так и не понял этого. Возможно pck, это уже пакет, дополненый 8 нулевыми байтами - если это так, тогда мне все понятно).
Zergatul вне форума   Ответить с цитированием
Старый 27.02.2008, 19:09   #3
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Re: Все сначала...

Контрольная сумма считается для пакета начиная с кода типа пакета (исключаем первые два байта длины пакета) и заканчивая адресом предшествующим началу контрольной суммы.
Код:
procedure build_RequestServerList();
begin
{RequestServerList
Формат:
1A 00 // Длина
05 // Тип
XX XX XX XX // SessionKey1_FistPart из LoginOk
XX XX XX XX // SessionKey1_SecondPart из LoginOk
04 00 00 00 00 00 00
XX XX XX XX // чексумма 00 00 00 00}
  InitPkt; //инициализируем пакет
  WriteW($1a);//длина пакета 26
  WriteID($05);
  WriteD(SessionKey1_FistPart);
  WriteD(SessionKey1_SecondPart);
  WriteB($04);
  //WriteW($0);
  //WriteB($0);
  pos:=18; WriteD(pkt_ckecksum(2,16)); // чексумма
  //WriteD($0); //"\x00\x00\x00\x00";
  //к.сумма считается для блока начиная со смещ. 2, длиной 16 байт
  //add_ckecksum(2,16);
end;
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
Старый 27.02.2008, 19:09   #4
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Re: Все сначала...

Контрольная сумма считается для пакета начиная с кода типа пакета (исключаем первые два байта длины пакета) и заканчивая адресом предшествующим началу контрольной суммы.
Код:
procedure build_RequestServerList();
begin
{RequestServerList
Формат:
1A 00 // Длина
05 // Тип
XX XX XX XX // SessionKey1_FistPart из LoginOk
XX XX XX XX // SessionKey1_SecondPart из LoginOk
04 00 00 00 00 00 00
XX XX XX XX // чексумма 00 00 00 00}
  InitPkt; //инициализируем пакет
  WriteW($1a);//длина пакета 26
  WriteID($05);
  WriteD(SessionKey1_FistPart);
  WriteD(SessionKey1_SecondPart);
  WriteB($04);
  //WriteW($0);
  //WriteB($0);
  pos:=18; WriteD(pkt_ckecksum(2,16)); // чексумма
  //WriteD($0); //"\x00\x00\x00\x00";
  //к.сумма считается для блока начиная со смещ. 2, длиной 16 байт
  //add_ckecksum(2,16);
end;
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
Старый 28.02.2008, 21:10   #5
Местный
 
Регистрация: 13.12.2007
Сообщений: 126
Сказал Спасибо: 10
Имеет 39 спасибок в 32 сообщенях
Zergatul
По умолчанию Re: Все сначала...

Цитата:
Сообщение от NLObP
Контрольная сумма считается для пакета начиная с кода типа пакета (исключаем первые два байта длины пакета) и заканчивая адресом предшествующим началу контрольной суммы.
Спс, с чексумой все ясно 8)

Добавлено спустя 1 день 1 час 3 минуты 53 секунды:
Как я вижу всем влом отвечать на мои вопросы, ибо почитав немного олчитс.ру я понял что всё намного сложнее чем кажется... В каждого ПТС сервера свои приколы при логине
Zergatul вне форума   Ответить с цитированием
Старый 28.02.2008, 21:10   #6
Местный
 
Регистрация: 13.12.2007
Сообщений: 126
Сказал Спасибо: 10
Имеет 39 спасибок в 32 сообщенях
Zergatul
По умолчанию Re: Все сначала...

Цитата:
Сообщение от NLObP
Контрольная сумма считается для пакета начиная с кода типа пакета (исключаем первые два байта длины пакета) и заканчивая адресом предшествующим началу контрольной суммы.
Спс, с чексумой все ясно 8)

Добавлено спустя 1 день 1 час 3 минуты 53 секунды:
Как я вижу всем влом отвечать на мои вопросы, ибо почитав немного олчитс.ру я понял что всё намного сложнее чем кажется... В каждого ПТС сервера свои приколы при логине
Zergatul вне форума   Ответить с цитированием
Старый 29.02.2008, 10:11   #7
Рыцарь
 
Аватар для dmitry501
 
Регистрация: 01.10.2007
Сообщений: 293
Сказал Спасибо: 42
Имеет 50 спасибок в 37 сообщенях
dmitry501 пока неопределено
По умолчанию

ага, и не только при логине :) у более-менее продвинутых серверов, которые могут позволить потратить деньги на сервер, в гейм-сервере заморочек не меньше.
__________________
Цитата:
Сообщение от Stas
...Ну на хрена ты меня посылаешь гууглить или искать 140 страниц описанных где-то комманд, если я уже в сотый раз объясняю, что хочу облегчить труд многим, я же эти доводы подробно описал...
dmitry501 вне форума   Ответить с цитированием
Старый 02.03.2008, 02:09   #8
Местный
 
Регистрация: 13.12.2007
Сообщений: 126
Сказал Спасибо: 10
Имеет 39 спасибок в 32 сообщенях
Zergatul
По умолчанию

Дайте кто-то нормальную и простенькую прогу, что бы просто отображала все пакеты.... интересно посмотреть что происходит с клиентом при конекте к ЛС.
Zergatul вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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