Привет!
Выкладываем ответы на предложенную нами
ранее головоломку
для трезвомыслящих людей :).
Задание 1.
Ответ:
225787 449089253
Мы имеем последовательность
18 97 115 1973 1990 226877 ... ...
соответственно A B C D E F G H
18 xor 97 = 115
115 xor 1973 = 1990
т.о. G = 1990 xor 226877 = 225787
18 * 115 - 97 = 1973
115 * 1990 - 1973 = 226877
т.о. H = 1990 * 225787 - 226877 = 449089253
Задание 2.
Ответ: VERYG00DY0UDECRYPTEDIT
D2>D1+?§9''$28.1!#-
В HEX:
44 32 3E 44 31 19 18 2B 3F 15 39
27 27 24 32 38 2E 31 21 1F 23 2D
На один шаг сложнее обычного askii сдвига. К коду каждого зашифрованного символа прибавляется
12 (hex) + индекс.
for (int i=0;i<22;i++)
cr[i]=cr[i]+18+i;
где cr[i] - зашифрованный символ
т.о.
44+12+0=57, (57 код символа "V")
32+12+1=46, (57 код символа "E")
3e+12+2=52, (57 код символа "R")
..
Задание 3.
WELL DONE!
В paint'е достаточно залить фон любым отличным от синего цветом.
Задание 4.
Приведу решение, которое нам прислал
победитель:
Самые интересные функции:
========== cut from TrashPickUper ==========
procedure CrackInfoFile(InfoFile: String; RFLst: TList);
var rf: PRecycledFile;
MS: TMemoryStream;
S1: PChar;
m: pointer;
d,n: integer;
begin
MS:=TMemoryStream.Create;
MS.LoadFromFile(InfoFile);
if (MS.Memory<>nil) and (MS.Size>20) then begin
m:=MS.Memory;
n:=integer((pointer(integer(m)+280))^);
case byte(m^) of
4: d:=280;
5: d:=800;
else
inc(integer(m),MS.Size);
end;
inc(integer(m),20);
while (integer(m)-integer(MS.Memory))<MS.Size do begin
S1:=m;
if S1^<>#0 then begin
New(rf);
rf.RealName:=S1;
rf.TempName:=S1^+':\Recycled\'+'D'+S1^+ IntToStr(n)+ExtractFileExt(rf.RealName);
rf.idx:=n;
RFLst.Add(rf);
end;
inc(integer(m),d);
inc(n);
end;
end;
MS.Free;
end;
function RestoreFile(rf: PRecycledFile): boolean;
var MS: TMemoryStream;
S1: PChar;
m: pointer;
d,n: integer;
InfoFile: String;
begin
Result:=false;
InfoFile:=ExtractFilePath(rf.TempName)+'INFO2';
MS:=TMemoryStream.Create;
MS.LoadFromFile(InfoFile);
if (MS.Memory<>nil) and (MS.Size>20) then begin
m:=MS.Memory;
n:=integer((pointer(integer(m)+280))^);
case byte(m^) of
4: d:=280;
5: d:=800;
else
inc(integer(m),MS.Size);
end;
inc(integer(m),20);
d:=(rf.idx-n)*d;
if d>0 then inc(integer(m),d);
if (integer(m)-integer(MS.Memory))<MS.Size then begin
S1:=m;
if S1^<>#0 then begin
S1^:=#0;
DeleteFile(InfoFile);
MS.SaveToFile(InfoFile);
ForceDirectories(ExtractFilePath(rf.RealName));
Result:=RenameFile(rf.TempName,rf.RealName);
end;
end;
end;
MS.Free;
end;
Задание 5.
Очень хорошо это задание описал Samvel.
Сначала проверяется длина введенного пароля, которая должна составлять 14 символов.
Затем из введенного номера последовательно составляются и сравниваются 5 пар результатов: результат1 и результат2.
I, II, III, IV, V - номера пар
Результат1 I пары получается следующим образом:
2 символ xor-тся с 1-м (II пара - 3-й со 2-ым; III пара - 4-й с
3-им; IV пара 5-й с 4-ым, V пара 6-й с 5-ым). К результату прибавляется 1, (II пара - 2, III - 3, IV - 4, V - 5).
Полученная сумма складывается с кодом 7-го символа.
Результат 2 I пары получается путем: код 8 символа складывается
с кодом 9-го символа (II пара - с кодом 10-го, III пара - 11-го ,IV пара - 12-го ,V пара- 13-го).
Сравниваются Результат 1 и результат 2 каждой пары.
Если все 10 результатов попарно равны, то
"Correct". Например, пароли: 230222g4588784, 111111a1123451
И кейген на Рascal'е, от Antoha.
var
c,i,j : word;
fl : boolean;
str : string;
begin
{-------------- et vmesto clrcsr() iz crt modula a to mojet glukat}
asm
mov ax,3
int 10h
end;
writeln('Keygen by ant0xa');
writeln('How many keys ? [1..65535]');
readln(c);
randomize; str[0]:=#14;j:=1;
while j<=c do
begin
str[7]:=chr(random(74)+48); str[8]:=str[7];
str[14]:=chr(random(74)+48);
for i:=1 to 6 do
str[i]:=chr(random(74)+48);
for i:=1 to 5 do
str[i+8]:=chr(ord(str[i+1]) xor ord(str[i]) + i);
fl:=true;
for i:=1 to 14 do
if (ord(str[i])<48) or (ord(str[i])>122) then
begin
fl:=false;
break;
end;
if fl then
begin
writeln('Key ',j,' is: ',str);
j:=j+1;
end;
end;
readln;
end.
Победил в нашем конкурсе Kowdle -
он единственный решил все задания.
Просим его отписать на xa@real.xakep.ru
и мы подарим ему какую-нибудь важную
ценность 🙂 Так же хочется отметить: Samvel -
занял второе место, Dcr и конечно DigitalScream :).
Надеемся, что вам понравилось, пишите ваши
отзывы о головоломке сюда, в комментарии.