привет,
танцы с бубном по тихой приносят результат _но_ ...
ИМХО требуется сдвигать ключ, но у муну не получается.
знающие люди подскажите как это дело реализовать?
пробывал так:
delphi Код:
old := Key[0];
old := old or (Key[1] shl $08);
old := old or (Key[2] shl $10);
old := old or (Key[3] shl $18);
old := old+size;
Key[0] := old;
Key[1] := (old shr $08);
Key[2] := (old shr $10);
Key[3] := (old shr $18);
но не получается
данные для расшифровки (юзаю скил, и пишу в чат 111111111)
Код:
A6 71 7B 7B 32 AF 8B 1A 93 A6
BC 6B 61 61 28 B5 91 00 93 A6
B2 65 6F 6F 26 BB 9F 0E 93 A6
9F 9B 91 A0 E9 45 61 C1 66 62 68 59 10 BC 98 38 9F 9B 91 A0 E9 45 61 C1 66 62 68 59 10 BC 98 38 9F 9B 91 A0 E9 45 61 C1 66 62 68 59 10 BC 98 38 9F 9B 91 A0 E9 45 61 C1 66 62 68 59 10 BC 98 09 AE 9B 91 91 D8
C3 14 1E 1E 57 CA EE 7F 93 A6
D9 0E 04 04 4D D0 F4 65 93 A6
38 3F 35 04 4D E1 C5 65 65 62 68 59 10 BC 98 38 38 3F 35 04 4D E1 C5 65 65 62 68 59 10 BC 98 38 38 3F 35 04 4D E1 C5 65 65 62 68 59 10 BC 98 38 38 3F 35 35 7C E1 C5 54 54
01 06 0C 3D 74 D8 FC 5C 65 62 68 59 10 BC 98 38 01 06 0C 3D 74 D8 FC 5C 65 62 68 59 10 BC 98 38 01 06 0C 3D 74 D8 FC 5C 65 62 68 59 10 BC 98 38 01 06 0C 0C 45 D8 FC 6D 54
4A 4D 47 76 3F 93 B7 17 65 62 68 59 10 BC 98 38 4A 4D 47 76 3F 93 B7 17 65 62 68 59 10 BC 98 38 4A 4D 47 76 3F 93 B7 17 65 62 68 59 10 BC 98 38 4A 4D 47 47 0E 93 B7 26 54
93 94 9E AF E6 4A 6E CE 65 62 68 59 10 BC 98 38 93 94 9E AF E6 4A 6E CE 65 62 68 59 10 BC 98 38 93 94 9E AF E6 4A 6E FF 54 62 68 68 21
вот выходные данные, вроде все красиво
Код:
// скилл
2F E2 00 00 00 00 00 00 00 00 ; 93 35 0A 00 49 9D 24 91 ; 10
2F E2 00 00 00 00 00 00 00 00 ; 9D 35 0A 00 49 9D 24 91 ; 10
2F E2 00 00 00 00 00 00 00 00 ; A7 35 0A 00 49 9D 24 91 ; 10
// сау2
38 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 31 00 00 00 00 00 00 00 ; EC 35 0A 00 49 9D 24 91 ; 69
// скилл
2F E2 00 00 00 00 00 00 00 00 ; F6 35 0A 00 49 9D 24 91 ; 10
2F E2 00 00 00 00 00 00 00 00 ; 00 35 0A 00 49 9D 24 91 ; 10
// вот тут происходит сдвиг ключика (значение должно быть 31 а не 32)
// сай2 !!!
38 32 00 31 00 31 00 31 00 32 00 31 00 31 00 31 00 32 00 31 00 31 00 31 00 32 00 31 00 31 00 31 00 32 00 31 00 31 00 31 00 32 00 31 00 31 00 31 00 32 00 00 00 00 00 00 00 ; 39 35 0A 00 49 9D 24 91 ; 57
38 32 00 31 00 31 00 31 00 32 00 31 00 31 00 31 00 32 00 31 00 31 00 31 00 32 00 31 00 31 00 31 00 32 00 31 00 31 00 31 00 32 00 31 00 31 00 31 00 32 00 00 00 00 00 00 00 ; 72 35 0A 00 49 9D 24 91 ; 57
38 32 00 31 00 31 00 31 00 32 00 31 00 31 00 31 00 32 00 31 00 31 00 31 00 32 00 31 00 31 00 31 00 32 00 31 00 31 00 31 00 32 00 31 00 31 00 31 00 32 00 00 00 00 00 00 00 ; AB 35 0A 00 49 9D 24 91 ; 57
38 32 00 31 00 31 00 31 00 32 00 31 00 31 00 31 00 32 00 31 00 31 00 31 00 32 00 31 00 31 00 31 00 32 00 31 00 31 00 00 00 03 00 00 00 ; D8 35 0A 00 49 9D 24 91 ; 45
а это , сам код:
delphi Код:
var
old,temp,temp2,i: integer;
begin
temp:= 0;
for i:= 0 to size-1 do
begin
temp2:= pck[i] and $ff;
pck[i]:= temp2 xor (Key[i and 7]and $ff) xor temp;
temp:=temp2;
end;
old := Key[0];
// имхо тут надо реализовать сдвиг ключа
// принимают участие 4 первых байта ключа
// old := old or (Key[1] shl $08); // данный метод работает не так как ожидалось
// old := old or (Key[2] shl $10);
// old := old or (Key[3] shl $18);
old := old+size;
Key[0] := old;
// Key[1] := (old shr $08);
// Key[2] := (old shr $10);
// Key[3] := (old shr $18);
end.
зы: или это вообще не сдвиг ключа?