2013-10-10 8 views
5

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

$img_name = "myimage.jpeg"; 
$orig_contents = file_get_contents($img_name); 
$msg = "My secret."; 

$fp = fopen($img_name, "wb"); 
fwrite($fp, $orig_contents . $msg); 
fclose($fp); 

Мне любопытно: сколько информации можно скрыть внутри фотографий с помощью этого метода? Например, можно ли вставлять главы романа в файл изображения? Я добавил довольно большие блоки текста без искажения изображения, но мне интересно, устанавливают ли ограничения на PHP или приложения для просмотра изображений.

(P.S. Я знаю, что этот тип стеганографии является небезопасным, я просто делаю это для удовольствия.)

+0

какой странный предмет ...! –

+0

звучит как-то, что вы могли бы просто проверить себя –

+0

Ха-ха. Давай, чувак. Это очень удобно для обмена сообщениями между друзьями. :) Если у кого-то есть конструктивные предложения, я был бы очень признателен. – hawkharris

ответ

7

Вы должны взглянуть на Steganography. И имейте в виду, что вы не скрываете свои данные на изображении. Любой, кто мог бы открыть изображение с помощью текстового редактора, увидит ваш текст где-нибудь в файле (в этом случае, в конце концов, что намного хуже). Если бы я тебя, я бы сделал следующее:

  1. Шифрование данных с некоторыми decent Algorithm и сильный ключ
  2. Создать функцию, которая распределяет данные через файл в псевдо -Random так, чтобы кто-нибудь заметил, что вы пытаетесь вложить в него что-то секретное (помните, что вам нужно его восстановить позже). В обычном растровом изображении вы можете использовать последний бит каждого пикселя для сохранения вашей информации, поскольку это изменение, сделанное им, не будет восприниматься человеческим глазом, если вы сравните исходное изображение с тем, у которого есть скрытые данные.
  3. Молитесь NSA не читает это, в противном случае вы можете получить серьезные проблемы :)
+1

Как член АНБ - слишком поздно. –

+0

+1 для третьей точки. –

0

Я думаю, что это не самый безопасный способ сделать это, если вы действительно хотите, чтобы скрыть строку в изображение, вы, вероятно, будете использовать определенный шаблон для изменения пикселя каждые 10 пикселей, идея проста конвертировать ваше изображение в массив целых чисел, цикл через массив и каждые 10 пикселей изменить значение на ascii character.

Изменение 1 каждый 10 пикселей не будет создавать много шума.

Чтобы сделать его более безопасным, используйте кодировку, поэтому используйте свою собственную карту для кодирования ascii, например, @fvdalcin.

4

Нет, ограничение по PHP или JPEG format ограничено тем, сколько данных вы сможете добавить к изображению, используя этот метод. Это работает, потому что формат JPEG сохраняет все данные изображения в начале файла до некоторого маркера. Например, после маркера любые данные считаются чем-то вроде миниатюры.

Один cool trick (который также работает с изображениями GIF) заключается в том, что вы можете добавить ZIP-файл в конец изображения, и файл работает как как JPEG, так и ZIP-файл. Он будет доступен для чтения как программами обработки изображений, так и программами ZIP, просто изменив расширение файла.