У меня похоже не правильный алгоритм кодировки пакета. После того как пакет кодируется и отправляется, в 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