
18.09.2008, 02:53
|
|
Участник форума
Регистрация: 17.05.2007
Сообщений: 220
Провел на форуме: 3013539
Репутация:
441
|
|
Задача для хекеров =)
(Очень занимательное домашнее задание от препода =) )
Дана несколько запутанная программа. Преподователь вводит пароль, который студент не видит. После этого студент должен ввести свои варианты пароля и добиться вывода строки "You're COOl hacker" Количество попыток ограниченно(2 штуки). Требование: во время угадывания нельзя запускать дебаггеры, виртуальные машины и т.д. Просто для исследования программы можно использовать дизасм и дебаггер, hex редакторы нельзя использовать (препод все равно будет компилить прогу сам). (Решений несколько)
Код программы:
Код:
#include <stdio.h>
#include <stdlib.h>
#define ARRAY_LENGTH 100
int main()
{
int flag;
int i,j;
char a_passwords[2][ARRAY_LENGTH]={"xxx","yyy"};
char *p_user = NULL;
char *p_etalon =NULL;
p_etalon=a_passwords[0];
p_user=a_passwords[1];
printf("Etalon password: ");
fflush(stdout);
scanf("%s",p_etalon);
for (i=0; i<10000;i++) //что бы студент не видел, что было введено преподом
{
printf("\n");
}
a_passwords[1][0]=&p_etalon-&p_user;
for (j=2;j>0;j--)
{
printf("Password: ");
fflush(stdout);
scanf("%s",p_user);
flag=0;
for (i=0; i<ARRAY_LENGTH;i++)
{
flag=(p_etalon[i]!=p_user[i]);
if ((p_etalon[i]==0) || (p_user[i]==0) || flag)
break;
}
if (flag)
{
printf(p_user);
printf(" - wrong pasword!\n");
}
else
{
printf("\nYou're COOl hacker!!!\n");
exit(0);
}
}
printf("You're looser!!!\n");
return 0;
}
|
|
|