чтоб не заморачиватся с разгадкой генерации начального ключа, была мысль использовать какойнить пакет,в частном случае, известно, что 3 пакет от клиента это выбор чара 0D=CharacterSelected:d(CharSlot) 0D 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...., после которого следовало вычислить ключ и изменить оный.
в скрипте имхо так:
if FromClient and PckCount=3 then
begin
// key:=танцы с бубном получения ключа
InitKeyS(key)
end;
чтоб это работало, нужно :
добавить функцию для скриптов возвращ. номер пакета PckCount.
и программе добавить новую процедуру InitKey2 котороя инициализирует все 8 байт.
delphi Код:
procedure TXorCoding.InitKey2(const XorKey; Interlude: Boolean = False);
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 then begin
keyLen:=15;
Move(XorKey,key2,8);
Move(KeyIntrl,key2[8],8);
end else begin
keyLen:=7;
// Move(XorKey,key2,4);
// тут меняю ключ 8 байт
Move(XorKey,key2,8);
// Move(KeyConst,key2[4],4);
end;
Move(key2,GKeyS,16);
Move(key2,GKeyR,16);
end;
зы: еще идейка, чтоб при загрузке нерасшифрованных (сохраненных как есть) пакетов из текстового файла они проходили через процедуру расшифровки/шифровки заново, т.е. удобно подбирать(или тестировать длл невхор) алгоритм, смотря в логах что получилось, т.к. большую часть времени нет возможности запускать линейку.
зы: в общем как всегда желания не совпадают с возможностями
зыы: в системном программирования я "не взуб ногой" больше прикладник.