Просмотр полной версии : Кодирование изображений
Здравствуйте!
Есть папка с изображениями: 1.png, 2.png и так далее.
Во флэшке динамически подгружаются эти изображения.
Вопрос: как мне закодировать изображения, чтобы потом на ActionScript 3 удобно бы программно раскодировать. То есть хранить в папке нечто вроде 1.abc, 2.abc, подружать и в коде снова вернуть нормальный вид.
Поискал на эту тему, не нашел. Подскажите, в каком направлении копать. Уверен есть некие готовые хорошие решения.
cleptoman
03.03.2011, 13:23
а зачем? )
а зачем? )
Есть большая база эксклюзивных png файлов, которые не должны попасть конкурентам фирмы-заказчика. В них вся суть.
Нужно будет: декомпилируют вашу swf и достанут ваш декодер. И никакой обфускатор не поможет.
Нужно будет: декомпилируют вашу swf и достанут ваш декодер. И никакой обфускатор не поможет.
Ну это то все понятно. И то, что обфускатор не 100% защита, согласен. Но, все же. Меня интересует практическое применение, а не рассуждения на тему "а все равно взломают, это ж Flash".
короче грузим файл , можно вообще без расширения, потом хватаем его по байтово через байтАррай, переводим в битмапдату, затем через PNGEncoder в png( сохраняем ) или же не переводя просто создаем битмам и добавляем на сцену )) ок ?
cleptoman
03.03.2011, 14:03
in4core, это чего это вы щас такое сказали?
я в том же firebuge посмотрю что флэшка тянет и скачаю себе..расширение/отсутствие оного не спасет..
то автор: если пренебреч тем процентом людей, которые расковыряют вашу флэшку и стибрят ваш алгоритм декодера, то:
самое простое решение предварительно создать флэшку енкодер и завернуть байты через XOR (предварительно спрятав ключик во флэшке..ключик посложнее выбрать (я делал на 6-10 символов)). но эти все конвертации туда сюда будут затратны.
тык (http://www.google.ru/#hl=ru&xhr=t&q=XOR+encoding&cp=12&pf=p&sclient=psy&newwindow=1&aq=f&aqi=&aql=&oq=XOR+encoding&pbx=1&fp=2f1fc1a211848440)
я в том же firebuge посмотрю что флэшка тянет и скачаю себе..расширение/отсутствие оного не спасет.. Так автор же и сказал, что ему пофиг на декомпил и всякие файрбаги. Ему главное чтобы во флешку странный формат подгружался. Поэтому я так и сказал.
Ну это то все понятно. И то, что обфускатор не 100% защита, согласен. Вот я к чему
cleptoman
03.03.2011, 14:11
Ему главное чтобы во флешку странный формат подгружался
формат не меняется..вот в чем проблемма..я даже адрес типа
"http://somedomain.com/getSomething?id=1234556" возвращающий изображение скопирую в браузер и увижу картинку.
кстате еще вариант немного защититься - получать картинки динамически POST методом. от того же furebug спасет..от чего-то посерьезней нет )
Автору шифровать данные нужно, а не расширение у файла менять.
Есть большая база эксклюзивных png файлов, которые не должны попасть конкурентам фирмы-заказчика. В них вся суть.
Ну так может пройтись php и "водяные знаки" расставить? По центру, по диагонали. Тогда сразу будет понятно, что это ваши фотки.
Просто если фотки большие, в хорошем разрешении, то расшифровка XOR будет затратной очень.
mikhailk
03.03.2011, 14:44
http://www.flasher.ru/forum/showthread.php?t=120092
Добавлено через 1 минуту
Ну так может пройтись php и "водяные знаки" расставить?
Кстати, да
это можно реализовать при сохранении файлов на сервер
1. Да, менять просто расширение это не то.
2. cleptoman, спасибо, в принципе XOR - вариант.
3. Водяные знаки по заданию не приемлемы, к сожалению.
4. mikhailk, спасибо за ссылку. Как раз такая же тема.
А как насчет того, чтобы знаки на сервере расставить, а на клиенте снять? :)
А как насчет того, чтобы знаки на сервере расставить, а на клиенте снять?
Вот это жесть будет. Хочу посмотреть на алгоритм
Вот это жесть будет. Хочу посмотреть на алгоритм Такого алгоритма не существует.
Давай те рассуждать. На сервере есть картинка , по верх нее знак. Так это уже растровое изображение. Как с него снять знак после загрузки во флеш?!... Xm есть метод, но он вас испугает - нужно досконально знать байт код, чтобы удалить часть изображения и перезаписать на новый)))) Впринципе таких людей наверное нет, кто так сможет сделать. Вариант два, если загружать картинку с водяным знаком* проверять по гетПиксель , и если картинка ОК - загружать аналогичную но без знака - так в этом варианте файрбаг вас поймает) короче спопоб нереален
Я по большей части шучу, но уверен, что так можно сделать.
1. Формируем водяной знак.
2. Накладываем водяной знак на картинку, но так, чтобы не допускать потерь в изображении (переполнение и обнуление каналов).
3. Пересылаем на клиент помеченную картинку и маску. Которую можно зашифровать хоть 500 раз, ибо один раз при загрузке клиента шлётся.
4. Вычитаем маску с помеченной картинки.
И фантазии\вариации на эту тему.
cleptoman
03.03.2011, 16:20
и вообще, всех, в итоге победит printScreen
mikhailk
03.03.2011, 16:40
Вычитаем маску с помеченной картинки.
Так не получится.
Иначе маска как средство защиты не имела бы смысла. :)
Маска накладывается на изображение, потом изображение кодируется в жипег (гиф/пнг - не суть), потом мы восстанавливаем изображение, которое не равно изображению в начале, вычитаем маску, и получаем на месте маски шум.
Фантазии становятся гораздо эротичнее при мысли о том, что форматы изображений позволяют цеплять к ним любые данные, которые игнорируются софтом для просмотра изображений.
Т.е. можно сгенерировать для каждой картинки уникальный ключ, который используется в качестве параметра для хитромудрого обратимого фильтра (наложение водяного знака, например), через который пропускается картинка, и к ней же прицепить этот ключ. Соответственно клиент достает этот ключ и использует его для возвращения картинки в первозданный вид.
alexcon314
03.03.2011, 17:21
Оффтопом:
Когда-то давно, лет этак 300 назад, автор какого-то публичного произведения, например, научной статьи, оставлял в ее тексте этакую неприметную строчку или несколько, нисколько не влияющих на смысл текста, но опираясь на которую, можно было по известному только автору ключу доказать, что автор текста именно он и изобличить таким образом плагиатора и доказать первенство.. Ну, или что-то в этом духе. Насколько я помню, к такому способу защиты прибегали известные ученые, Ньютон, например..
Не припомню только, как этот способ назывался... анаграмма, вроде.
Принтскрин, как бы никто не отменял еще..да.
Оффтоп:
printscreen не поможет тупо стырить базу в 10.000 изображений со сложным узором и прозрачностью png. Тут еще понадобится большая работа дизайнера, который стоит денег.
mikhailk
03.03.2011, 19:15
Изобретение велосипеда, нет?
Все поставщики коммерческих изображений используют водяные знаки при выкладке в открытый доступ.
Для последующего использования эти изображения уже непригодны.
По трудозатратам - в тыщу раз проще найти аналогичное изображение в открытом доступе, нежели стирать водяные знаки вот с этого конкретного изображения.
Это мог бы быть элементарно повторяющийся рисунок, скажем логотип, или надпись "воровать нехорошо!". На изображении, которое нужно защитить - этот рисунок наносится как уменьшение значения альфа-канала. Т.е. в местах, где наносим водяной логотип - альфа у пикселей уменьшается, скажем, в два раза. Клиентский флэш знает шаблон, который привязан например к top-left. И, загрузив это изображение, восстанавливает альфу всех этих пикселей. Значения цвета при этом не изменялись, и мы получим исходное изображение, а враг скачает с сервера - порченое.
cleptoman
03.03.2011, 20:41
а как будут восстанавливаться бывшие прозрачные пикселы для пнг?
для джипега - просто копируем альфаканал в 100% и вот у нас исходное изображение.
или я не понял задумки? )
для джипега - просто копируем альфаканал в 100% и вот у нас исходное изображение.
Откуда у джипега альфаканал?
Почему, задумку поняли. Если бы у исходных ПНГ не варьировалась прозрачность, все было бы так просто, даже шаблона бы не потребовалось - просто поднять альфу всех пикселов до 100%. Но автор упомянул, что изображения уже с прозрачностью, и это сильно осложняет дело - если уменьшать альфу в два раза, мы потеряем половину диапазона при восстановлении (все нечетные значения приведутся к четным - это же не float). И это не тру, так что не, не пойдет.
Другой вариант - воспользоваться открытостью формата, как предлагал GAIKER (http://flasher.ru/forum/showpost.php?p=977767&postcount=20). Можно добавить 8-битную карту прозрачностей отдельным chunk'ом. Если уж на то пошло, "портить" картинку можно просто "лишая" ее альфа-канала, если он жизненно важен для использования изображения - просто записывать его в кастомный chunk и в клиенте оттуда копировать BitmapData::copyChannel. А скачанный с сервера файл будет просто непрозрачным на каком-нибудь резвом (красном?)) фоне. Только в принципе "починить" такое изображение не очень сложно, если понять, что с ним сделали. Вот хранение в пингах хэшей, или ключей - с этим можно поиграться.
alexcon314
04.03.2011, 08:13
printscreen не поможет тупо стырить базу в 10.000 изображений со сложным узором и прозрачностью png.
Возражу.
Ясен перец, не кнопку тыкать же..
Если речь идет о промышленных масштабах, кражу, по принтскрину и дальнейшую обработку, либо еще как-то, тоже можно сделать промышленно, что тут такого? Тем более, если очень хочется и оно того стоит.
Для мелкого воришки и кнопки хватит.
Есть большая база эксклюзивных png файлов, которые не должны попасть конкурентам фирмы-заказчика. В них вся суть.
Вы что, демонстрируете всем желающим свои драгоценные базы через интернет по флешу? Или у вас таких заказчиков на такие объемы тоже мильен?
Выложить десяток-другой картинок в хорошем качестве, чтобы уровень показать. Остальные - по эксклюзивному доступу, или обычные превьюшки низкого качества. Чего огород городить, тем более с флешем? Непонятно.
Для промышленных масштабов можно и по-умному :)
1. Берем целевую флэшку, снимаем обфускацию, декомпилируем
2. Ищем код, который грузит список картинок и сами картинки, а так же расшифровывает их
3. Клепаем свою флэшку
4a. Наша флэшка вгружает целевую и получает у нее ссылки на нужные объекты
4b. Наша флэшка вгружает целевую и использует ее классы для создания нужных объектов
5. Наша флэшка получает картинки по одной, и через локальный сокет отдает их проге, которая скидывает их на винт.
Если целевая флэшка сопротивляется подгрузке, то ее можно разобрать по байтам и пропатчить инструкцию перехода в защитном коде.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.