#!/usr/bin/perl use strict; use warnings; use List::Util 'shuffle'; use Acme::EyeDrops qw(sightly); use Data::Dumper; my $pass='nur ein test'; my $in_file="test.pl"; my $out_file="test.out.pl"; my $code=<<'EOC'; $/=undef; binmode(DATA); @l=(tell DATA,,seek(DATA,0,0),unpack('B*',),''); seek(DATA,shift(@l),0); $l[-1].=pack('B8',substr($l[-2],substr($l[0],0,5,''),13,''))while($l[0]); EOC #$code=" eval pack('H*','".unpack('H*',$code)."')"; $code=sightly({ Regex => 1, Compact => 1, RemoveNewlines => 1, Shape => 'autrijus', Indent => 0, SourceString => $code, }); my $str=''; if(open(my $fh, '<', $in_file)) { local $/=undef; binmode($fh); $str=<$fh>; close($fh); } else { die("ERROR open $in_file ($!)\n"); } $str=~s/[^\S\n\r]+### /$code/gs; my $stb=unpack('B*',$str); my @passl=map{unpack('B8',$_)}split(//,pack('a*',$pass)); my $seq=''; while(@passl) { my $bin=shift(@passl); my $pos=-1; for(shuffle(0..(length($stb)-13))) { if(substr($stb,$_,8) eq $bin) { $pos=$_; substr($stb,$_,13,''); last; } } if($pos>=0) { $seq.=sprintf('%05u',$pos); } else { die("Keine Entsprechung gefunden!"); } } $str=~s/__DATA__.*?$/__DATA__\n$seq/s; open(my $fh, '>', $out_file) or die("ERROR open $out_file ($!)\n"); print $fh $str; close($fh);