Отступление
Первая часть: //infostart.ru/public/1391552/
Скачивание ваших файлов
В прошлой публикации мы рассмотрели возможности дистанционного доступа к экрану через запущенную 1С конфигурацию.
В этой публикации мы продолжим рассматривать обходные пути доступа к данным и обсудим файловую систему.
Да, и к файлам тоже может быть доступ через работающую 1С конфигурацию. :)
Работу с файлами можно разделить на два этапа. Первый этап это осмотр и получение списка всех файловых ресурсов. Второй этап это отправка на дистанционный сервер интересующего файла.
Возможный вариант выполнения этих этапов я опишу далее в публикации на примере создания паука файлов, который управляется с дистанционного сервера командами каждые 1-2 минуты.
Цель:
*) Делать пауком регулярные запросы для получения команды от сервера;
*) Иметь возможность сканировать диски компьютера;
*) Иметь возможность отправлять файл на дистанционный сервер;
Пример создания подсистемы "Паук файлов" может быть сделан в виде двух отдельных 1С конфигураций.
Первая конфигурация "Клиент" предназначена для работы паука на клиенте. Это пример возможной подсистемы, которая может быть встроена в рабочую конфигурацию.
Вторая конфигурация "Сервер" предназначена для управления и приема отправленных с клиента файлов. Сервер будет на отдельном удаленном физическом сервере слушать по http get и post запросы с данными.
Асинхронный режим
Управление пауком и отправка файлов по сети это ресурсоемкая задача. Если это будет выполняться в основном потоке 1С, то клиент достаточно быстро спросит, почему у него каждые цать секунд подвисает 1С.
Чтобы интерфейс работал без заморозок, работа должна делаться в фоновом режиме.
Для этого могут быть использованы асинхронные методы, они для этого и предназначены. Вызов асинхронного метода создает отдельный фоновый поток, который работает без влияния на доступность интерфейса клиента.
Для включения асинхронного режима должно быть установлено свойство "Режим использования модальности" конфигурации в значение "Не использовать".
Установка паука файлов на клиенте
Установка движков паука файлов может быть выполнена стандартным способом при начале системы. Тут все просто. Во временную папку скачивается zip архив из общего макета и разархивируется.
Для ускорения запуска 1С, перед скачиванием может быть выполнена проверка, что движки уже на клиенте и нет нужности в повторном скачивании.
Файлы устанавливаются во временную папку, которая находится настолько глубоко в иерархии папок, что эту папку никто не найдет.
Путь может выглядеть как "c:\Users\Имя Пользователя\AppData\Local\Temp\pauk_files" и найти его достаточно сложно.
Управление пауком файлов
Управление пауком файлов может выполняться через регулярные запросы команды от паука на управляющий сервер.
Для запуска регулярных запросов может использоваться служебная функция "ПодключитьОбработчикОжидания()" которая будет запускать get обращение к управляющему серверу.
Из обработчика ожидания будет вызываться дальнейшая цепочка асинхронных функций.
В первой функции должен быть выполнен get запрос серверу для управляющей команды.
В данном коде выполняется запуск через szp.exe для скрытого запуска без мигающего черного экрана.
Основная команда для curl вынесена в bat файл для создания контекста, где будет сохраняться файл komanda.txt.
Таким образом файл komanda.txt будет сохранен рядом с curl.exe, а не где-то на дисках.
Содержимое komanda.txt может состоять из двух строк и быть следующих вариантов.
Для получения списка файлов
1) Сообщить список файлов папки
2) d:\vrem\
Для отправки файла на сервер
1) Передать файл
2) d:\vrem\Квадрат.png
Если команда на управляющем сервере отсутствует, то файл komanda.txt будет пустым. В таком случае паук проигнорирует пустой файл и снова выполнит запрос команды в следующем цикле.
Осмотр дисков и отправка файлов
Если получена команда "Сообщить список файлов папки", значит паук должен просканировать указанную папку и результат сканирования должен отправить на сервер.
Для предотвращения кракозябров при чтении файла на сервере, указываем кодировку utf-8 через команду chcp 65001.
Результатом сканирования должен быть файл "list_files.txt". В этом файле должен быть человекочитаемый список файловых ресурсов внутри указанной папки.
Созданный файл list_files.txt будет отправлен на сервер через curl.
Аналогичным образом через curl будет отправлен запрошенный файл, если пришла команда "Передать файл" с путем к файлу.
Создание команды для паука
Команда для паука должна быть создана на сервере следующим образом.
В списке регистра сведений "КомандыПаукуФайлов" в форме записи должны быть заполнены поля "ИмяПользователя", "ВозможнаяКоманда" и "ИмяФайловогоРесурсаМашиныКлиента".
Для определения машины, с которой паук делает запрос команды, в get запросе должен быть добавлен параметр с именем пользователя, который запустил 1С конфигурацию.
Таким образом может быть указано обратившемуся пауку на какой машине что делать.
В ответ на запрос, пауку будет выдана команда в виде текстового файла из двух строк как результат get запроса.
Когда паук с клиента обращается за командой, автоматически устанавливается галочка "Команда прочитана пауком" и можно наблюдать, что команда отправлена.
Когда паук с клиента обращается с результатом выполнения, автоматически устанавливается галочка "Команда выполнена пауком". При этом результат выполнения должен сохраниться в этой же записи регистра сведений.
Таким способом автоматически сохраняется связь между командой и результатом.
Просмотр списка файлов
Для просмотра файловых ресурсов указанной папки должна быть щелкнута строка с возможной командой "Сообщить список файлов папки" и в правом текстовом поле должен отобразиться соответствующий список.
Текст списка имеет человекочитаемый форматированный вид и можно увидеть все имена вложенных файлов и папок.
Просмотр скачанного файла
Для просмотра скачанного файла должна быть щелкнута строка с возможной командой "Передать файл" и должна быть нажата кнопка "Скачать файл".
При щелчке на кнопке "Скачать файл" программа разберет имя запрошенного файлового ресурса, возьмет только имя файла и сохранит файл с указанным именем во временной папке.
Такой подход должен обеспечить удобство работы со скачанными файлами на сервере, когда имена файлов на диске совпадают с именем запрошенного файла.
Для открытия файла достаточно найти его в заранее определенной в коде временной папке. Например, это может быть "d:\temp\".
Предупреждения о незаконности и последствиях
Предполагаю, что не в меру любознательные программисты уже давно знают о таких возможностях и применяют их рискуя своей свободой.
Как минимум это ст.183 "Промышленный шпионаж" УК РФ. Если кто-то надумал этим заниматься, то подумайте еще раз.
Хочу напомнить, что посыл этой публикации направлен в основном обычным пользователям.
Краткую суть посыла можно описать так, что ваша файловая система может быть доступна посторонним даже тогда, когда вы об этом не знаете.
Но могу вас немного успокоить, если у вас в компании несколько программистов. Чем больше штат программистов, тем меньше вероятность что заведется мышка :)
В данной публикации мы рассмотрели возможность доступа к файлам на диске. В следующей статье попробуем описать вероятные способы защиты экрана и файлов.
Приложенные конфигурации
К публикации приложены конфигурации с единственной целью.
Если Вы расследуете события и инциденты, связанные с компьютерной безопасностью, то изложенные в конфигурациях формальные признаки могут помочь в вашей работе.
Запрещается использовать данные конфигурации в иных целях, кроме изучения.
kuzkov.info. Оставайтесь на связи !