пардон, исправил... к стати.. мог бы и сам...
я просто вчера чуть чуть подумал, и убрал необходимость декодировать длинну пакета повторно (если декодирование требуется) -))
move(EncAccumulator[2], L2Packet.data[0], L2Packet.Size-2);
move(DecAccumulator[2], L2Packet.data[0], L2Packet.Size-2);
проблемма была тут. -) в дату тпакета пихались данные начиная с длинны, а не начиная с данных.
щас подумываю над еще одним вариантом в котором это место будет только в цикле, без такого же куска перед циклом (необходимого сейчас для входа в онный)
Добавлено через 18 минут
кстати, возми на заметку.
если у тебя кодируються и первые 2 байта пакета, при чем от их декодирования зависит и ключ(чи по чем оно там криптоваться будет) то следует:
после вот такого
move(DecAccumulator[0], L2Packet.Size, 2);
декриптовать длинну лежащую в L2Packet.Size НО НЕ изменять ключ (если он меняеться)
при чем учти что только в PreDecrypt это требуеться. в постенкрипт поступающие от пх данные идут в фармате 2 первых байта = длинна.
такие вот места
move(ХХХAccumulator[2], L2Packet.data[0], L2Packet.Size-2);
заменить на
move(ХХХAccumulator[0], L2Packet, L2Packet.Size);
а в процедурах YourDecryptFuncton/YourEncryptFuncton
ПОВТОРНО декритовать/криптовать кусок данных вместе с L2Packet.Size при чем уже с изменением ключа.
__________________
L2Ext - project closed.
Последний раз редактировалось alexteam, 07.10.2009 в 16:19.
Причина: Добавлено сообщение
|