Как сделать логическую бомбу

Обновлено: 02.07.2024

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

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

Цитата со страницы Википедии:

Одним из примеров Zip-бомбы является файл 45.1.zip, содержащий 45,1 килобайт сжатых данных, содержащий девять слои вложенных zip-файлов в наборах 10, каждый нижний слой архива содержащий файл размером 1,30 ГБ для всего 1,30 эксабайта несжатого данные.

Итак, все, что вам нужно, это один файл размером 1,3 ГБ, полный нулей, сжать его в ZIP-файл, сделать 10 копий, упаковать их в ZIP-файл и повторить этот процесс 9 раз.

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

Создайте файл нулей размером 1,3 эксабайта.

В Linux это легко сделать с помощью следующей команды:

dd if=/dev/zero bs=1024 count=10000 | zip zipbomb.zip -

Замените count на количество КБ, которое вы хотите сжать. В приведенном выше примере создается zip-бомба размером 10 МБ (совсем не бомба, но он показывает процесс).

Вам НЕ нужно место на жестком диске для хранения всех несжатых данных.

Ниже для Windows:

Из подтверждения концепции безопасности (NSFW!), Это ZIP файл с 16 папками, в каждой по 16 папок, что выглядит следующим образом (42 - это имя zip-файла):

\ 42 \ lib 0 \ book 0 \ chapter 0 \ doc 0 \ 0.dll
.
\ 42 \ lib F \ book F \ chapter F \ doc F \ 0.dll

Я, вероятно, ошибаюсь с этой цифрой, но она дает 4 ^ 16 (4294967296) каталогов. Поскольку каждому каталогу требуется место в N байтов, он оказывается огромным. Файл dll в конце имеет размер 0 байт.

При распаковке только первого каталога \42\lib 0\book 0\chapter 0\doc 0\0.dll выделяется 4 ГБ дискового пространства.

(Очень в основном) Сжатие основано на обнаружении повторяющихся шаблонов, поэтому zip-файл будет содержать данные, представляющие что-то вроде

Очень короткий zip-файл, но огромный при его расширении.

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

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

DEFLATE, единственный широко поддерживаемый метод сжатия для zip-файлов *, имеет максимальный коэффициент сжатия 1032. Этого можно достичь асимптотически для любой повторяющейся последовательности размером 1-3 байта. Независимо от того, что вы делаете с zip-файлом, если он использует только DEFLATE, распакованный размер будет не более чем в 1032 раз больше размера исходного zip-файла.

Следовательно, необходимо использовать вложенные zip-файлы для достижения действительно невероятных степеней сжатия. Если у вас 2 уровня сжатия, максимальное соотношение станет 1032 ^ 2 = 1065024. Для 3 это 1099104768 и так далее. Для 5 слоев, используемых в 42.zip, теоретическая максимальная степень сжатия составляет 1170572956434432. Как видите, фактический 42.zip далек от этого уровня. Частично это накладные расходы на формат zip, а частично - то, что им было все равно.

Если бы мне пришлось угадывать, я бы сказал, что 42.zip был сформирован путем простого создания большого пустого файла и его многократного архивирования и копирования. Нет никаких попыток раздвинуть границы формата или максимизировать сжатие или что-то еще - они просто произвольно выбрали 16 копий на слой. Суть заключалась в том, чтобы без особых усилий создать большую полезную нагрузку.

Примечание. Другие форматы сжатия, такие как bzip2, предлагают гораздо большие максимальные степени сжатия. Однако большинство парсеров zip их не принимают.

P.S. Можно создать zip-файл, который будет распаковываться в свою копию (quine). Вы также можете сделать тот, который распаковывается на несколько копий самого себя. Следовательно, если вы рекурсивно разархивируете файл навсегда, максимально возможный размер будет бесконечным. Единственное ограничение - он может увеличиваться максимум на 1032 на каждой итерации.

P.P.S. Цифра 1032 предполагает, что данные файла в zip-архиве не пересекаются. Одна из особенностей формата zip-файла заключается в том, что он имеет центральный каталог, в котором перечислены файлы в архиве и смещены данные файла. Если вы создаете несколько файловых записей, указывающих на одни и те же данные, вы можете добиться гораздо более высоких степеней сжатия даже без вложенности, но такой zip-файл, скорее всего, будет отклонен синтаксическими анализаторами.

Хороший способ создать zipbomb (или gzbomb) - это знать двоичный формат, на который вы нацеливаетесь. В противном случае, даже если вы используете потоковый файл (например, используя /dev/zero ), вы все равно будете ограничены вычислительной мощностью, необходимой для сжатия потока.

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

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

Для реализации Python проверьте this.

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

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

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

Недавние (после 1995 года) алгоритмы сжатия, такие как bz2, lzma (7-zip) и rar, дают впечатляющее сжатие монотонных файлов, и одного уровня сжатия достаточно, чтобы обернуть негабаритный контент до управляемого размера.

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

Пробовал. Размер выходного zip-файла был небольшим файлом размером 84 КБ.

Шаги, которые я сделал до сих пор:

  1. создайте файл .txt размером 1,4 ГБ, заполненный "0"
  2. сжать его.
  3. переименуйте .zip в .txt, затем сделайте 16 копий
  4. сжать все это в файл .zip,
  5. переименуйте переименованные файлы .txt внутри файла .zip в .zip снова
  6. повторите шаги с 3 по 5 восемь раз.
  7. Наслаждаться :)

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

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

Нет необходимости использовать вложенные файлы, вы можете воспользоваться форматом zip для наложения данных.

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

Логическая бомба — это программа или ее отдельные модули, которые при определенных условиях выполняют вредоносные действия.

Пояснение

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

Пример использования

После внедрения на компьютер логическая бомба может никак себя не проявлять в течение длительного времени. Как правило, логические бомбы начинают свое вредоносное действие тогда, когда это может привести к максимальному ущербу для компьютерной системы.

Три образцовых НФ-головоломки австралийского писателя.

Я думаю, в моих романах граница между наукой и метафизикой сдвигается.

Внимание: в тексте присутствуют спойлеры, трансгендеры-анархисты и квантовый панк.

Роль наблюдателя в квантовой механике – одна из самых злоупотребляемых научных концепций XX века. Вместе с многострадальным котом Шрёдингера и многомировой интерпретацией она – джазовый стандарт фантастики и научпопа. Тем удивительнее видеть, как оригинально Грег Иган поворачивает тему.

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

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

(Кстати, согласно этой парадигме, математика и физика полностью совпадают. Точно такой же взгляд сегодня отстаивает Макс Тегмарк. Мультивселенная – огромная вычислительная машина. Если что-либо математически возможно, то это существует. Если в момент смерти самосогласованность сознания не нарушается, значит, оно просто меняет адрес в памяти вселенского процессора – и вычисление продолжается.)

Дарэм не сообщает Марии всех деталей своего проекта, но просит на всякий случай записать на компьютер ее собственную цифровую копию. Программистка понимает, что́ наделала, только когда находит бездыханное тело шефа. После успешного запуска симуляции он совершает самоубийство с целью оказаться в игрушечной вселенной – и доказать скептикам Теорию Пыли. Правда, только тем скептикам, кто проснется вместе с ним в виртуальной реальности.

Во второй части романа герои пробуждаются-таки в Городе Пермутаций. Мария находит Пола. Но вместо того, чтобы радоваться своему триумфу, он глубоко обеспокоен поведением системы. Искусственная жизнь, которой Мария населила виртуальный мир, вышла из-под контроля. Она эволюционировала до состояния разумных насекомых – и угрожает перевернуть все с ног на голову. Теперь уже не компьютерные насекомые едут зайцем в виртуальном мире людей, а наоборот – люди оказываются довеском к миру насекомых. Коллективный разум этих тварей превышает коллективный разум обитателей Города и начинает их стирать. Клону Марии приходится создать еще одну карманную вселенную – и скрыться в ней вместе с Дарэмом, чтобы там, уже в более спокойной обстановке, изучить законы виртуального мира.

Читал я как то рассказик про то, как робот заставил человека загадать ему загадку, если робот отгадает, то человеку будет плохо. Человек там как то хитро загадал (какое то логическое противоречие) и робот перегорел.

Задача про самолёт — это логическая бомба для человеков :) Она уже добралась до англоязычных ресурсов.

Если бы я верил в чертей, я был бы уверен, что чёрт, придумавший эту задачу, получил чертовскую нобелевскую премию :)



А для незнающих английский Ъ?



Самолет (реактивный или винтовой) стоит на взлетной полосе с подвижным покрытием (типа транспортера). Покрытие может двигаеться против направления взлета самолета. Оно имеет систему управления, которая отслеживает и подстраивает скорость движения полотна таким образом, чтобы скорость вращения колес самолета была равна скорости движения полотна. Вопрос: сможет ли самолет разбежаться по этому полотну и взлететь ?


Это тот самый мегабоян, который порвали уже сотни раз? Теперь и по английски?

Дебилов и троллей всегда хватало.

и что логически сложного?

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


ага. Он самый. Года три, не меньше)


> Это тот самый мегабоян, который порвали уже сотни раз? Теперь и по английски?

ps: а кто-то думал, что флеймеры на буржуйских форумах умнее лоровских лишь потому, шо мы тута а оне тама? щас..

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

Одно маленькое уточнение. Если хитро расположить сверхмощные винты перед крылом, то создаваемый ими поток воздуха может поднять самолёт. Только вот таких самолётов не бывает.

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


Какие три, еще пять лет назад в общаге на кухне под три семерки флеймили.


>ps: а кто-то думал, что флеймеры на буржуйских форумах умнее лоровских лишь потому

Ржу, кстати, с форума ANN, такие порой вещи проскальзывают.

А ведь на самом деле он все-таки взлетит, серьезно.
:)


Взлетит, куда денется.


>Unlike automobiles, jet engine planes doesn't rely on friction force between wheels and conveyer belt. It will start moving and take off.

собственно, дальше можно не читать

для этого он должен ничего не весить

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

Воздух увлекается движущимся полотном, поэтому самолет относительно воздуха будет двигаться и таки взлетит.

Если полотно особо хитрое и воздух не увлекает за собой, то не взлетит.

То есть, вопрос на самом деле в том, что будет происходить с воздухом?

Самолёту вообще-то по фиг что там под ним происходит, под колёсами. Отталкивается то он от воздуха, не от земли.

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

Мать вашу, самолет стоит на взлетной полосе, дует ветер. Вопрос: какого черта он не взлетает?


Аааа. Только не это.

Вот именно! Хоть у кого то мозг не в заднице.

> Мать вашу, самолет стоит на взлетной полосе, дует ветер. Вопрос: какого черта он не взлетает?

Потому что слабо дует, достаточно сильный ветер поднимет самолет в воздух. Тебя не удивляет, что ураган поднимает предметы с земли?


> Воздух увлекается движущимся полотном, поэтому самолет относительно воздуха будет двигаться и таки взлетит.

Это уже не полотно будет, а какие то гребные венты.


>для этого он должен ничего не весить

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

Вот представь, что ты стоишь на роликах под движущимся полотном и держишься за веревку (аналог воздуха для самолета) - что тебе мешает двигаться вперед?

> Это уже не полотно будет, а какие то гребные венты.

Мсье про коэффициент увлечения слышал?

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

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

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

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

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


Люди! Реактивные и винтовые двигатели создают поток воздуха!

> Какое это имеет отношение к изначальному вопросу?

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

А если самолет заменить на корову, то взлетит!, лично проверял!

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


Наибородатейший боян, а не бомба.

Ну кто тут говорил, что это уже слишком порванный баян? Вон сколько любителей порвать его еще раз собралось. Рекомендую запастись попкорном.


> Ты гуманитарий? Решение есть и оно одно.

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

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

> И есть сборище ущербных гуманитарчегов, не помимающих на каких принципах основан полет самолета

А еще есть сборище ущербных гордецов.

Чтобы самолет взлетел на него должна подействовать в вертикальном направлении какая-то сила, превосходящая силу тяжести. Это может быть или реактивная сила или подъемная сила от потока воздуха. После этой мысли видно, что условие задачи напрочь некорректное. А ты пиши уравнения, пиши Шура, они золотые :)

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

Читайте также: