LINUX.ORG.RU
ФорумTalks

Сохранение любого файла как PNG изображение

 


1

1

Написал скрипт File2PNG, сохраняющий любой файл как PNG изображение (с возможностью восстановить обратно).

Можно использовать любой хостинг картинок для хостинга произвольных файлов.

Раньше была в ходу технология rarjpeg, но с большинством распространённых хостингов картинок (по крайней мере из тех что хранят изображения годами, а не удаляют через месяц) это уже не работает, т.к. они стали вычищать мусор из изображений, даже exif удаляют. А мой вариант работает, т.к. на выходе скрипта обычное изображение без чужеродных данных.

Только надо учитывать что некоторые хостинги изображений заливаемые картинки могут уменьшить, если она превышает лимиты, в таком случае файл будет испорчен.

Deleted

Ник на гитхабе стрёмный. Если на работе качать с такого урла - уволят же.

Deleted ()

Используй mktemp для имён файлов.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Используй mktemp для имён файлов.

Спасибо, я что-то забыл про неё.

Deleted ()

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

Sadler ★★★ ()
Последнее исправление: Sadler (всего исправлений: 2)
Ответ на: комментарий от Sadler

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

Deleted ()

Без возможности подмешать котиков безпонтово.

pon4ik ★★★★★ ()

И что, статистическими методами не отличить от обычного изображения?

cvs-255 ★★★★★ ()
Ответ на: комментарий от Deleted

Это не для стеганографии, там и steghide ок, в данном случае смысл как раз чтобы использовать хостинги картинок для файлообмена

А зачем тогда тэг стеганография? Тогда не так безпонтово конечно...

pon4ik ★★★★★ ()
Ответ на: комментарий от Deleted

Только в какой тред на лоре давности пару лет не зайдешь, большинство ссылок на изображения уже нерабочие

cvs-255 ★★★★★ ()

Без стеганографии ненужно.

peregrine ★★★★★ ()
Ответ на: комментарий от Sadler

Нельзя. Чтобы была хоть какая-то стеганография, надо писать только в младшие биты пикселя, а чтобы было-более менее применимо данные должны при этом приводиться к виду, похожему на шум.

peregrine ★★★★★ ()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от pon4ik

А зачем тогда тэг стеганография? Тогда не так безпонтово конечно...

Ну как не очень серьёзный вид стеганографии тоже сойдёт. Я как-то пробовал утилиту steghide, слишком уж малый объём информации оно может запихнуть относительно размера изображения-контейнера.

Deleted ()
Ответ на: комментарий от Deleted

Не сойдет, смотри мой каммент выше. И да, картинки типа твоей аватарки на взгляд очень подозрительны.

peregrine ★★★★★ ()
Ответ на: комментарий от cvs-255

Только в какой тред на лоре давности пару лет не зайдешь, большинство ссылок на изображения уже нерабочие

Потому что линуксоиды почему-то любят всякие мелкие хостинги однодневки типа http://0x0.st которые появляются и исчезают постоянно. Некогда популярный среди гиков omploader помнит кто нибудь? Вон, больше половина упомянутых сервисов такие.

Deleted ()
Ответ на: комментарий от peregrine

Не сойдет, смотри мой каммент выше. И да, картинки типа твоей аватарки на взгляд очень подозрительны.

Ну по хорошему да, стеганографическая картинка не должна иметь намёков на скрытое содержимое.

Deleted ()
Ответ на: комментарий от Deleted

да даже если хостинг не однодневка, то все равно половина изображений через пару лет уже не существуют

cvs-255 ★★★★★ ()
Ответ на: комментарий от cvs-255

да даже если хостинг не однодневка, то все равно половина изображений через пару лет уже не существуют

Не все, есть исключения. Могу привести примеры постов (не на лоре), где картинки сохранились через 10 лет.

Deleted ()
Ответ на: комментарий от peregrine

Нельзя.

Можно :) Стегосистемы, устойчивые к искажениям определённого рода — типичная задача стеганографии.

Sadler ★★★ ()
Ответ на: комментарий от peregrine

Совершенно согласен.

Притом для защиты от перезжатия, инфы должно быть многократно меньше чем объём изображения. Так работают ватермарки накладывающие лицензию на изображения применяемые в Photoshop.

Serg_HIS ()
Ответ на: комментарий от Deleted

Ну по хорошему

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

Serg_HIS ()
Ответ на: комментарий от Serg_HIS

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

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

Deleted ()
Ответ на: комментарий от Deleted

Если ты применишь из 8 бит на цвет по 2 для инфы в ПНГ, то будет только один к 4 и это будет с вполне адекватным изображением котика с небольшими шумами.

Serg_HIS ()
Ответ на: комментарий от Deleted

Зная раскладку с РГБ которая сделана для человеческого глаза могу предложить усугубить немного качество но остаточно хорошо поднять ёмкость изображения:

в зелёном цвете только 2 последних бита, в красном 3, а в синем 4. Итого - прирост ёмкости в полтора раза.

Serg_HIS ()
Ответ на: комментарий от Serg_HIS

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

Deleted ()
Ответ на: комментарий от Deleted

Я даже писал свой ватермарк для одной фирмы за деньги.

И да, это обычно не для передачи кучи инфы, а для встраивания печати собственника в изображение.

Serg_HIS ()
Ответ на: комментарий от Serg_HIS

И да, это обычно не для передачи кучи инфы, а для встраивания печати собственника в изображение.

А, ну это да, хорошая вещь.

Deleted ()
Ответ на: комментарий от Sadler

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

peregrine ★★★★★ ()
Ответ на: комментарий от Serg_HIS

С PNG и котиками другая проблема - фотки редко кто в PNG делает, а если и делает, то там матрица на фотиках очень хорошая, как правило, так что шумов не так много. Вот в JPEG пихать инфу хорошо, но проблема в том, что encoder JPEG придется переписывать, при том так, чтобы он себя не выдавал и косил под какой-то распространенный.

peregrine ★★★★★ ()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от Deleted

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

peregrine ★★★★★ ()
Ответ на: комментарий от peregrine

В JPEG можно засунуть, но просто в сотни раз меньше чем объём файла. И даже сделать с защитой от масштабирования и перезжатия.

Но инфы можно засунуть крохи. И да визуально шумы видны.

Serg_HIS ()
Ответ на: комментарий от Serg_HIS

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

peregrine ★★★★★ ()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от peregrine

В принципе стенографируют и изображения и видео и аудио уже лет более чем 25 наверное. Но обычно это цифровые подписи авторов.

Serg_HIS ()
Ответ на: комментарий от peregrine

к стати обычно при пережатии видео ключевые кадры меняются.

Serg_HIS ()
Ответ на: комментарий от Sadler

File2QRCode

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

QR Code. Не благодари.

atsym ★★★★★ ()
Последнее исправление: atsym (всего исправлений: 1)
Ответ на: File2QRCode от atsym

pyroman, а можешь сделать «File2QRCode.sh» без зависимостей?

atsym ★★★★★ ()
Последнее исправление: atsym (всего исправлений: 1)
Ответ на: комментарий от atsym

Идею я понял и знаю, что внутри можно сделать не информативную зону, но по ссылке - это не QR.

Serg_HIS ()
Ответ на: комментарий от atsym

а можешь сделать «File2QRCode.sh» без зависимостей?

А зачем? QR очень неэффективен в плане размера. И почему так принципиально «без зависимостей»? А вообще можно просто cat file | base64 | qrencode.

Deleted ()
Ответ на: комментарий от Deleted

Ты забыл туда gzip или bzip добавить для уменьшения размера qr-кода.

Quasar ★★★★★ ()
Ответ на: комментарий от Quasar

Ты забыл туда gzip или bzip добавить для уменьшения размера qr-кода.

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

Deleted ()
Ответ на: комментарий от Deleted

Ну используй хотябы 2 старших бита для изображения котиков.

Потеря всего 25 процентов но гламурно :)

Serg_HIS ()

сходил к стати по ссылке всётаки сегодня, почитал доку.

Пару вопросов:

1. Имя и расширение файла не вливаешь в картинку?

2. ImageMagick не умеет png32 (с альфа каналом)?

Serg_HIS ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.