Защита конфигурации 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 не будет опубликован. Обязательные поля помечены *