1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
#!perl -w
use strict;
use warnings;
use IO::Compress::Gzip qw(gzip $GzipError);
=head1 NAME
gen-gzipbomb.pl - generate a thrice-encoded gzip stream that decodes to 16MB
=cut
# Create a nasty gzip stream:
my $size = 16 * 1024 * 1024;
my $stream = "\0" x $size;
# Compress that stream three times:
my $compressed = $stream;
for( 1..3 ) {
my $last = $compressed;
gzip(\$last, \$compressed, Level => 9, -Minimal => 1)
or die "Can't gzip content: $GzipError";
#diag sprintf "Encoded size %d bytes after round %d", length $compressed, $_;
};
use Data::Dumper;
$Data::Dumper::Useqq = 1;
print Dumper $compressed;
|