PDA

Просмотр полной версии : Объясните нубу плиз (L2pdx)


RenneR
24.09.2013, 10:45
Хроники Gracia Final шифрации нет
Пакет
KeyPacket:
2E 01 FA 22 0D 57 72 6B 88 C3 01 00 00 00 01 00 00 00 01 00 00 00 00
Соответстевенно XorKey:
FA 22 0D 57 A1 6C 54 87
3 пакет(от клиента к серверу)(зашифрованный) :
D1 A1 AC 9E EC E9 61 CC 04 46 D5 86 27 4B 7A 2B CF B6 E0 16 E3 EC 1C FD 9D 4B E4 73 EF 2F 16 80 7A 58 55 49 38 53 DB 18 D0 F7 64 65 C4 A8 99
3 пакет (расшифрованный):
2B 52 00 65 00 6E 00 6E 00 65 00 52 00 00 00 C6 1E 5B 5B A1 87 64 78 22 A8 F1 3C 96 3D AC 08 01 00 00 00 4B 03 00 00 00 00 00 00 00 00 00 00

В l2pdx пытаюсь расшифровать этот же пакет стандартным алгоритмом получаю:
2B 52 00 65 D3 69 DC 2A 32 60 9E 04 00 00 65 D6 1E 5B 5B A1 54 63 A4 66 9A F4 A2 C0 3D AC 6D 11 00 00 00 4B D0 07 DC 44 32 05 9E 56 00 00 65

То есть с 5 байта идет уже не то, хотя даже инкрементируя XorKey на длинну прошлого пакета до 7 байта должно быть все байты правильно расшифрованы?

Ссылка на L2pdx: http://coderx.ru/downloads.php?do=file&id=32

Все разобрался. Тему закрыть.

JhonnyB
31.05.2014, 16:41
У меня возник тот же вопрос, раз уж разобрался помоги и мне :) пытаюсь понять как работает программа вначале на сервере без шифровки и вот что получается (хроники ХФ):
KeyInit:
2E 01 78 67 56 E4 51 10 98 F7 C8 27 93 01 A1 6C 31 97 01 00 00 00 00 00 00 00 00 00 00 00 00
XorKey:
78 67 56 E4 A1 6C 54 87
3 пакет(от клиента к серверу)(зашифрованный) :
53 5A 0C 8D DC BB 23 AC 64 2C BF CC 6D 01 30 ED 24 3C 4F E9 6D 8A 31 8B F4 E5 5D 56 3E F6 26 B0 C8 AF F9 1D 4C 5C C4 33 FB DC 4F 4F EE 82 B3
3 пакет (расшифрованный):
2B 6E 00 65 00 77 00 78 00 6F 00 72 00 00 00 35 A5 D7 92 0E AA 03 BA CB 8D 26 F7 73 A3 D7 CA 01 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
l2pdx стандартный алгоритм:
2B 6E 00 65 F0 0B CC 08 B0 2F C5 97 00 00 65 5A B1 7F 25 42 25 8B EF 3D 07 76 EE EF C9 A4 84 11 00 00 00 00 F0 7C CC 70 B0 40 C5 E4 00 00 65 ; A7 67 56 E4 A1 6C 54 87 ; 47
почему данные разные?

Elecktron
27.09.2016, 01:48
дело в длине ключа.

wimax
27.09.2016, 02:14
procedure TXorCodingOut.InitKey(const XorKey; Interlude: Byte = 0);
const
KeyConst: array[0..3] of Byte = ($A1,$6C,$54,$87);
KeyIntrl: array[0..7] of Byte = ($C8,$27,$93,$01,$A1,$6C,$31,$97);
var key2:array[0..15] of Byte;
begin
if Interlude <> 0 then begin
keyLen:=15;
Move(XorKey,key2,8);
Move(KeyIntrl,key2[8],8);
end else begin
keyLen:=7;
Move(XorKey,key2,4);
Move(KeyConst,key2[4],4);
end;
Move(key2,GKeyS,16);
Move(key2,GKeyR,16);
end;