В старые времена были популярны 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) установить новый фавикон на сайте.

Комментарии ()


  1. ragequit
    02.09.2015 16:52
    +15

    У меня определенного где-то zip-бомба в авторане стоит, потому что 5.5 Gb оперативы уходит непонятно куда, блджад.


    1. pehat
      02.09.2015 18:03

      s/авторан/MBR/g


  1. Hottaby4
    02.09.2015 16:54

    А что происходит на практике, если открывать с разных устройств? Падает браузер? Позакачивать такие аватары в разные места тоже интересно, кто попробует — отпишите, что получилось, пожалуйста


    1. a553
      02.09.2015 17:14
      +4

      IE, Firefox, Chrome — «в изображении ошибка», не падают. XnView — «недостаточно памяти». Windows 10 Photos App — «can't open».

      Бесполезная «бомба» какая-то.


      1. Grox
        02.09.2015 18:07

        IrfanView, Paint.NET — в изображении ошибка.


    1. dmitryrublev
      02.09.2015 18:22
      +1

      Встроенный просмотрщик картинок в OS X — завис через пару секунд после открытия картинки.


    1. Kamikaze
      02.09.2015 18:48

      Windows Photo Viewer:
      Can't display this picture because there might not be enough memory available on your computer.


    1. Kamikaze
      02.09.2015 19:03
      +1

      Microsoft Picture Manager открывает почти мгновенно, результат: http://funkyimg.com/i/21GdC.png
      На habrastorage не получилось загрузить скриншот, надеюсь это не из-за того что я и туда попробовал ее скормить, да простит меня НЛО :)


  1. Hottaby4
    02.09.2015 17:22
    -2

    Ализар, такой Ализар. Надо было сразу понять, когда zip бомба как что-то рекурсивное описывается. Сам помню делал, ноду заливал, подколоть хотел. У него правда уже тогда проверка на степень сжатия данных на bbs стояла, он только поржал. Так вот, никакой рекурсии там нет, просто куча одинаковых данных сжата.


    1. Stalker_RED
      02.09.2015 18:17
      +2

      Хотите рекурсивных архивов? Их есть у нас! r.tar.gz, r.zip


  1. armagast
    02.09.2015 18:53
    +6

    Adobe Photoshop CC 2015. Открывал долго, но открыл.

    Секретное послание
    Sorry, our princess is in another pixmap


  1. ncix
    02.09.2015 19:48
    +1

    А если такой переслать почтой? Сейчас почтовики любят копаться в архивах с целью поиска и запрета ехе-шников…