Как сделать бомбу на молнии? - PullRequest
125 голосов
/ 22 сентября 2009

Этот вопрос о бомбах на молнии, естественно, привел меня к странице Википедии по этой теме. В статье упоминается пример файла ZIP размером 45,1 КБ, который распаковывается до 1,3 эксабайт.

Какие принципы / методы будут использоваться для создания такого файла? На самом деле я не хочу этого делать, больше интересуюсь упрощенным объяснением понятий «как-дела-работает».

приписка

В статье упоминается 9 слоев zip-файлов, так что это не простой случай архивирования группы нулей. Почему 9, почему 10 файлов в каждом?

Ответы [ 14 ]

2 голосов
/ 22 сентября 2009

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

Это часть теории. Практическая часть уже была отмечена другими.

2 голосов
/ 22 сентября 2009

Возможно, в unix вы могли бы направить определенное количество нулей прямо в zip-программу или что-то в этом роде? Не знаю достаточно о Unix, чтобы объяснить, как бы вы это сделали. Кроме этого вам понадобится источник нулей, и направьте их в молнию, которая читает из стандартного ввода или что-то ...

1 голос
/ 22 сентября 2009

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

0 голосов
/ 09 июня 2016

Силиконовая долина Сезон 3 Эпизод 7 привел меня сюда. Шаги для создания бомбы на молнии будут.

  1. Создайте фиктивный файл с нулями (или файлами, если вы считаете их худыми) размером (скажем, 1 ГБ).
  2. Сжать этот файл в zip-файл, скажем 1.zip.
  3. Сделайте n (скажем, 10) копий этого файла и добавьте эти 10 файлов в сжатый архив (скажем, 2.zip).
  4. Повторите шаг 3 k количество раз.
  5. Вы получите бомбу на молнии.

Для реализации на Python отметьте this .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...