Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Кодирование изображений (http://www.flasher.ru/forum/showthread.php?t=151644)

Sapfir 03.03.2011 13:22

Кодирование изображений
 
Здравствуйте!

Есть папка с изображениями: 1.png, 2.png и так далее.
Во флэшке динамически подгружаются эти изображения.

Вопрос: как мне закодировать изображения, чтобы потом на ActionScript 3 удобно бы программно раскодировать. То есть хранить в папке нечто вроде 1.abc, 2.abc, подружать и в коде снова вернуть нормальный вид.

Поискал на эту тему, не нашел. Подскажите, в каком направлении копать. Уверен есть некие готовые хорошие решения.

cleptoman 03.03.2011 13:23

а зачем? )

Sapfir 03.03.2011 13:27

Цитата:

Сообщение от cleptoman (Сообщение 977691)
а зачем? )

Есть большая база эксклюзивных png файлов, которые не должны попасть конкурентам фирмы-заказчика. В них вся суть.

Bgg 03.03.2011 13:30

Нужно будет: декомпилируют вашу swf и достанут ваш декодер. И никакой обфускатор не поможет.

Sapfir 03.03.2011 13:32

Цитата:

Сообщение от Bgg (Сообщение 977693)
Нужно будет: декомпилируют вашу swf и достанут ваш декодер. И никакой обфускатор не поможет.

Ну это то все понятно. И то, что обфускатор не 100% защита, согласен. Но, все же. Меня интересует практическое применение, а не рассуждения на тему "а все равно взломают, это ж Flash".

in4core 03.03.2011 13:48

короче грузим файл , можно вообще без расширения, потом хватаем его по байтово через байтАррай, переводим в битмапдату, затем через PNGEncoder в png( сохраняем ) или же не переводя просто создаем битмам и добавляем на сцену )) ок ?

cleptoman 03.03.2011 14:03

in4core, это чего это вы щас такое сказали?

я в том же firebuge посмотрю что флэшка тянет и скачаю себе..расширение/отсутствие оного не спасет..

то автор: если пренебреч тем процентом людей, которые расковыряют вашу флэшку и стибрят ваш алгоритм декодера, то:

самое простое решение предварительно создать флэшку енкодер и завернуть байты через XOR (предварительно спрятав ключик во флэшке..ключик посложнее выбрать (я делал на 6-10 символов)). но эти все конвертации туда сюда будут затратны.

тык

in4core 03.03.2011 14:07

Цитата:

я в том же firebuge посмотрю что флэшка тянет и скачаю себе..расширение/отсутствие оного не спасет..
Так автор же и сказал, что ему пофиг на декомпил и всякие файрбаги. Ему главное чтобы во флешку странный формат подгружался. Поэтому я так и сказал.
Цитата:

Ну это то все понятно. И то, что обфускатор не 100% защита, согласен.
Вот я к чему

cleptoman 03.03.2011 14:11

Цитата:

Ему главное чтобы во флешку странный формат подгружался
формат не меняется..вот в чем проблемма..я даже адрес типа
"http://somedomain.com/getSomething?id=1234556" возвращающий изображение скопирую в браузер и увижу картинку.

кстате еще вариант немного защититься - получать картинки динамически POST методом. от того же furebug спасет..от чего-то посерьезней нет )

Bgg 03.03.2011 14:11

Автору шифровать данные нужно, а не расширение у файла менять.

scarbo 03.03.2011 14:40

Цитата:

Есть большая база эксклюзивных png файлов, которые не должны попасть конкурентам фирмы-заказчика. В них вся суть.
Ну так может пройтись php и "водяные знаки" расставить? По центру, по диагонали. Тогда сразу будет понятно, что это ваши фотки.
Просто если фотки большие, в хорошем разрешении, то расшифровка XOR будет затратной очень.

mikhailk 03.03.2011 14:44

http://www.flasher.ru/forum/showthread.php?t=120092

Добавлено через 1 минуту
Цитата:

Ну так может пройтись php и "водяные знаки" расставить?
Кстати, да
это можно реализовать при сохранении файлов на сервер

Sapfir 03.03.2011 14:59

1. Да, менять просто расширение это не то.
2. cleptoman, спасибо, в принципе XOR - вариант.
3. Водяные знаки по заданию не приемлемы, к сожалению.
4. mikhailk, спасибо за ссылку. Как раз такая же тема.

ChuwY 03.03.2011 15:13

А как насчет того, чтобы знаки на сервере расставить, а на клиенте снять? :)

scarbo 03.03.2011 15:20

Цитата:

А как насчет того, чтобы знаки на сервере расставить, а на клиенте снять?
Вот это жесть будет. Хочу посмотреть на алгоритм

in4core 03.03.2011 15:59

Цитата:

Вот это жесть будет. Хочу посмотреть на алгоритм
Такого алгоритма не существует.
Давай те рассуждать. На сервере есть картинка , по верх нее знак. Так это уже растровое изображение. Как с него снять знак после загрузки во флеш?!... Xm есть метод, но он вас испугает - нужно досконально знать байт код, чтобы удалить часть изображения и перезаписать на новый)))) Впринципе таких людей наверное нет, кто так сможет сделать. Вариант два, если загружать картинку с водяным знаком* проверять по гетПиксель , и если картинка ОК - загружать аналогичную но без знака - так в этом варианте файрбаг вас поймает) короче спопоб нереален

ChuwY 03.03.2011 16:11

Я по большей части шучу, но уверен, что так можно сделать.

1. Формируем водяной знак.
2. Накладываем водяной знак на картинку, но так, чтобы не допускать потерь в изображении (переполнение и обнуление каналов).
3. Пересылаем на клиент помеченную картинку и маску. Которую можно зашифровать хоть 500 раз, ибо один раз при загрузке клиента шлётся.
4. Вычитаем маску с помеченной картинки.

И фантазии\вариации на эту тему.

cleptoman 03.03.2011 16:20

и вообще, всех, в итоге победит printScreen

mikhailk 03.03.2011 16:40

Цитата:

Вычитаем маску с помеченной картинки.
Так не получится.
Иначе маска как средство защиты не имела бы смысла. :)

Маска накладывается на изображение, потом изображение кодируется в жипег (гиф/пнг - не суть), потом мы восстанавливаем изображение, которое не равно изображению в начале, вычитаем маску, и получаем на месте маски шум.

Gaen 03.03.2011 16:58

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

alexcon314 03.03.2011 17:21

Оффтопом:
Когда-то давно, лет этак 300 назад, автор какого-то публичного произведения, например, научной статьи, оставлял в ее тексте этакую неприметную строчку или несколько, нисколько не влияющих на смысл текста, но опираясь на которую, можно было по известному только автору ключу доказать, что автор текста именно он и изобличить таким образом плагиатора и доказать первенство.. Ну, или что-то в этом духе. Насколько я помню, к такому способу защиты прибегали известные ученые, Ньютон, например..
Не припомню только, как этот способ назывался... анаграмма, вроде.
Принтскрин, как бы никто не отменял еще..да.

Sapfir 03.03.2011 18:35

Оффтоп:

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

mikhailk 03.03.2011 19:15

Изобретение велосипеда, нет?
Все поставщики коммерческих изображений используют водяные знаки при выкладке в открытый доступ.
Для последующего использования эти изображения уже непригодны.
По трудозатратам - в тыщу раз проще найти аналогичное изображение в открытом доступе, нежели стирать водяные знаки вот с этого конкретного изображения.

Wolsh 03.03.2011 19:38

Это мог бы быть элементарно повторяющийся рисунок, скажем логотип, или надпись "воровать нехорошо!". На изображении, которое нужно защитить - этот рисунок наносится как уменьшение значения альфа-канала. Т.е. в местах, где наносим водяной логотип - альфа у пикселей уменьшается, скажем, в два раза. Клиентский флэш знает шаблон, который привязан например к top-left. И, загрузив это изображение, восстанавливает альфу всех этих пикселей. Значения цвета при этом не изменялись, и мы получим исходное изображение, а враг скачает с сервера - порченое.

cleptoman 03.03.2011 20:41

а как будут восстанавливаться бывшие прозрачные пикселы для пнг?
для джипега - просто копируем альфаканал в 100% и вот у нас исходное изображение.
или я не понял задумки? )

alatar 03.03.2011 22:54

Цитата:

для джипега - просто копируем альфаканал в 100% и вот у нас исходное изображение.
Откуда у джипега альфаканал?

Wolsh 04.03.2011 01:51

Почему, задумку поняли. Если бы у исходных ПНГ не варьировалась прозрачность, все было бы так просто, даже шаблона бы не потребовалось - просто поднять альфу всех пикселов до 100%. Но автор упомянул, что изображения уже с прозрачностью, и это сильно осложняет дело - если уменьшать альфу в два раза, мы потеряем половину диапазона при восстановлении (все нечетные значения приведутся к четным - это же не float). И это не тру, так что не, не пойдет.
Другой вариант - воспользоваться открытостью формата, как предлагал GAIKER. Можно добавить 8-битную карту прозрачностей отдельным chunk'ом. Если уж на то пошло, "портить" картинку можно просто "лишая" ее альфа-канала, если он жизненно важен для использования изображения - просто записывать его в кастомный chunk и в клиенте оттуда копировать BitmapData::copyChannel. А скачанный с сервера файл будет просто непрозрачным на каком-нибудь резвом (красном?)) фоне. Только в принципе "починить" такое изображение не очень сложно, если понять, что с ним сделали. Вот хранение в пингах хэшей, или ключей - с этим можно поиграться.

alexcon314 04.03.2011 08:13

Цитата:

printscreen не поможет тупо стырить базу в 10.000 изображений со сложным узором и прозрачностью png.
Возражу.
Ясен перец, не кнопку тыкать же..
Если речь идет о промышленных масштабах, кражу, по принтскрину и дальнейшую обработку, либо еще как-то, тоже можно сделать промышленно, что тут такого? Тем более, если очень хочется и оно того стоит.
Для мелкого воришки и кнопки хватит.

Цитата:

Есть большая база эксклюзивных png файлов, которые не должны попасть конкурентам фирмы-заказчика. В них вся суть.
Вы что, демонстрируете всем желающим свои драгоценные базы через интернет по флешу? Или у вас таких заказчиков на такие объемы тоже мильен?
Выложить десяток-другой картинок в хорошем качестве, чтобы уровень показать. Остальные - по эксклюзивному доступу, или обычные превьюшки низкого качества. Чего огород городить, тем более с флешем? Непонятно.

Gaen 04.03.2011 08:38

Для промышленных масштабов можно и по-умному :)

1. Берем целевую флэшку, снимаем обфускацию, декомпилируем
2. Ищем код, который грузит список картинок и сами картинки, а так же расшифровывает их
3. Клепаем свою флэшку
4a. Наша флэшка вгружает целевую и получает у нее ссылки на нужные объекты
4b. Наша флэшка вгружает целевую и использует ее классы для создания нужных объектов
5. Наша флэшка получает картинки по одной, и через локальный сокет отдает их проге, которая скидывает их на винт.

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


Часовой пояс GMT +4, время: 23:09.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.