gifts2017

Защита внешней обработки - прячем и шифруем макет

Опубликовал Дмитрий К (ll13) в раздел Программирование - Защита и шифрование

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

Как защитить модуль внешней обработки от "чайника" знают все - поставить на него пароль. А что делать если основную ценность обработки представляет не только модуль но и макет табличного документа содержащий множество различных секций, который Вы рисовали не одну ночь. За примером далеко ходить не надо - посмотрите на любую форму Госкомстата :)

Ну что, поехали - постановка задачи: защитить макет табличного документа внешней обработки.

1). Сохраняем наш супер-макет табличного документа в MXL-файл - МойМакет.mxl

2). Удаляем его из обработки.

3). Архивируем МойМакет.mxl с помощью архиватора в формате ZIP, ОБЯЗАТЕЛЬНО С ПАРОЛЕМ - МойСекретныйПароль, получаем файл МойМакет.zip

4). Добавляем в нашу обработку макет типа Двоичные данные, называем его ШифрованныйМакет и загружаем в него файл МойМакет.zip

5). В форме обработки:

Процедура КнопкаВыполнитьНажатие(Кнопка)
   
Печать("ШифрованныйМакет"
);
КонецПроцедуры

6). Модуль обработки:

Процедура Печать(ИмяМакета) экспорт

   
ИмяMXLфайла = "МойМакет.mxl";

   
// Извлекаем файл ZIP из макета и сохраняем во временный файл
   
ИмяВременногоФайлаZIP = ПолучитьИмяВременногоФайла("zip");
   
ДвоичныеДанные = ПолучитьМакет(ИмяМакета);
   
ДвоичныеДанные.Записать(ИмяВременногоФайлаZIP);

   
// Извлекаем из ZIP-архива MXL-файл и сохраняем его во временный файл
   
ЧтениеZIP = Новый ЧтениеZipФайла(ИмяВременногоФайлаZIP, "МойСекретныйПароль");
   
ЭлементZIPАрхива = ЧтениеZIP.Элементы.Найти(ИмяMXLфайла);
   
ЧтениеZIP.Извлечь(ЭлементZIPАрхива, КаталогВременныхФайлов(), РежимВосстановленияПутейФайловZIP.НеВосстанавливать);
   
ЧтениеZIP.Закрыть();

   
// Получаем макет табличного документа из M
XL-файла
   
Макет = Новый ТабличныйДокумент;
   
Макет.Прочитать(КаталогВременныхФайлов()+ ИмяMXLфайла);
   

    // Заметаем следы
    УдалитьФайлы(КаталогВременныхФайлов()+ИмяMXLфайла);
   
УдалитьФайлы(ИмяВременногоФайлаZIP);
   

    // Показываем результирующий табличный документ пользователю
    Табличныйдокумент = Новый ТабличныйДокумент;
   
ОбластьМакета = Макет.ПолучитьОбласть("Область1|Область2");
    Для
Счетчик1 = 1 по 10 цикл
       
Табличныйдокумент.Вывести(ОбластьМакета);
        Для
Счетчик2 = 1 по 4 цикл
           
Табличныйдокумент.Присоединить(ОбластьМакета);
        КонецЦикла;
    КонецЦикла;
   
Табличныйдокумент.Защита=Истина;
   
Табличныйдокумент.Показать
();

КонецПроцедуры

7). А теперь самое главное: ставим пароль на модуль нашей внешней обработки - МойСекретныйПароль, иначе все наши выкрутасы с шифрованием-дешифрованием - коту под хвост :)

Конечно кто-то скажет, что данную защиту можно взломать, и конечно он окажется прав, потому что взломать можно ЛЮБУЮ ЗАЩИТУ. Идеальной защиты не существует, как впрочем, и ничего идеального ...

Вроде ничего не забыл.  Пользуем, плюсуем :)

 

Источник: http://www.obrabotki.com/1s-hide-template/

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Hide_Template_1s.rar
.rar 5,68Kb
16.06.15
1
.rar 5,68Kb 1 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Сергей Ожерельев (Поручик) 12.03.10 23:01
А теперь самое главное: раскрыли модуль, увидели пароль зипованного макета, и все ваши выкрутасы с шифрованием-дешифрованием - коту псу под хвост :)
Годится для чайников, чисто как пример работы с внешними макетами и архивами.
2. Дмитрий К (ll13) 12.03.10 23:09
(1) Вы не открыли Америки, в начале статьи собственно это и написано.
Для кого псу под хвост, для кого коту под хвост http://ru.wiktionary.org/wiki/%D0%BA%D0%BE%D1%82%D1%83_%D0%BF%D0%BE%D0%B4_%D1%85%­D0%B2%D0%BE%D1%81%D1%82
3. Сергей Ожерельев (Поручик) 12.03.10 23:16
(2)
Статья нуждается в доработке.
Это незаконченная статья. Вы можете помочь проекту, исправив и дополнив её.
4. Алексей Константинов (alexk-is) 12.03.10 23:37
Тексты модулей можно раскрасить получше :)

Процедура КнопкаВыполнитьНажатие(Кнопка)
    
Печать("ШифрованныйМакет");
КонецПроцедуры
5. Дмитрий К (ll13) 12.03.10 23:47
(4) Расскажите как Вы текст раскрашиваете ?
А то я искал, так и не нашел... :(
6. Сергей Ожерельев (Поручик) 12.03.10 23:50
7. Дмитрий К (ll13) 13.03.10 00:00
8. dushelov (Душелов) 13.03.10 00:31
Эта защита от кого? От разработчика? Эту "защиту" он обойдет за 10-60 минут (в зависимости от опыта).
От пользователя - и пароля хватит.
awk; awa; Abadonna; +3 Ответить 1
9. Rusk (Rusk51) 13.03.10 22:53
(8)+ А пользователю макет и даром не нужен ;)
10. Юрий Тимофеев (Tatitutu) 14.03.10 11:02
Змейка
:D посмотри как эта обработка закрыта.
Паролей нет, удали в модуле весь код и запусти, удали все и запусти - результат тот же - все работает.
День ушел , чтобы найти и понять (как это сделано и самое главное как так сделать)
11. Дмитрий К (ll13) 14.03.10 12:32
(10) Я то думал что этот фокус(внешняя обработка без текста модуля) уже все знают ))
Как так сделать знал уже давно, будет время статейку напишу.
На вскрытие ушло 30 секунд )
12. Аркадий Кучер (Abadonna) 14.03.10 13:23
(9)
А пользователю макет и даром не нужен

Знаю я пользователей, которые лихо с макетами расправляются. Особых знаний там же не нужно.
13. dushelov (Душелов) 14.03.10 23:01
(12) Таким в конфигураторе делать нечего.
14. Аркадий Кучер (Abadonna) 15.03.10 02:50
(13)
Таким в конфигураторе делать нечего.

Ну прям! Им надо дожидаться "мальчиков" из франчей?
Вот, что пишет мне одна очень продвинутая бухгалтерша:
Наталья Энерго (11:24:00 11/03/2010)
так вот именно. Ну, а кто работает в 1С-БИТ, это и так все знают. Берут людей без ничего и с улицы, (не говоря уже о том, что вчера этот мальчик просто откровенно делал все ПО БУМАЖКЕ)
;)
15. dushelov (Душелов) 15.03.10 07:51
(14) Ну молодец, что по бумажке!
16. larissa builova (larisab) 15.03.10 08:09
(14) Мы где-то уже обсуждали этот вопрос. Филиалы московского БиТа - это продажи коробок и ИТС-сервис. Платят там мало, работают одни студенты. НЕ ВСЕ франчи такие ;)
17. Аркадий Кучер (Abadonna) 15.03.10 08:10
(16) Это КРАСНОЯРСКИЙ БИТ был;)
18. larissa builova (larisab) 15.03.10 08:11
(17)
Это КРАСНОЯРСКИЙ БИТ был

Он филиал московского БиТа.
И у нас такой же ;)
19. Александр Зубцов (iov) 16.03.10 00:10
хм ....
была как-то проблема.... Ставлю прогу а она не ставится говорит что dll заменить не может...
Прога перед установкой в темп дир распаковывалась быстро так и удалялась также... Так вот помогли мне права на папочку нужные выстваить...и вуаля.... все что распаковала удалить не может... а тама dll старую поменял на новую и запустил повторно установочку...
Мысль ясна?
чем отследить файловую активность расказывать надеюсь не нужно....
А самое главное что сохранить печатную форму и сделать из него макет....
ну скажем так... Вот за публикацию потенциально "НЕБЕЗОПАСТНОГО" кода +
За то что не знал что этим на ура пользуются "-" (в любой закрытой обработке может размещаться подобная схема и внедрять в систему реальную угрозу вашим данным)
Но в целом за позитивчик "+"
20. dushelov (Душелов) 16.03.10 00:35
(19) >в любой закрытой обработке может размещаться подобная схема

Не надо открывать такие закрытие разработки. Или предварительно распаковывать их смотреть код.
21. Александр Зубцов (iov) 16.03.10 00:50
(20) Именно так ;) Но как поется в одной старой но до сих пор актуальной песне - "будь осторожен :!: ". И не все помнят это и порой случается что фирма как то резко сдала позиции конкуренту....
22. Александр Зубцов (iov) 16.03.10 00:58
Был знаком с человеком который распространил одну обработку которая хранила в себе вредную штуку (которая ждала команды хозяина с определенного ресурса) , но надо было такому случится что именно в этой вредной штуке он ошибся одной буквой c и с (и получить отклик смог а вот выполнить удаленно код уже нет). Так он распространил хорошую весчь просто так...
И это можно сказать веселая история. наверно единственная... Потому что остальные истории заканчивались не очень хорошо для невнимательных.
23. WellMaster (WellMaster) 17.03.10 13:11
(11)
"На вскрытие ушло 30 секунд )"
На вскрытие обработки без исходного модуля? Поделитесь, плз, методикой.
24. Валерий Агеев (awa) 17.03.10 15:30
(23) Найдётся всё!
Надеюсь, это не является нарушением правил))
25. bulpi bulpi (bulpi) 17.03.10 16:41
(10)
Я не понял, что Вас так поразило в обработке Змейка? Ничего особо странного я там не заметил :oops:
26. Дмитрий К (ll13) 17.03.10 16:46
(10),(25) Да, да кстати расскажите что необычного в игре змейка, может я что интересное не заметил(без шуток). Сейчас как раз во внутренностях epf копаюсь.
27. bulpi bulpi (bulpi) 17.03.10 18:08
(26)
Можно ли назвать необычным кольцевую ссылку на форму в модуле, благодаря которой форма не обновляется методом "закрыть обработку и снова открыть" ? Так это было известно еще с первых дисков ИТС по 8.0. На целый день тут никак не наскребешь :)
28. Мансур Девятияров (demanru) 19.03.10 12:59
а в ХранилищеЗначения? Можешь кидать туда всё что угодно и доставать как бинарный файл ;)
29. Дмитрий К (ll13) 19.03.10 22:11
(28) Угу, особенно во внешней обработке ...
Пример в студию !
30. Михаил (ILM) 22.04.10 21:20
Если бы обработки позволяли хранить данные внутри себя. Причем не меняя размер. Много задач можно было бы решить без единого изменения конфигурации. Одними внешними разработками ;)
31. vladal (Vladal) 11.10.11 14:11
Я вот что думаю - можно ведь этот MXL загнать в виде строки и зашифровать её штатными средствами 1С 8.

Пример:

	КартинкаВСтроке = "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAACXBIWXMAAAs6AAAL
	|OgFkf1cNAAAEbElEQVR4nJXTazSbdxzA8ZyzIZnI5Xme0IZEXDvXFE2Kuu2U­sZnV
	|pkq1xzhTXa1no0IQtyCppFPnuAalHIYVzUq0uiXIEMclmYQ8iSKKJy55vxd7­txec
	|XlE75//iOc/3eT4v/v/fH2Uy6k+y1jdV+Z3XI1LBqxHWfS0VxnX1Ox+gPkgg­hgV4
	|cSynMPJcFpZeaHUhDZtXd3l5VfH/IMSw8KRdwOcnedWSSEMgOEkiTEGBYwyB­rnTy
	|5dMNZOFE0O6mVjog+jHGLSYIbSciYqvxhFGAIIMIEogmdUqcja/S8E4EqSYH­78T7
	|pYSS67lpYSzaqVw8tgGPqwdwdURcHQCKbKhtjrBB8QFoc2VeVH4zkYHrbylX­TTxJ
	|T/RM4Pide+hH5dFwJURsOR57j4AV4gfmO46D9hDdn/2NqWG2gsxvt1ZVGyvz­Bd+F
	|lNyOeqCtyZTeim6LCm0KCW0N+bwzXLLQcxxkXFdXs5OuXyCND7aZjPo9BObd­jmEl
	|MrV6uXJNplweVSw9q5MJK6QcOTx0HLSgkBSmhAnvXH65PLcPNXJvJAfbzMvF­Owi8
	|g2hNRv3iiwl4TbH/fCT013CHICtOJm7eQ+B9SPq46adYL+mAaA/RHfrLIdDW­qqq/
	|uayuKBVWSl+9XNMqagtTehuK3p/pIyG9crTsh6iOqmzjyut529lYGuwQ3suO­183J
	|tg2aN9O70N6WDh5//ojDFkRHJtAtWYGe4nzOguTxq9TNzroZSGX5e1YGh3dn­ZO6n
	|9yBEpxQ/El2MLfN2+9naLu6MxfeniSxzuwpnxkgFf7a3qyEspt8zLN/d9pob­Jg0H
	|ZXxMLnXwHeHxjavqt6DlSWklPViezm669M21j0gJAC6BQChA23Mt7AsAl2Ky­Ryvg
	|aYhO5bm6JwL4BACfh6Zy0fYc6MwI/+6+dQB1pWU8DI//d9ukFbU30wMqHNxK­Qdd2
	|oler1ad5aEqOGVlMjzS0/loTFMohudx39BDb+HRYueWhKZVeQfL6+m2DBmUy­6rWj
	|z6r8wyfy+P9olpHkXK17hNo7cooSpITO9wFepRhathm56+KV3YnZmfCkSffP­NM6h
	|SuuDxLaidSWnr0yPoXbWF8fqa8sd/br9ouDYW/pTQTB4XgcFwETmNOjXA3rz­MQ7Z
	|Zqdrnfz/jrkBQ/46KED7RmJhKI0RsUt/SFA764ujNTU8V6YQ6/yU5DsPMhYB­xhLA
	|nAMZQ6BvF+BdhqaxzG2FWKdxwPeQZGHX/NWVFwoZyoToVL/31QR/WYShthHc­JZCv
	|FPR9DvqIQXofdLYJ71ZgTskxt/3F0mkQ8jk0DZdwD/bIuKqW3a8utvOq+ITW­THDv
	|Ael90NlekN5G8OBiaLnmtmwMhYuxPzTxXRha6fDrU9vd1Ipz8kup3sUYqgDr­VIV1
	|Flo6FllQctGUu67Mlq8Tj0ryhvrdjaW3Jnt3UztWV9v4RRzfhZmPtc8xI5eQ­PR5c
	|ujrT3bm9rjkq7W4ecfs3lmbmB36b7myfam1RD4uRZdVJksmo/w8QKxDHSNf5­ZQAA
	|AABJRU5ErkJggg==";
	КартинкаВДвоичныхДанных = Base64Значение(КартинкаВСтроке);
	Картинки.Вставить("Бонус1",Новый Картинка(КартинкаВДвоичныхДанных));
...Показать Скрыть
32. Юрий Осипов (yuraos) 20.01.13 17:15
Вопрос знатокам:
А как бы исшо для пусчей важности "защитить" модули форм???
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа