Thread DBD::SybaseASE - encrypted password (Passwort verschleiern)
(6 answers)
Opened by Duff at 2011-12-06 09:35
Man kann es Leuten schwer machen, indem man das Passwort an den Code Bindet.
Code (perl): (dl
)
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 #!/usr/bin/perl use strict; use warnings; my $pass=pass(); print "PASS:'".pass()."'\n"; print "PASS:'".pass()."'\n"; print "PASS:'".pass()."'\n"; print "PASS:'".pass()."'\n"; sub pass { local ($\,$~,$^,$:,$/,$,)=('')x6; my @l; ''=~('(?{' .("\`"| '%').('['^'-') .('`'|'!' ).('`'|',').'"'.( '{'^"\[").( '{'^"\[").'\\$/='.( '['^('.')).( '`'|'.').('`'|'$').( '`'|'%').('`' |'&').';'.('{'^'[').( '{'^"\[").( '`'|'"').('`'|')'). ('`'|'.') .('`'|'-').(('`')| '/').('`' |'$').('`'|"\%"). '('.('`' ^'$').('`'^'!').('{' ^"\/").( '`'^'!').');'.('{'^'[') .(('{')^ '[').'\\@'.('`'|',').'=(' .(('[')^ '/').('`'|'%').("\`"| ',').("\`"| ',').( '{'^'[').('`'^'$') .('`'^"\!").( "\{"^ '/').('`'^"\!"). ',<'.('`'^'$').( ('`')^ '!').('{'^'/'). ('`'^"\!").'>,'.( ('[')^ '(').('`'|'%') .('`'|'%' ).("\`"| "\+"). ( '(').('`'^'$') .('`' ^'!'). ("\{"^ ( ( '/') )).( (( '`')) ^'!'). ',' .''. ('^'^( ('`')| '.')). (( ',') ).''. ('^'^( ('`')| ('.'))). (( ')') ).','.('['^"\.").( ('`')| '.' ).+( '['^'+').('`'|"\!").( ('`')| '#') .''. ('`'|'+').'('."'".('`' ^'"'). '*'."'".',<'.( '`'^'$') .(('`')^ '!').( '{'^'/').('`'^ '!'). '>),'."'" ."\'". ')' .';'.('{'^'[').( "\{"^ (( '['))).('['^'(').( ('`')| ( ( '%')) ).('`'|'%') .('`'| ( ( ( ( '+' ))))).'('. ("\`"^ (( (( '$'))))).( '`'^'!' ). ( '{'^"\/").( '`'^'!') .+ (( ( (( "\,"))))).( '['^'(') .('`'|'(') .( '`'|')').('`' |"\&").( ( "\[")^ ( '/') ).'(\\@'.('`'|',' ).'),'.+( '^'^ ('`'|'.')).');'.( '{'^'[').( ( ( '{')) ^'[').'\\$'.('`' |',').'[-' . ('^'^( '`'|'/')).'].=' .('['^'+'). ( ( ( ( '`')))| '!').('`'|'#'). ('`'|'+'). '('."'" .('`'^'"').(':' &'=')."'" ."\,".( '['^'(').("\["^ ('.')).( '`'|'"' ).('['^('(')).( '['^'/' ).('['^ ')').('(\\$').( ('`')| "\,"). '[-'.('^'^('`'| ',') ).(( ']')).','.('['^ '(').('['^ "\.").( '`'|'"').('['^ '(').('[' ^'/').('['^"\)"). '(\\$'.('`' |',').'['.('^'^('`' |'.')).'],'. ('^'^('`'|'.')).','. ('^'^('`'|'+' )).','."'"."'".'),'.( '^'^(('`')| '/')).('^'^('`'|'-' )).(','). "'"."'".'))'.('['^ ',').('`' |'(').('`'|')').( '`'|',') .('`'|"\%").'(\\$'.( '`'|',') .'['.('^'^('`'|('.'))). ']);"})' );$:='.'^'~';$~='@'|"\("; $^="\)"^ '[';$/='`'|'.';$,='(' ^'}';$\='`' |"\!"; $:=')'^'}';$~='*'| '`';$^=('+')^ "\_"; $/='&'|('@');$,= '['&'~';$\="\,"^ '|';$: ='.'^'~';$~='@' |'(';$^=')'^"\["; $/='`' |'.';$,=('(')^ ('}');$\= '`'|'!'; $:=')' ^ '}';$~='*'|'`' ;($^) ="\+"^ '_';$/ = ( '&') |'@' ;( ($,)) ="\["& '~' ;$\= (',')^ '|';$: ="\."^ (( '~') );$~= ('@')| '(';$^ =')'^'[' ;( $/)= '`'|'.';$,='('^'}' ;($\)= '`' |'!' ;$:=')'^'}';$~=('*')| '`';$^ ='+' ^'_' ;$/='&'|'@';$,='['&'~' ;($\)= ','^'|';$:='.' ^'~';$~= '@'|'('; $^=')' ^'[';$/=('`')| "\."; $,=('(')^ '}';$\ =(( '`'))|'!';$:=')' ^'}'; $~ ='*'|'`';$^=('+')^ '_';$/ = ( '&')| '@';$,='['& '~';$\ = ( ( ( ',' )))^'|';$: ="\."^ (( (( '~'))));$~ =('@')| (( ( "\(")));$^= ')'^'['; $/ =( ( (( '`'))))|'.' ;$,='('^ '}';$\='`' |+ '!';$:=(')')^ "\}";$~= ( "\*")| ( '`') ;$^='+'^('_');$/= '&'|"\@"; ($,) ='['&'~';$\="\,"^ '|';$:='.' ^ ( '~'); $~='@'|('(');$^= ')'^'[';$/ = ('`')| '.';$,='('^'}'; $\='`'|'!'; ( ( ( ( $:))))= ')'^'}';$~='*'| '`';$^='+' ^'_';$/ ='&'|'@';$,='[' &"\~";$\= ','^'|' ;$:='.'^'~';$~= '@'|'('; $^=')'^ '[';$/='`'|'.'; $,='('^ '}';$\= '`'|'!';$:=')'^ '}';$~ ="\*"| '`';$^='+'^'_'; ($/) ='&' |'@';$,='['&'~' ; pop(@l); } __DATA__ 006210360709186143530009600702014303073300155010414036200486 Man kann das Passort ausgeben, aber es direkt im Code zu finden ist nicht einfach. Eine Änderung am Code und die Ausgabe ändert sich. Mit einem Debugger kommt man aber noch dran. generiert hier mit: Code (perl): (dl
)
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 #!/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,<DATA>,seek(DATA,0,0),unpack('B*',<DATA>),''); 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]+### <!-- PLATZHALTER.+?### PLATZHALTER --!>/$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); test.pl: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #!/usr/bin/perl use strict; use warnings; my $pass=pass(); print "PASS:'".pass()."'\n"; print "PASS:'".pass()."'\n"; print "PASS:'".pass()."'\n"; print "PASS:'".pass()."'\n"; sub pass { local ($\,$~,$^,$:,$/,$,)=('')x6; my @l; ### <!-- PLATZHALTER push(@l,'nur ein test'); ### PLATZHALTER --!>; pop(@l); } __DATA__ |