Фундаментальные основы хакерства




Шаг первый. Разминочный.


Бороться со своими мыслями, это уподобиться одному глупцу, который в целях аккуратности и гигиены решил больше не какать. День не какал, два не какал. Потом, конечно не выдержал, но всех продолжал уверять, что не какает.

Аноним

Алгоритм простейшего механизма аутентификации состоит в посимвольном сравнении введенного пользователем паролем с эталонным значением,

хранящимся либо в самой программе (как часто и бывает), либо вне ее, например, в конфигурационном файле или реестре (что встречается реже).

Достоинство такой защиты – крайне простая программная реализация. Ее ядро состоит фактически из одной строки, котораяую

на языке Си обычно выглядит можно записать так: – "if (strcmp(&введенный пароль, &эталонный пароль)) { /* Пароль неверен */} else {/* Пароль ОК */}"

Давайте дополним этот код процедурами запроса пароля и вывода результатов сравнения, а затем испытаем полученную программу на "прочность", т.е. стойкость к взлому.

// Простейшая система аутентификации

// посимвольное сравнение пароля

#include <stdio.h>

#include <string.h>

#define PASSWORD_SIZE 100

#define PASSWORD      "myGOODpassword\n"

// этот перенос нужен затем, чтобы  ^^^^

// не выкусывать перенос из строки,

// введенной пользователем

int main()

{

// Счетчик неудачных попыток аутентификации

int count=0;

// Буфер для пароля, введенного пользователем

char buff[PASSWORD_SIZE];

// Главный цикл аутентификации

for(;;)

{

// Запрашиваем и считываем пользовательский

// пароль

printf("Enter password:");

fgets(&buff[0],PASSWORD_SIZE,stdin);

// Сравниваем оригинальный и введенный пароль

if (strcmp(&buff[0],PASSWORD))

// Если пароли не совпадают – "ругаемся"

printf("Wrong password\n");

// Иначе (если пароли идентичны)

// выходим из цикла аутентификации

else break;

// Увеличиваем счетчик неудачных попыток

// аутентификации и, если все попытки




Содержание  Назад  Вперед