Thread DBD::SybaseASE - encrypted password (Passwort verschleiern) (6 answers)
Opened by Duff at 2011-12-06 09:35

topeg
 2011-12-06 18:48
#154692 #154692
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Man kann es Leuten schwer machen, indem man das Passwort an den Code Bindet.
more (52.5kb):
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:
more (15.1kb):
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__

View full thread DBD::SybaseASE - encrypted password (Passwort verschleiern)