Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.01.2011, 02:37
YBS YBS вне форума
Новичок на форуме
Отправить личное сообщение для YBS Посмотреть профиль Найти все сообщения от YBS
 
Регистрация: 21.01.2011
Сообщений: 6

Можно ли на основе HEX-кода изображения вывести саму картинку на странице?
Друзья, я решаю очень специфическую проблему. Хочу создать защиту изображения, путем пересылки HEX-кода (16-ти битный) клиенту, чтобы сам клиент потом обработал код и его машина выводила на экран изображение.

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

Допустим, есть очень маленькая часть картинки в 302 байта (иконка закрытия). Его код заносим в переменную, например str, она может быть массивом или просто текстовой переменной. Браузер ИЕ, кросбраузерность не нужна, сервер локальный, оптимизация под поисковые роботы и другие виды хорошего тона web-дизайнерского искуства тоже не принципиальна.

Вопросов три, покрайней мере пока

1. Возможно ли это сделать в JavaScript и AJAX или они могут делать только сравненительные операции с бинарными данными?
2. Нужны ли специфические заголовки в подобном случае? Ну скажем, явно указывать тип графического файла.
3. Я знаю, что существует достаточно хорошо описанный вариант с php, когда из базы данных идет отдача подобного кода. Кто знает в каком виде принимает браузер данные с сервера в этом случае? Двоичный код, 16-ти битный или еще какой-то.

Код даже 302-ух байтного файла достаточно большой, плюс вариантов представления кода много, как минимум два, поэтому выложу код только 16-ти битный, с которым и планировал работать, так как я точно знаю, что данный вид записи прекрасно перекодируется в картинку через HEX-редактор.

Жду с нетерпением любых советов и ответов, буду рад даже просто направлению в каком надо искать. Хотя боюсь уже знаю куда отправите

16-битный код, тот который желательно обрабатывать:

89504E470D0A1A0A0000000D49484452000000080000000908 020000008031FA790000001974455874536F66747761726500 41646F626520496D616765526561647971C9653C000000D049 44415478DA2CCC4D4A03411005E0EAEA9ACC107F82A08B4004 51113711BC834BD701D11B44D7B9468EE0E1DCC8383092F4F4 74754D9513101EDFE23D780E5E1BD4E49C33333500333077F0 EB5B74AC74E4B0FC67503AFDDC346DCD2919330E0292553238 235E5CD1E575B5FBF98DB1CA826CC241268013F25692FAB21A BFA948D3286581E6B1DFB5D6EF23779E2DE7DE9DDFB0080641 ED82AF9B692B29D4B3A7D5C5DB7A767B1F2550698391DB537F F6BC2E960F0314272FEFE6B7245D4C24C7F3BB6AF908805E47 F068F5F127C0002EDF7E07B2516E1C0000000049454E44AE42 6082

Последний раз редактировалось YBS, 22.01.2011 в 02:47.
Ответить с цитированием
  #2 (permalink)  
Старый 22.01.2011, 03:03
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

*FACEPALM*

ы никогда не можете защитить контент, отданный пользователю
Ответить с цитированием
  #3 (permalink)  
Старый 22.01.2011, 12:38
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от YBS
Хочу создать защиту изображения, путем пересылки HEX-кода (16-ти битный) клиенту, чтобы сам клиент потом обработал код и его машина выводила на экран изображение.
И всё ради чего? Ради того, чтобы вместо обычного сохранения картинки, юзер делал PrintScreen.
Ответить с цитированием
  #4 (permalink)  
Старый 22.01.2011, 13:48
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Проще уж поверх изображения накладывать прозрачную картинку как на flickr
Ответить с цитированием
  #5 (permalink)  
Старый 22.01.2011, 14:45
YBS YBS вне форума
Новичок на форуме
Отправить личное сообщение для YBS Посмотреть профиль Найти все сообщения от YBS
 
Регистрация: 21.01.2011
Сообщений: 6

Сообщение от Gvozd Посмотреть сообщение
*FACEPALM*

ы никогда не можете защитить контент, отданный пользователю
Согласен, есть как минимум два способа украсть даже оттуда где програмно запрещено копирование.

1. Фотоаппарат на штативе.
2. Запись сигнала с видаео карты другим компом.

Но можно им небольшие гадости устроить, например, полупрозрачные картинки и непрозрачный фон. Просвеченные более светлые зоны полупрозрачных рисунков будут пропускать часть фона. Очищать фон в таких местах очень долго прийдется, стегонографические цифровые водяные знаки тоже попортят нервы. Ну это чисто примеры.
Ответить с цитированием
  #6 (permalink)  
Старый 22.01.2011, 15:05
YBS YBS вне форума
Новичок на форуме
Отправить личное сообщение для YBS Посмотреть профиль Найти все сообщения от YBS
 
Регистрация: 21.01.2011
Сообщений: 6

Сообщение от Kolyaj Посмотреть сообщение
И всё ради чего? Ради того, чтобы вместо обычного сохранения картинки, юзер делал PrintScreen.
Ну тут Ваш вопрос уместен. Я не уточнил где это будет реализовываться. Это будет использовано в EXE-книгах. Как известно они в основном реализованы на IE движке и используют технологию верстки HTM. Они являются компилированными, это очень сильно задержит выдерание изображений, так как, "вытащив" программу, Вы получите только машинный код и очень сложно будет понять где какая картинка начинается и где она заканчивается. Таким образом обычных не искушенных пользователей это отпугнет хотя бы сложностью процесса.

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

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

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

Надеюсь я пояснил.
Ответить с цитированием
  #7 (permalink)  
Старый 22.01.2011, 15:08
YBS YBS вне форума
Новичок на форуме
Отправить личное сообщение для YBS Посмотреть профиль Найти все сообщения от YBS
 
Регистрация: 21.01.2011
Сообщений: 6

Сообщение от monolithed Посмотреть сообщение
Проще уж поверх изображения накладывать прозрачную картинку как на flickr
Это чисто цифровой стего-код, ну впринципе выход, но хотелось бы защищать изображение, чтобы оно "как есть" (в истинном виде) не попало злоумышленикам
Ответить с цитированием
  #8 (permalink)  
Старый 22.01.2011, 15:27
YBS YBS вне форума
Новичок на форуме
Отправить личное сообщение для YBS Посмотреть профиль Найти все сообщения от YBS
 
Регистрация: 21.01.2011
Сообщений: 6

Сообщение от YBS
Можно ли на основе HEX-кода изображения вывести саму картинку на странице?
ну вобщем то я кое-что нашел в Интернете, это не такая глухая тема оказалась, как я думал.

Итак, есть метод data:url, он позволяет встраивать бинарные коды в тело самой страницы, причем, не столько методами php иди javascript, сколько напрямую из контейнера img и не только HTM, но и CSS. Ограничение 32 килобайта для ИЕ.

Не пробывал пока методом php. Боюсь, что временные файлы все испортят снова

Встретил пример, правда у меня он не пошел. Покрайней мере пока. Он больше интересен, потому что думаю у него нет ограничений на размер файлов.

window.open('data:text/html;charset=utf-8,%3C!DOCTYPE%20HTML%20PUBLIC%20%22-' +
    '%2F%2FW3C%2F%2FDTD%20HTML%204.0%2F%2FEN%22%3E%0D%0A%3Chtml%20lang%3D%22en' +
    '%22%3E%0D%0A%3Chead%3E%3Ctitle%3EEmbedded%20Window%3C%2Ftitle%3E%3C%2Fhea' +
    'd%3E%0D%0A%3Cbody%3E%3Ch1%3E42%3C%2Fh1%3E%3C%2Fbody%3E%0D%0A%3C%2Fhtml%3E' +
    '%0D%0A', '_blank', 'height=300, width=400');


И есть еще один, рабочий вариант:

str = "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iA"
+ "AAABlBMVEUAAAD///+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4Ug9C9zwz3"
+ "gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC\" width=\"16\" height=\"14\" "
+ "alt=\"Встроенное изображение\" />	";
document.writeln(str);


Но я еще спросить хотел бы, а кто-нибудь пробывал напрямую из базы данных php это делать, создаются ли временные файлы у пользователя или напрямую в страницу данные идут?

Жду и другие предложения

Последний раз редактировалось YBS, 22.01.2011 в 16:31.
Ответить с цитированием
  #9 (permalink)  
Старый 22.01.2011, 23:56
YBS YBS вне форума
Новичок на форуме
Отправить личное сообщение для YBS Посмотреть профиль Найти все сообщения от YBS
 
Регистрация: 21.01.2011
Сообщений: 6

Похоже я разобрался. Всем спасибо. Форум очень помог, на нем я нашел прекрасный сайт по бинаризации изображений, текста, ссылок

http://software.hixie.ch/utilities/cgi/data/data

Думаю тему можно закрыть.
Ответить с цитированием
  #10 (permalink)  
Старый 23.01.2011, 00:02
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от YBS
Он больше интересен, потому что думаю у него нет ограничений на размер файлов.
в IE есть, и очень маленькое
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск