Воспоминания о детстве: зип-бомбы

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

Более подробно (на случай, если вы не знаете, что это такое) можно прочитать в Википедии. Упрощенно — это архив, который открывает сам себя. Я же решил показать более простой пример бомбы — файл, состоящий из нулей, и сжатый до весьма скромных архивов, для чего
использовал Python:

start_value = 1
while start_value <= 120000:
with open('logic.txt', 'a', encoding='utf-8') as f:
f.write('                                                                                                    '
'                                                                                                    '
'                                                                                                    '
'                                                                                                    '
'                                                                                                    '
'                                                                                                    '
'                                                                                                    '
'                                                                                                    '
'                                                                                                    '
'                                                                                                    '
'                                                                                                    '
'                                                                                                    '
'                                                                                                    '
'                                                                                                    ')
print('Сделали проход:', start_value)
start_value = start_value + 1

Собственно - логика весьма проста: пишем пробелы в файл. Пишем... и еще раз пишем. И снова пишем... Пока не достигнем отметки в запланированные 120000 проходов. В этом случае размер исходного файла составит ровно 168 мегабайт. А если мы заархивируем его с помощью архиватора 7-zip в ультра-режиме - получим файлик размером в 197 килобайт 🙂

Что делать с полученным файлом - решать вам. Увалить Яндекс как это было возможно когда-то давно - уже нельзя. Вычислительный центр в родной Академии - тоже... Разве что отправить кому-то на почту с просьбой развернуть отчетность и ждать, пока у несчастного закончится вся память (не удержался, отправил архив дочке на почту) 🙂

И да, знаю - можно было бы использовать старую верную командную строку:
Fsutil file createnew c:\text.txt n - где n - размер нужного вам файла, но нам нужен Python 🙂

Кстати, если вам совсем скучно - попробуйте развернуть этот архив? Всего-лишь 42 килобайта же... 😉

Support the Blog!

Running a blog takes a lot of effort, time, and passion. Your donations help improve the content, inspire new ideas, and keep the project going.
If you’ve enjoyed the blog’s materials, any support would mean the world to me. Thank you for being here! ❤️

PayPal Logo Donate via PayPal

Revolut Logo Donate via Revolut