Наблюдение за вашим монитором
Вы являетесь директором, главбухом или финдиректором ? Если да, то эта статья для Вас.
Хотя..., эта статья тоже для Вас, если вы имеете на своем компьютере целый день открытую 1С-ку :)
Представим на минуту, что вся ваша трудовая деятельность целый день проходит за экраном настольника. Вы общаетесь в беседках, заходите в Сбер.НаСвязи или иные платежные системы, читаете и пишите свои рабочие письма, что-то секретное и важное делаете в эксельных файлах для руководства.
В общем, Вы занимаетесь своими делами на своем рабочем компьютере и при этом у Вас на фоне почти всегда открыта 1С и свернута в системный лоток или панель задач.
А если я Вам скажу, что все ваши действия почти в режиме на связи видит простой и скромный 1Сник ?
Да, он в курсе всех дел, знает что Вы писали в общалке (icq, telegram, slack и т.п.) подружке-коллеге о новой сотруднице, знает что Вы пишите товарищу о руководстве.
1Сник видит всю любовную переписку между симпатичными сотрудницами и их женатыми начальниками, ведь на фоне почти всегда открыта 1С :)
Предвижу вопрос, как это возможно ? Достаточно просто, давайте я Вам про это расскажу.
Сегодня я хочу обсудить экран. Да, мы обсудим как 1Сник может видеть все, что отображается на экране монитора.
Интересно ? Тогда читаем дальше :)
Как смотрят на 1С обычные пользователи ?
Для обычных пользователей 1С это простая рабочая программа, которая запускается утром и выключается вечером. Для них это черный ящик, в который с одной стороны вносятся данные, с другой стороны получаются отчеты. Ни больше, ни меньше.
Как смотрят на 1С программисты ?
Это обычная программа, которую можно запрограммировать. Можно запрограммировать (подчеркнуто и жирным шрифтом).
Кто сказал, что в 1С может программировать только то, что ему сказано сверху ? А вот то, что Вы с кодом программиста запустите 1С на своем компьютере, это факт.
Конечно, чудес не бывает.
Для того, чтобы видеть происходящее на экране, 1Сник должен получить снимки экрана.
Возможный вариант, как их получить, я и покажу далее в публикации на примере снятия и отправки снимков экрана каждые 10-30 секунд.
Цель:
*) Делать регулярные снимки экрана;
*) Централизовано хранить все снимки;
*) Иметь возможности потом фильтровать их по рабочим местам;
*) Сделать систему наблюдения максимально легкой, чтобы не заметили изменений в работе;
Пример создания подсистемы "Экранопис" может быть сделан в виде двух отдельных 1С конфигураций.
Первая конфигурация "Клиент" предназначена для снятия и отправки снимков. Это пример возможной подсистемы, которая может быть встроена в рабочую конфигурацию.
Вторая конфигурация "Сервер" предназначена для получения и хранения снимков
Сервер будет на отдельном удаленном физическом сервере слушать по http post запросы с данными.
Асинхронность для незаметности
Создание файла снимка и отправка его по сети это ресурсоемкая задача. Если это будет выполняться в основном потоке 1С, то клиент достаточно быстро спросит, почему у него каждые цать секунд подвисает 1С.
Чтобы интерфейс работал без заморозок, снимки должны делаться в фоновом режиме.
Для этого могут быть использованы асинхронные методы, они для этого и предназначены. Вызов асинхронного метода создает отдельный фоновый поток, который работает без влияния на доступность интерфейса клиента.
Для включения асинхронного режима должно быть установлено свойство "Режим использования модальности" конфигурации в значение "Не использовать".
Создание снимков экрана
Главным условием создания снимка является то, что снимок должен сохраняться в файл для дальнейшей отправки на сервер.
Тут могут быть следующие варианты:
*) Подключение родной библиотеки;
*) Работа через консольное приложение;
Здесь приоритетен вариант через консольные приложения.
Этот вариант универсальнее с точки зрения платформы и операционной системы. Консольное приложение может работать даже из 1С 7.7 на windows 95.
Одним из подходящих вариантов является консольная программа nircmd.exe со своими параметрами savescreenshot (основной монитор) и savescreenshotfull (весь рабочий стол из всех мониторов).
Плюсом этой консоли является быстрая работа без мигающего экрана с хорошим качеством картинки в png формате.
Вызовом этой команды будет сохраняться файл картинки рядом с nircmd.exe.
Если в имени файла будет указано время, то будут делаться снимки без риска их перезаписи друг другом.
Отправка файлов на сервер
Для отправки на сервер также есть варианты:
*) Отправлять через http запросы встроенными в платформу средствами;
*) Использовать консольную программу через асинхронный метод;
Если будут отправляться http запросы встроенными в платформу средствами, то это будет вызывать замерзания интерфейса на период отправки, т.к. http запросы могут выполняться только синхронно.
Замерзания интерфейса будут мешать работать и будут обращать на себя внимание, поэтому встроенные средства использовать нельзя
Если выбирать консольную программу, то для этого может быть выбрана программа curl.
Эта программа может быть использована для выполнения http запросов в консольном режиме через запуск с параметрами.
При запуске, curl отображает черное мигающее окно, которое можно обойти включив szp.exe в команду запуска. Картинка снимка экрана должна быть передана через параметр --data-binary @ИмяФайла.png.
Путь слушающего сервера в данном случае может быть передан через глобальную переменную.
Установка на клиенте
Установка движков экранописа может быть выполнена стандартным способом при начале системы. Тут все просто. Скачивается zip архив из общего макета и разархивируется.
Для ускорения запуска 1С, перед скачиванием может быть выполнена проверка, что движки уже на клиенте и нет нужности в повторном скачивании.
Регулярность залог успеха
Создание и отправка снимков должны выполняться с указанной периодичностью.
Для этого может быть запущена функция "ЗапуститьДвижкиЭкранописа_МодульПриложения()" в модуле приложения через "ПодключитьОбработчикОжидания()" при начале работы системы.
При запуске функции должна быть указана частота срабатывания каждые N секунд.
Удаление отправленных файлов
После отправки файлов снимка может быть вызвано удаление отправленных файлов. Это нужно для предотвращения заполнения диска большим объемом файлов.
Получение снимков на сервере
Как ранее было написано, сервер для снимков может быть выполнен в виде 1С конфигурации, которая слушает http post запросы с картинками.
Для этого на сервере может быть создан http-сервис, который принимает файл и записывает его в независимый регистр сведений "СнимкиЭкрана".
Основными характеристиками записи могут быть:
*) Измерение "ИмяКлиента" для фильтра по машине клиента;
*) Измерение "ДатаСнимка" для хронологии снимков;
*) Ресурс "ДанныеКартинки" для хранения самой картинки;
Просмотр снимков
Просмотр снимков можно настроить прямо в форме списка регистра сведений. Для этого на форму может быть добавлено поле картинки.
Устанавливать картинку можно в событии "ПриАктивацииСтроки".
Если картинка является большой и выходит за пределы элемента, то можно уменьшить ее нажатиями "-" на клавиатуре до подходящих размеров.
При активации новой строки установленные размеры должны сохраниться и просмотр может быть вполне удобным.
Предупреждения о незаконности и последствиях
Предполагаю, что не в меру любознательные программисты уже давно знают о таких возможностях и применяют их, рискуя своей свободой.
Как минимум это ст.183 "Промышленный шпионаж" УК РФ. Если кто-то надумал этим заниматься, то подумайте еще раз.
В начале текста я писал, что посыл этой публикации направлен в основном обычным пользователям.
Краткую суть посыла можно описать так, что экран вашего монитора может быть доступен посторонним даже тогда, когда вы об этом не знаете.
Но могу вас немного успокоить, если у вас в компании несколько программистов. Чем больше штат программистов, тем меньше вероятность что заведется мышка :)
В данной публикации мы рассмотрели возможность доступа к экрану монитора. В следующей статье попробуем описать вероятный пример доступа к файлам на компьютере директора.
Приложенные конфигурации
К публикации приложены конфигурации с единственной целью.
Если Вы расследуете события и инциденты, связанные с компьютерной безопасностью, то изложенные в конфигурациях формальные признаки могут помочь в вашей работе.
Запрещается использовать данные конфигурации в иных целях, кроме изучения.
Оставайтесь на связи!