Появилась необходимость реализовать дополнительную защиту для конфигурации от несанкционированного доступа. Была перелопачено куча статей и информации, но почему-то ничего они не дали.
Пришлось разбираться самому, и вот что вышло.
1. Что необходимо.
- USB накопитель любого объема;
- внешняя компонента USBInfo.dll (в интернете не найдете, т.к. писалась на заказ из-за недостатка опыта разработки ВК);
- обработка для создания ключа защиты (есть в архиве);
- конфигурация с внедренной системой (пример есть в архиве).
2. Создание ключа.
- форматируем USB накопитель и присваиваем ему имя по умолчанию "1CKEY", если не нравится, можно другое, но придётся поменять в коде в одном месте;
- регистрируем USBInfo.dll, можно через командную строку, можно через батник в папке с dll-кой, не забываем про права администратора;
- открываем обработку "СоздатьКлючЗащиты.epf" в любой конфигурации, указываем путь к USB-накопителю, просто букву тома. Нажимаем кнопку создать. Обработка с помощью dll-ки получает всю необходимую информацию о USB-носителе, обрабатывает её, формирует текст и сохраняет его в txt файл в корне накопителя под именем "lic.lic" (также можно задать любое имя и расширение для файла, но надо исправить в коде в двух местах).
- что получаем в файле? В файл у нас записывается информация о накопителе: серийный номер, VID и PID. Как стало известно в ходе реализации, что у USB накопителя "два серийных номера". Этого я раньше не знал, т.к. далек от железа, первый тот, что вшит производителем, а второй тот, который присваивает виндовс, и на разных ПК он частенько отличается, а так как нам необходимо использовать на любом ПК, то второй номер не рассматриваем. Итак, в файл у нас записана информация, которая будет нужна для идентификации USB накопителя как ключа защиты/
Человеку, который далек от программирования, думаю, не сразу будет понятно, что тут записано, а тем, кто разбирается, думаю, объяснять не придётся.
- На этом создание ключа закончено.
3. Как работает в конфигурации?
- В архиве пример конфигурации и отдельно обработка.
- В процедуру "ПриНачалеРаботыСистемы", также можно в любую, какую хотите, вставляем:
Процедура ПриНачалеРаботыСистемы (Отказ)
ОткрытьФорму("Обработка.ПроверитьНаличиеКлючаЗащиты.Форма.Форма");
КонецПроцедуры
- При открытии обработка по имени "1CKEY" ищет USB накопитель (также, если есть желание, можно убрать привязку к названию флешки), если накопитель найден, идет чтение файла "lic.lic", если он есть, естественно. Файл прочитан.
- Далее с помощью dll-ки получаем информацию о USB накопителе (серийный номер, VID, PID) и сравниваем с тем, что в файле. Кстати, dll-ка должна быть зарегистрирована на всех ПК, где будет использоваться флешка.
- Если все удачно и все совпадает, то можно работать, если нет, то обработка завершает работу с предупреждением.
Видео, демонстрирующее работу ключа и внедрение в ЗУП (демо) 3.0
Конечно же, это не супер идеальная защита от злоумышленников и вредителей, но все же недостаточно опытных и сообразительных остановит с легкостью. Поэтому полностью не описываю процесс формирования файла и т.п. В данный момент используется в двух организациях, естественно, там она доработана и повышена защита. Здесь же представлено основное, от чего отталкиваться, а далее фантазия.
В планах реализовать защиту от удаления/копирования/чтения файла с информацией пользователем, но это пока в планах.
Если у кого-то есть какие критика/замечания/предложения/дополнения, буду рад.
П.С. Конечно же, вы можете сказать, что просто взял все отсюда //infostart.ru/public/77203/ , но, уверяю вас, вы ошибаетесь, данную статью увидел только после реализации своей идеи, вот почему-то, когда нужно было, она мне не попалась на глаза...
Что получате в архиве:
- dll-ку, которая протестирована и работает как на Windows 7 x64/86, так и на Windows 8 x64/86;
- обработки внешние "ПроверитьНаличиеКлючаЗащиты" и "СоздатьКлючЗащиты";
- пустая конфигурация, пример работы.