Защита конфигурации 1С (без внешних компонент, супер легкая и быстрая)

Возможность автоматизации легкой и быстрой защиты конфигурации от распространения неблагонадежными клиентами. Работает только в режиме обычного приложения. Защита не полноценная (в случае если не применять обфускатор к спец.модулям), но позволяет снять проблему.

Понадобилось сделать быстро блокировку от распространения конфигурации-поставки по «рукам» клиентов. Конфигурация не является конечным продуктом, а только пример работы.

Данные паролей генерируются ввиде ХЭШ-кода и сохраняются в справочник «ПраваДоступаПоЛицензии». Пароль ХЭШ-код формируется из наименования организации и имени компьютера пользователя. 

Как настроить и работать с этим?

1. Перекинуть все объекты метаданных из конфигурации ЗащитаКонфигурации в вашу (кроме Организации, ГенераторЛицензий, ДокументПример)  

2.  В модуле обычного приложения в процедуре ПриНачалеРаботыСистемы() необходимо добавить:

//*Лицензионная политика

//Проверка на доступ

Если НЕ ЛицензионнаяПолитика.ПроверитьРазрешениеНаДоступКПрограммеТекущегоПользователя() тогда ЛицензионнаяПолитика.ВвестиКодДоступа(); ЛицензионнаяПолитика.ЗафиксироватьКодДоступа(); КонецЕсли;

//*

3. В модуль «важного» объекта  метаданных в процедуре ПриЗаписи() добавить:

//*Лицензионная политика

ЛицензионнаяПолитика.ПроверитьДоступИВыйтиСПредупреждением();

//* 

 4. В модуле ЛицензионнаяПолитика: добавить постоянный пароль для поставки в функции ПолучитьИдентификационныйПарольПрограммы()  и ПолучитьИдентификационныйПарольАдминский(). Это на всякий случай, если требуется отключить быстро всю защиту и войти в программу.

5. При формировании поставки не включать в поставку исходный текст модулей везде где есть  *Лицензионная политика

6. Для генерации паролей-лицензий пользователей используется обработка  ГенераторЛицензий. В ней необходимо указать пароль программы (см. п. 4), наименование организации, наименование компьютера. 

Вот впринципе и все! Никаких внешних компонент и ноль потраченных средств. Подсистему защиты легко перенести на управляемое приложение (при необходимости).

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

Рекомендую применять обфускатор к указанным модулям и  защита будет 100% надежной.

44 Comments

  1. Kabz

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

    Reply
  2. WKBAPKA

    идея интересная, но к сожалению, то что 1С компилирует, легко разкомпелировать… но как нормальная такая защита от дурака, пойдет

    Reply
  3. Kyrales

    (1)(2) Полностью с вами согласен. Как «защита от дурака» себя отрабатывает на отлично

    Reply
  4. AleksSF

    Хорошо бы описание подключения включить в файл для скачивания, чтобы потом не искать как этим воспользоваться. А так +.

    Reply
  5. Kamikadze

    как мне кажется защитой от дурака может служить и пароль на модули

    Reply
  6. Kyrales

    (5) В данном случае вы не правы, т.к. не вчитались в описание. Данная подсистема позволяет защитить от копирования вашей разработки

    Reply
  7. Kamikadze

    Я КОНЕЧНО ВНИКНУ, интересно как именно работает защита.

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

    В описании прочитал, но не верется, пока не проверю сам 🙂

    Reply
  8. electronik

    Не совсем то что хотелось бы но на безрибэ и рак рыба. Автору спасибо и конечно респект ну заслуженое 5++

    Reply
  9. MMF

    «Защита» ни от чего не защищает. Даже дураку достаточно погуглить 5 минут и найдется декомпилятор.

    Reply
  10. Kyrales

    (9) У вас не защищает, у других БОЛЬШИНСТВА прекрасно защищает.

    Reply
  11. Kamikadze

    (10) тоесть вы отрицаете возможность «открытия» вашего программого кода декомпилятором???

    Reply
  12. Kyrales

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

    Reply
  13. arjuna

    Если не учитывать декомпиляторы то какая ж это защита?

    Reply
  14. Kyrales

    (13)(11)(9) Ладно, господа взломщики-декомпилисты. Попробуйте взломать конфигурацию раскрыв тексты модулей которые вложены в нее.

    Reply
  15. awa

    (14) Ты все-таки не верил? Ну вот, смотри.

    Reply
  16. ValeriVP

    мой декомпилятор не обрабатывает целиком конфигурации, а только отдельные модули

    но тоже не плохо справляется

    Reply
  17. Kyrales

    (15)

    При открытии конфигурации вылазиет ошибка:

    Неклассифицированная ошибка документа.

    по причине:

    Ошибка при выполнении файловой операции ‘D:Downloads1Cv8_U.cf’

    по причине:

    Неверный формат хранилища данных ‘file://D:/Downloads/1Cv8_U.cf’

    (16) Вы раскрыли все модули до единого?

    Reply
  18. ValeriVP

    (17)где один — там и остальные 🙂

    Reply
  19. Kyrales

    (18) Молодец. Тебя такая защита не застопорит, признаю.

    Reply
  20. awa

    (17) Почему-то при скачивании моего файла из (15) добавляются в начале и в конце какие-то <pre>. Не знаю, кто виноват, движок сайта или хром, но не важно. Давай сделаем проще.

    Скачай вот это и попробуй сам.

    Reply
  21. ValeriVP

    (19) да и другие защиты не особо: http://forum.infostart.ru/forum24/topic61383/message675477/#message675477

    вообще кури http://infostart.ru/public/57362/

    Reply
  22. ValeriVP

    (20) а ты нажимай ссылку «Скачать», а не название файла

    Reply
  23. awa

    (22) О! Точно! Спасибо!

    (17) ты тоже не туда нажимал, значит))

    Reply
  24. Kyrales

    (23) Да все открылось

    Reply
  25. AleksSF

    Не совсем понял. В вашей конфигурации.

    Вошел по служебному паролю 123

    Создал организацию

    Сгенерировал лицензионный ключ

    При запуске конфигурации ввожу полученый лицензионный ключ

    Выдает:

    Введенный код доступа не верен!

    Что я не доделал

    Reply
  26. Kyrales

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

    Reply
  27. AleksSF

    (26)

    Это я понял но вроде все правльно делал.

    Вот приложил картинки.

    И не совсем понятно: при генерации вводишь пароль, а куда его потом вводить

    Reply
  28. AleksSF

    (26)

    Вроде разобрался:

    При генерации пароль программы должен быть такой как описано в функции Функция ПолучитьИдентификационныйПарольПрограммы()

    А в описании этот вопрос упустили. Вот и недостаток описания.

    Reply
  29. Kyrales

    (28) Спасибо за замечание. В п.4 я указывал, что необходимо указывать пароль программный и пароль админский, но не уточнил, что при генерации использовать программный. Это указано далее в п.6 «Для генерации паролей-лицензий пользователей используется обработка ГенераторЛицензий. В ней необходимо указать пароль программы (см. п. 4), наименование организации, наименование компьютера. «

    Reply
  30. electronik

    ИИнтересно инересно нужно будет поюзать на досуге

    Reply
  31. piton66

    Может под управляемое приложение кто нибудь переделывал?

    Reply
  32. zil

    Как будет время посмотрим.

    Reply
  33. pumbaE

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

    Reply
  34. piton66

    Для управляемого переделывал кто нибудь?

    Reply
  35. piton66

    На модуль управляемого приложения пароль не ставится.

    Reply
  36. Kyrales

    (35)(36)Этот пример только для обычного приложения. Возможно в будущем сделаю аналог для управляемого

    Reply
  37. m-kos

    (37)

    Не появился аналог для управляемого приложения?)

    Reply
  38. vas2005

    (37)Да-да, хотелось бы увидеть и для управляемых форм!!!))))

    Reply
  39. vas2005

    Насколько я разобрался, это вырезанный кусок из рабочей базы.

    Тут есть множество моментов не используемых, хотя где-то это применялось)))

    Вот к примеру

    Процедура СброситьРегистрацию()

    или вот еще такой код доступа

    КодДоступаПервичный

    .

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

    А тут этот момент видимо вырезан автором, первый запуск системы и сразу регистрируй, даже организацию не успеешь оформить))))

    Можно конечно предположить, что

    ПарольПрограммы

    это и есть

    КодДоступаПервичный

    , но с ним тогда можно спокойно копировать программу и пользоваться под этим паролем))))

    Также есть косяк с записью резервных паролей

    Тут обстоят дела так, что при вводе пароля

    ПарольПрограммы

    или

    ПарольАдм

    он записывается в открытом, не шыфрованном виде в

    Доступ3

    .

    А так за саму идею решения вопроса с копированием, автору, однозначно 5++

    Reply
  40. Kyrales

    (40)

    сразу регистрируй, даже организацию не успеешь оформить))))

    Да в целом вы правильно разобрались. Я специально описал и оставил в коде рабочий пример, чтобы сразу было все легко и понятно. Сейчас для защиты можно сделать обфусцирование данных модулей и затем закомпилировать 1С средствами. Защита будет 100%

    Reply
  41. vas2005

    (41) Возможно ли посмотреть полный вариант вашей защиты…??)))

    С количеством лицензий совсем непонятно, для чего и как определить..???

    Reply
  42. UserPro

    Тема интересная. Может кто подскажет, есть способ «закрыть» в конфигурации добавленный самописный документ или лучше вынести во внешнюю обработку ???

    Reply
  43. held88

    Я дела по другому. Пишу компоненту на C#. Пихаю туда часть логики без которой ничего не работает. Применяю шифрованный xml файл с данными клиента как ключ. Кстати, рецепт нашел кажется тоже тут, в одной из публикаций.

    Reply
  44. d.zhukov

    (44) Любые компоненты — это геморрой. Тем более когда речь идет о шифровании тиражного продукта. Покупает клиент с правами рядового юзера (примерно 70% покупателей имеют такие права на рабочем компе) и все, приплыли. Компонента не регистрируется, админ права не дает при этом еще и покупатель со словами «Зачем мне права админа? я ж готовое решение покупал» оформляет заявку на возврат ден.средств.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *