Comments 24
Это чем-нибудь отличается от LSB?
Судя по описанию в LSB в wiki, это она и есть, младший бит цвета используется для хранения информации.
LSB — это больше способ хранения информации в контейнере, алгоритмы же могут быть совсем разные, в том числе и такой простой
это же настоящая КОТрабанда!
Не робастная стеганография, к сожалению, не имеет практического применения.
После сжатия было бы не плохо еще и шифрануть.
Как уже писали ранее — это просто LSB.
Кстати, есть «атака методом сжатия» — не очень эффективное решение, но если данных внесено много, это позволяет обнаружить стеганографию (и не обязательно LSB)
Дело в том, что мы сохраняем изображение без сжатия, иначе это приведет к потере данных. В то время как исходный файл весит 307 KB, после сохранения данных получаем 759 KB. Но я, к сожалению, не вижу вариантов решения этой проблемы.Еще бы, png использует сжатие, а тут энтропия увеличилась.
Кстати, есть «атака методом сжатия» — не очень эффективное решение, но если данных внесено много, это позволяет обнаружить стеганографию (и не обязательно LSB)
А если таким же образом запихать нужную информацию в младшие биты коэффициентов DCT в JPEG, то размер файла не поменяется и выглядеть результат будет как сильнее сжатый JPEG.
В первом случае, пожалуй, стоит использовать is_writable
, вместо is_readable
, в файл же будут записываться данные.
Существующий файл только для чтения, для записи результата создается новый png файл:
И собственно все! Осталось только сохранить изображение:
imagepng($image, dirname($imagePath) . '/jailbirded_' . basename($imagePath), 0);
Мда, новое это хорошо забытое старое, еще 20 лет назад мы так в BMP-шки прятали подписи и т.п…
Не все такие олдфаги
Хех, я помню как лет 10 назад, когда ещё небо не было в облаках, а файлопомойками пользоваться не хотелось по ряду причин, так сохранялись файлы на провайдерских или популярных фото-сервисах. Ну и ещё через отсылку файлов себе на e-mail, если не требовалось расшарить файл для незнакомых людей (которым опасно доверять пароль от такого ценного мыльного сейфа)
// should it be positive if ($bit == '1') { // should be positive but is negative if ($negative) { if ($color < 255) { $color++; .....
Какой бессмысленный и беспощадный код. С ушами бы хватило:
$color = $bit ? $color | 0x1 : $color & 0xFE;
Дополнительную ясность коду также добавляет попеременное обозначение одного и того же то понятиями «odd» и «even», то «positive» и «negative»
Какая-то сферическая стеганография: мы увеличили файл в несколько раз и попросили его не сжимать.
Png — это контейнер с потоками данных, можно просто вписать в отдельный поток, и стандартными средствами разницы вообще не заметить.
Png — это контейнер с потоками данных, можно просто вписать в отдельный поток, и стандартными средствами разницы вообще не заметить.
Sign up to leave a comment.
Контрабанда «Гамлета» при помощи кота