Программинг Форум для тем связанных с программированием
03.07.2015, 07:09
#31
Местный
Регистрация: 16.08.2009
Сообщений: 1,224
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
это дааа
целая история с этими "слепленными" пакетами
__________________
хочу картинку в подпись!
03.07.2015, 07:38
#32
Пользователь
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
млин не простая штука получается) Если пришло пол пакета, это не значит что в следующий раз прийдёт вторая, может прийти половина предыдущего
и ещё кусок)
03.07.2015, 10:47
#33
Местный
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Я когда то долго вылавливал периодические краши бота, оказалось иногда принимался только 1 байт размера пакета, поэтому это нужно тоже проверять и ждать следующего байта.
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
03.07.2015, 12:05
#34
Пользователь
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
а пакеты могу не по порядку идти? т.е. я жду половину одного пакета, а вместо этого приходить другой, и только после него нужная мне часть
03.07.2015, 13:34
#35
Местный
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Цитата:
Сообщение от
cvillian
а пакеты могу не по порядку идти? т.е. я жду половину одного пакета, а вместо этого приходить другой, и только после него нужная мне часть
Все по порядку.
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
03.07.2015, 13:37
#36
Пользователь
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
Цитата:
Сообщение от
Yegor
Все по порядку.
Ну хоть это радует, а то я на allcheats начитался ужасов)
03.07.2015, 14:37
#37
Местный
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Пакеты приходят кусками не потому что так их шлет сервер, а потому что так работает протокол TCP.
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
20.07.2015, 15:07
#38
Пользователь
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
У меня похоже не правильный алгоритм кодировки пакета. После того как пакет кодируется и отправляется, в WP PPC я вижу что каждый 16-й байт =
1А:
Код:
[106] C>s 0ms. 13:57:15 .481 20.07.15
-------------------------------------------------------------------------------
TType: LA2 Server: GS3 Parse: 2 (auto) EnCode: DT2 KT4 (auto)
------- 0 1 2 3 4 5 6 7 - 8 9 A B C D E F -------------------
000000 3F 00 49 70 00 72 00 69 | 00 76 1A 65 00 74 00 20 ?.Ip.r.i.v.e.t.
000010 00 70 00 72 00 69 00 76 | 00 65 1A 74 00 20 00 70 .p.r.i.v.e.t. .p
000020 00 72 00 69 00 76 00 65 | 00 74 1A 20 00 70 00 72 .r.i.v.e.t. .p.r
000030 00 69 00 76 00 65 00 74 | 00 00 1A 00 00 00 00 .i.v.e.t.......
-------------------------------------------------------------------------------
LA2: "Say2" size: 63 prot: 152 $098
Addr: Size: Type: Description: Value:
0000 2 word psz 63 | $003F
0002 1 byte ID 73 | $49 'I'
0003 58 WideString Text "pri?et priv?t prive? privet?"
003D 4 integer?? Type ALL ($00000000)
Мог бы ктонибуть подсказать в чём ошибка?
Код:
procedure GS_Encode(var buff: AnsiString; var key: AnsiString);
var
i, j, i1, sz, sk : integer;
val1: integer;
begin
sz := length(buff);
sk := length(key);
if sk < 1 then exit;
i1 := 0; j := 1;
for i := 1 to sz do begin
buff[i] := AnsiChar(ord(buff[i]) xor (ord(key[j])) xor i1);
i1 := (ord(buff[i]));
Inc(j,1);
if j > 16 then j := 1;
end;
Move(key[9], val1, 8);
val1:= val1 + sz - 2;
Move(val1, key[9], 8);
end;
Алгоритм взял из демо скриптов в wp ppc
Последний раз редактировалось cvillian, 20.07.2015 в 15:38 .
20.07.2015, 16:00
#39
Местный
Регистрация: 24.10.2014
Сообщений: 190
Сказал Спасибо: 4
Имеет 42 спасибок в 40 сообщенях
Цитата:
Сообщение от
cvillian
Код:
Move(key[9], val1, 8);
val1:= val1 + sz - 2;
Move(val1, key[9], 8);
Как минимум нужно либо 8 на 4 заменить, либо val1 объявить как Int64 (скорей всего первый вариант).
Проверь что у тебя ключ 16 символов.
Мне непонятно зачем из sz двойка вычитается, если в GS_Encode приходят чистые данные (без длины пакета), то двойку вычитать не нужно, если в функцию приходит весь пакет вместе с длиной, то длину (первые 2 байта) кодировать не нужно.
За это сообщение ScythLab нажился спасибкой от:
20.07.2015, 18:17
#40
Пользователь
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
Цитата:
Сообщение от
ScythLab
Мне непонятно зачем из sz двойка вычитается, если в GS_Encode приходят чистые данные (без длины пакета), то двойку вычитать не нужно.
Да точно
Я же пример брал где алгоритм был для всего пакета с длиной и не учёл. Большое спасибо
Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
Часовой пояс GMT +4, время: 03:06 .
vBulletin style designed by
MSC Team .
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод:
zCarot
Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!