Screenlogger – Улыбнись, Тебя Снимает Скрытая Камера

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

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

Идти! При написании любого достаточно большого программного продукта необходимо разбить глобальную задачу на несколько более простых.

Итак, в данном случае я выделил несколько практически не связанных друг с другом процессов, которые, работая вместе, позволяют достичь необходимого результата.

В частности, для решения этой задачи необходимо реализовать: 0) Добавление служебных файлов в системные папки при первом запуске 1) Делаем скриншот с экрана 2) Отправка скриншота на удаленный сервер Соответственно, для реализации была выбрана платформа .

NET, имеющая весь необходимый функционал.

Приложение написано на WindowsForms для ясности и целей отладки; по большому счету это может быть консольное приложение.

Описание функций: SetConfig – обеспечивает чтение параметров конфигурации из прикрепленного файла настроек.

Отправить – отвечает за отправку скриншота по электронной почте.

MakeScreen – отвечает за создание скриншота Круг – отвечает за повторение съемки и отправки скриншота в фоновом режиме с заданной частотой.

CasualStart – определяет действия при следующем запуске программы.

FirstStart – обеспечивает корректную установку программы Теперь – немного подробнее о каждой из функций.

Настройка конфигурации: Поскольку программное обеспечение должно быть гибким, должна быть возможность изменять внутренние параметры программы вне ее кода.

Каждый раз, когда вы запускаете это программное обеспечение, оно пытается найти файл SaveScreen.ini, обновить его настройки и только после этого начать нормально работать.

Если обновить параметры невозможно, используются значения по умолчанию.

(о том, какой параметр за что отвечает, будет в конце статьи) По техническим причинам нам пришлось использовать подчеркивание вместо пробела и # вместо @, но обратная подстановка осуществляется внутри программы.

Выполнение программы начинается в блоке Form1_load и может развиваться в двух режимах - обычный запуск (при наличии каталога установки на компьютере) и установка (при отсутствии каталога установки).

Давайте посмотрим на каждого из них.

Первый старт: При первом запуске вам необходимо создать каталог, в котором будут находиться файлы программы, перенести туда исполняемый файл и файл конфигурации, а также внести в реестр необходимые записи для добавления ПО в автозагрузку.

Соответственно, это осуществляется функцией FirstStart().



Screenlogger – Улыбнись, Тебя Снимает Скрытая Камера

После установки приложение закрывается - при следующей перезагрузке компьютера оно будет работать нормально.

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

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

Перед запуском фонового потока возможна пауза, которую следует ставить на относительно медленных компьютерах, чтобы ускорить загрузку системы и избежать конфликтов при запуске.

СлучайноеСтарт()

Screenlogger – Улыбнись, Тебя Снимает Скрытая Камера

Тираж: Все до безобразия прозаично — в вечном цикле делаем и отправляем скриншоты, после чего ждем указанное время.

Гораздо интереснее процесс снятия и отправки скриншота.



Screenlogger – Улыбнись, Тебя Снимает Скрытая Камера

Сделайте скриншот: В C# можно сохранить изображение в растровом формате, используя функцию копирования экрана.

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



Screenlogger – Улыбнись, Тебя Снимает Скрытая Камера

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

Этот метод заключён в блок try-catch на случай отсутствия соединения с сетью — даже в этом случае программа не выдаст сообщение об ошибке, а будет покорно ждать, пока у неё появится возможность связаться с сервером.

Почтовый сервер был выбран из соображений простоты; в принципе, фотки можно отправлять куда угодно.



Screenlogger – Улыбнись, Тебя Снимает Скрытая Камера

Общее взаимодействие:

Запуск программы, повторюсь, осуществляется в методе Form1_Load.

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

Ничего сложного и необычного, просто взаимодействие нескольких встроенных классов.



Screenlogger – Улыбнись, Тебя Снимает Скрытая Камера

И напоследок пояснение к файлу автоконфигурации — все имена переменных совпадают с именами в программе, поэтому, объясняя поля в файле инициализации, я описываю и сами переменные.



Screenlogger – Улыбнись, Тебя Снимает Скрытая Камера

wayToDir – имя подпапки, в которую отправляются скриншоты

FinalDir = -имя каталога, в который переносится программа

nameOfApp = имя исполняемого файла

subKeyAdress = путь к записи реестра, которая будет добавлена в автозапуск

зарезервировано – зарезервированное поле

name — имя записи реестра

startPause — пауза перед началом записи экрана

exitPause – пауза перед принудительным выходом из программы

adressFrom – адрес отправителя

nameFrom – подпись отправителя

nameTo — адрес электронной почты получателя

mailSubject — Тема письма

mailBody – тело письма

smtpAdress – SMTP-адрес почтового сервера отправителя.

smtpPort – порт отправки почты mailPassword – пароль от почты отправителя exp – расширение файла timeBetweenScreens – время между созданием двух скриншотов.

Обобщить: Только что был описан процесс написания приложения для отслеживания активности на удаленном компьютере.

Подключаясь сюда к получению файла со списком команд с сервера и разделяя его, мы получаем упрощенный самописный TeamViewer. Но этого нет в этой статье.

Источники Теги: #информационная безопасность #C++ #.

NET #SMTP #logger

Вместе с данным постом часто просматривают: