Программист и хакер Дэвид Фифилд (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) установить новый фавикон на сайте.
Комментарии ()
Hottaby4
02.09.2015 16:54А что происходит на практике, если открывать с разных устройств? Падает браузер? Позакачивать такие аватары в разные места тоже интересно, кто попробует — отпишите, что получилось, пожалуйста
dmitryrublev
02.09.2015 18:22+1Встроенный просмотрщик картинок в OS X — завис через пару секунд после открытия картинки.
Kamikaze
02.09.2015 18:48Windows Photo Viewer:
Can't display this picture because there might not be enough memory available on your computer.
Kamikaze
02.09.2015 19:03+1Microsoft Picture Manager открывает почти мгновенно, результат: http://funkyimg.com/i/21GdC.png
На habrastorage не получилось загрузить скриншот, надеюсь это не из-за того что я и туда попробовал ее скормить, да простит меня НЛО :)
Hottaby4
02.09.2015 17:22-2Ализар, такой Ализар. Надо было сразу понять, когда zip бомба как что-то рекурсивное описывается. Сам помню делал, ноду заливал, подколоть хотел. У него правда уже тогда проверка на степень сжатия данных на bbs стояла, он только поржал. Так вот, никакой рекурсии там нет, просто куча одинаковых данных сжата.
ragequit
У меня определенного где-то zip-бомба в авторане стоит, потому что 5.5 Gb оперативы уходит непонятно куда, блджад.
pehat
s/авторан/MBR/g