Сохранение файлов в конфигурации и обработках 1С: Предприятие 7.х

Программирование - Защита и шифрование

Дальнейшее решение проблемы с сохранение файлов в конфигурации и обработках 1С: Предприятие 7.х

Однажды я увидел оригинальное решение сохранения файлов в обработках 1С 7х - //infostart.ru/public/14459/

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

А после подарка Альфа //infostart.ru/public/19511/ - и вовсе наступило счастье !!!

Сравнительно недавно увидел статью //infostart.ru/public/64757/, которая несколько меня возмутила. Автор не предложил ничего своего, а просто чужое выдал на гора. Ну нельзя же так !!!

Поэтому вот решил поделится своими инструментами, ну и результатами исследования проблемы.


Вкратце о файлах:

File2BMP.exe - внедряет файл в картинку BMP.

File2BMP.rar - исходники вышестоящего

ExtForms KZK Starter.ert - моя запускалка защищенных обработок.

Test.rar - тестовая база

Protect.rar - закрытая тестовая база


Итак, продолжение…

В оригинальном решении вроде бы все было, но ... надо было помнить некую минимальную информацию, а именно: имя файла и его размер. В ходе дискуссии по решению, предлагались идеи использовать палитру картинки, как FAT (не буду подробно писать что это), благо формат BMP. вроде как, размер под палитру не ограничивает.

В ходе чтения дискуссии родилась первая идея: писать картинки в JPEG! Там в конце можно, что угодно дописывать. И первое НО… 1С картинки хранит и выдает (программно) только в BMP.   Ж:?(

Ладно … И вот поковырявшись в спецификации, новые идеи … Для простоты, картинку BMPделать24 бита, и вместо палитры (при этом в спецификации указано, что картинка идет без палитры, но место под нее можно отводить) писать свою информацию. И следующие НО … 1С отводит килобайт под палитру и режет «мусор» в ней…  Ж:?( 

Ладно, попробуем без палитры… И снова НО... 1С «коверкает» 24-х битную картинку!!! Почему она «оптимизирует» цвета, для меня осталось загадкой …

ОК. Будем пользовать палитру в 256 цветов, а информацию запишем (правда очень мало) в четвертый неиспользуемый бит … И снова НО …  1С «подчищает» неиспользуемые биты.   Ж:?(   Ну прямо нет на 1С управы …

После очередных раздумий решил оставить палитру в покое, и писать информацию в «тело» картинки (правда не без ньюансов). А вот здесь и «обманули» 1Съ !!!   Ж:?)

После исследования картинок пришел черед реализации функций. Как мне не хотелось полностью все сделать на 1С, ничего не вышло. Без VBScript не обойтись ...  Ж:?(

Во-первых, 1С затирает "нетекстовые" символы, во-вторых, не пишет длинные строки через объекты. Поэтому можете даже не экперементировать ...

Со «стандартом» формирования «тела» картинки можно ознакомиться в исходниках Delphi. Если что-то еще надо, то допишете… В исходниках 1С все функции опираются на этот «стандарт» (ну типа контроль «внедренного» файла от «настоящей» картинки).

И напоследок еще о некоторых нюансах:

1. Из конфы картинка вытягивается почему-то «корявая» (может только у меня?). В начале файла, почему-то идут 1С-ные размеры картинки (это наверно из стримов МД-шника) … Заложил этот нюанс в функции…

2. Из обработок, специально, картинки «тяну» из (через) MXL. Это дает нам большой запас гибкости и скорости.

3. Чтобы не перегружать чтением из MXL, внедряйте картинки в несколько таблиц. Еще лучше если будут "логические блоки", например таблица с DLL-ками и таблица с ERT-шками. Функция "распаковки" поддерживает смещения, и поэтому читать подряд несколько файлов получится быстрее, чем читать по-одному.

4. Помните что 1С сохраняет картинки последовательно, как их вставляли. Т.е. если вы вставили 10 картинку (файл) в ячейку 1:1, то она и будет 10, а не первой!

5. Идентификаторы картинок в MXL, надо записывать в поле «Расшифровка» в кавычках !!! Это правило убережет от всякого рода ошибок при действительном использовании MXL. Ну и конечно уникальность идентификаторов, на «Вашей» совести.


Решенные неприятности:

Мой любимый Dr.Web ругался на конфу и внешние отчеты из-за скриптов VB (идет работа с записью на диск) предупреждением "Возможно, инфицирован SCRIPT.Virus".

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


Пользуйтесь на здоровье!

И как всегда, соблюдайте одно правило: не затирайте цопирайты …  Ж:?)

 

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

Наименование Файл Версия Размер
File2BMP.exe
.exe 198,00Kb
24.10.14
64
.exe 198,00Kb 64 Скачать
ExtForms KZK Starter.ert
.ert 131,50Kb
24.10.14
25
.ert 131,50Kb 25 Скачать
File2BMP.rar
.rar 33,24Kb
24.10.14
19
.rar 33,24Kb 19 Скачать
Test.rar
.rar 346,51Kb
24.10.14
23
.rar 346,51Kb 23 Скачать
Protect.rar
.rar 451,36Kb
24.10.14
21
.rar 451,36Kb 21 Скачать

См. также

Комментарии
1. Ёпрст (Ёпрст) 1021 17.05.10 08:50 Сейчас в теме
2. script Мальчинко (script) 200 17.05.10 10:04 Сейчас в теме
Сравнительно недавно увидел статью http://infostart.ru/public/64757/, которая несколько меня возмутила. Автор не предложил ничего своего, а просто чужое выдал на гора. Ну нельзя же так !!!

Я не чужое выдрал, а придумал как объединить 2 технологии в одну и очень полезную.
Следите за выражовываниями :evil:
3. VRP SoftLibrary (VRP) 267 17.05.10 12:37 Сейчас в теме
(1) Вы уж извините, но "придумал" - это сильно сказано ...
4. VRP SoftLibrary (VRP) 267 17.05.10 12:52 Сейчас в теме
5. VRP SoftLibrary (VRP) 267 02.06.10 00:41 Сейчас в теме
Йо-о-о !!!
CheBurator молча поставил плюс !!!
:D
6. Ёпрст (Ёпрст) 1021 29.12.10 10:45 Сейчас в теме
(0) не распаковывает, если база находится на сетевом ресурсе..
7. Ёпрст (Ёпрст) 1021 29.12.10 10:46 Сейчас в теме
+6 точнее, если путь для распаковки будет начинаться с \\
8. krupp 27.10.11 13:04 Сейчас в теме
ссылка на публикацию альфа неактивна. что там было?
9. VRP SoftLibrary (VRP) 267 27.10.11 23:22 Сейчас в теме
Оставьте свое сообщение