СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

| сохранено

H Файл 420 байт разжимается в картинку PNG на 40 гигапикселей (141 ГБ ОЗУ) в черновиках

В старые времена были популярны zip-бомбы и рекурсивные архивы, которые распаковываются сами в себя. Zip-бомбу иногда можно использовать для DoS-атаки. Например, пресловутый файл 42.zip имеет размер 42 килобайта. Если начать его распаковку, то процесс будет идти до тех пор, пока набор данных не достигнет верхнего предела распаковки в 4,3 гигабайта. При этом процесс займет более 4,5 петабайт в оперативной памяти (4 503 599 626 321 920 байт).

Программист и хакер Дэвид Фифилд (David Fifield) задумался, где ещё можно применить «архивные бомбы». Сразу на ум приходит графический формат PNG, в котором используется алгоритм сжатия DEFLATE в библиотеке zlib.

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

Автор поэкспериментировал с разными вариантами и вот что у него получилось.

spark.png.bz2 (420 байт)

Сначала алгоритм DEFLATE заменяет повторяющиеся строки указателями (LZ77), при этом каждая пара бит кодирует 258 одинаковых байтов с нулями. Степень компрессии составляет 1032 к 1.

Затем за дело берётся bzip2, который сжимает длинный набор одинаковых значений в максимально компактный вид.

В архиве на 420 байт — файл PNG размером 6 132 534 байт (5,8 МБ) и изображением 225 000 × 225 000  пикселей (50,625 гигапикселей). В пиксельном буфере с тремя байтами на пиксель картинка займёт примерно 141,4 ГБ.

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

В дальнейших планах автора:

1) закачать свою аватару в формате PNG в разные онлайновые сервисы, сломав скрипты обработки изображений;

2) установить новый фавикон на сайте.

комментарии (13)

+15
+17 –2
ragequit ,  
У меня определенного где-то zip-бомба в авторане стоит, потому что 5.5 Gb оперативы уходит непонятно куда, блджад.
0
pehat ,  
s/авторан/MBR/g
0
Hottaby4 ,   * (был изменён)
А что происходит на практике, если открывать с разных устройств? Падает браузер? Позакачивать такие аватары в разные места тоже интересно, кто попробует — отпишите, что получилось, пожалуйста
+4
a553 ,  
IE, Firefox, Chrome — «в изображении ошибка», не падают. XnView — «недостаточно памяти». Windows 10 Photos App — «can't open».

Бесполезная «бомба» какая-то.
0
Grox ,  
IrfanView, Paint.NET — в изображении ошибка.
+1
dmitryrublev ,  
Встроенный просмотрщик картинок в OS X — завис через пару секунд после открытия картинки.
0
Kamikaze ,  
Windows Photo Viewer:
Can't display this picture because there might not be enough memory available on your computer.
+1
Kamikaze ,  
Microsoft Picture Manager открывает почти мгновенно, результат: http://funkyimg.com/i/21GdC.png
На habrastorage не получилось загрузить скриншот, надеюсь это не из-за того что я и туда попробовал ее скормить, да простит меня НЛО :)
–2
+1 –3
Hottaby4 ,  
Ализар, такой Ализар. Надо было сразу понять, когда zip бомба как что-то рекурсивное описывается. Сам помню делал, ноду заливал, подколоть хотел. У него правда уже тогда проверка на степень сжатия данных на bbs стояла, он только поржал. Так вот, никакой рекурсии там нет, просто куча одинаковых данных сжата.
+2
Stalker_RED ,  
Хотите рекурсивных архивов? Их есть у нас! r.tar.gz, r.zip
+6
armagast ,   * (был изменён)
Adobe Photoshop CC 2015. Открывал долго, но открыл.
Секретное послание
Sorry, our princess is in another pixmap
+1
ncix ,  
А если такой переслать почтой? Сейчас почтовики любят копаться в архивах с целью поиска и запрета ехе-шников…
0
MaximChistov ,  
Мда, похоже кто-то ей хабр положил))