Welcome To Our Shell

Mister Spy & Souheyl Bypass Shell

Current Path : /var/www/web-klick.de/dsh/50_dev2017/1300__perllib/Process/

Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
Upload File :
Current File : /var/www/web-klick.de/dsh/50_dev2017/1300__perllib/Process/Address1.pm

package Process::Address;

use strict;
use Data::Dumper;
use Digest::MD5;
use MIME::Entity;

$Data::Dumper::Sortkeys = 1;


sub new {

   my $class = shift;
   my $self  = {};
   bless($self,$class);
   $self->{'ADR'} = [];
   $self->read_adr(@_);
   return($self);
   
}

#*******************************************************************

sub run {

   my $self = shift;
   my $func = shift;
   if ($func =~ s/^\_//) {
      print Dumper( $self->$func(@_) );
   } else { 
      return( $self->$func(@_) );
   }

}

#*******************************************************************

#  Import of all files for the database

sub read_adr {

   my $self  = shift;
   my $o     = join(",",@_);  #  List of directories and files
   my $adr   = $self->{'ADR'};  #  Originally given addresses

   my $o1; my $o2; my $o3; my $fields; my @ee; my $entry;
   my @files = ();
   foreach $o1 (split(/,/,$o)) {
      if (-f $o1) { push(@files,$o1); }
      if (-d $o1) {
         opendir(DDIR,$o1);
         push(@INC,$o1);
         while (0 == 0) {
            $o2 = readdir(DDIR);
            last if (!$o2);
            push(@files,$o1 . "/" . $o2);
         }
         closedir(DDIR);
      }
   }
   
   foreach $o (@files) {

      open(FFILE,"<".$o);
      $o1 = join("",<FFILE>);
      close(FFILE);
      
      if ($o1 =~ /^package +(.*?)\;/) {   #  Perl-Package
         $o2 = $1;
         eval("use $o2");
         $o3 = $o2->adressen();
         push(@$adr,@$o3);
      }
      
      elsif ($o =~ /csv$/) {   #  Excel-File
         foreach $o2 (split(/\n/,$o1)) {
            if (!$fields) {
               $fields = split(/\;/,$o2);
            } else {
               @ee    = @$fields;
               $entry = {};
               foreach $o3 (split(/\;/,$o2)) {
                  $entry->{shift(@ee)} = $o3;
               }
               push(@$adr,$entry);
            }
         }
      }
     
   }

   $self->{'ADR'} = $adr;
   
   my $merge = {};
   foreach $o (@$adr) {
      $merge->{Digest::MD5->md5_base64(Dumper($o))} = $o;
      $o->{'MD5REVERSE'} = {};   # in den einzelnen Adressobjekten
   }                             # werden die Child-Objekte hinzugefuegt

   my $adr1 = {};  #  hier werden die Adressobjekte gespeichert, die KEINE 
   foreach $o (keys %$merge) {   # Vorgaenger mehr haben
      $adr1->{$o} = 1;
# print "XX: $o\n";
      $entry = $merge->{$o};
      next if (!($entry->{'MD5KEY'}));
      foreach $o1 (keys %{$entry->{'MD5KEY'}}) {
         if (exists ($merge->{$o1})) {
            delete ($adr1->{$o});
            $merge->{$o1}->{'MD5REVERSE'}->{$o} = 1;
         }
      }
   }
   
#  in $adr1 stehen jetzt die zusammenhaengenden 'Baeume', die
#  die Adressobjekte darstellen. Diese werden jetzt gemerged:

   $fields = [];
   foreach $o (keys %$adr1) {
      $self->merge($merge,$o);
      push(@$fields,$merge->{$o});
   }

   $self->{'ADR'} = $fields;
   
}


#*******************************************************************

sub merge {

   my $self  = shift;
   my $merge = shift;
   my $id    = shift;
   
   my $obj   = $merge->{$id};
   
   if (!(%{$obj->{'MD5REVERSE'}})) {
      delete ($obj->{'MD5REVERSE'});
      return();
   }
   
   my $obj1 = "",
   my $zaehler = 0;
   my $o;
   foreach $o (keys %{$merge->{$obj}}) {
      $self->merge($merge,$o);
      if (!$obj1) {
         $obj1 = $merge->{$o};
      } else {
         $zaehler = sprintf("%03u",$zaehler + 1);
         $obj1->{'ALT'.$zaehler} = Dumper($merge->{$o});
      }
   }
   $merge->{$id} = $obj1;
         
}


#*******************************************************************

sub find {

   my $self    = shift;
   my $pattern = shift;
   my $erg     = [];
   my $o; my $o1; my $o2; my $o3;

   foreach $o (@{$self->{'ADR'}}) {
      $o1 = Dumper($o);
      foreach $o2 (split(/~/,$pattern)) {
         foreach $o3 (split(/,/,$o2)) {
            next if ($o1 =~ /$o3/);
            $o2 = "";
            last;
         }
         if ($o2) {
            push(@$erg,{%$o});
            $o1 = "";
            last;
         }
         last if (!$o1);
      }
   }
   return($erg);

}

#*******************************************************************


sub export {

   my $self    = shift;
   my $entries = shift;
   my $fields  = shift;
   
   if (!(ref($entries))) {
      $entries = $self->find($entries);
   }

   if (!(ref($fields))) { $fields = [split(/,/,$fields)]; }

   my $o; my $o1; my $o2;
   my $file = ref($self) . "__export";
   my $text = "package $file;\n" . <<'TEXT_ENDE';

#  Dieses File ist wie folgt zu verwenden:
#
#  Einfach die Felder editieren, den MD5KEY nicht anruehren.
#  Mehrzeilige Eintraege im Format:
#
#   FELD      =>  'XXX',
#   Zeile 1
#   Zeile 
#   ...
#   XXX
#
#  Hinzufuegen eines Datensatzes: OHNE MD5KEY-Feld!
#  Entfernen eines Datensatzes: NICHT loeschen, sondern
#  ins Feld  DELETE  irgendeinen Wert eingeben, z.B.:
#   DELETE    =>   '1',     oder 
#   DELETE    =>   '___DELETED___'   (es kommt nur
#   drauf an, dass IRGENDWAS drinsteht.

use vars qw(@ISA);
use Process::Address;
@ISA = qw(Process::Address);

sub adr {  return( [
TEXT_ENDE
   my $xls   = "";
   my $title = "";

   my $bed = 0;
   if (!@$fields) { $bed = 1; }

   foreach $o (@$entries) {
      $text = $text . "\n\n\{\n";
      $o->{'MD5KEY'} = Digest::MD5->md5_base64(Dumper($o));
      if ($bed) { $fields = [keys %$o]; }
      $title = "";
      foreach $o1 ("DELETE",@$fields) {
         next if ($o1 !~ /^[A-Z0-9]+$/);
         $title = $title . $o1 . "\;";
         $o2    = $o->{$o1};
         $o2    =~ s/\n/ /gs;
         $xls   = $xls .   $o2 . "\;";
         $o2 = length($o1);
         $o2 = 20 if ($o2 < 20);
         $text = $text . substr($o1."                        ",0,$o2) . " => ";
         if ($o->{$o1} =~ /\n/) {
            $o->{$o1} =~ s/\n*$//s;
            $text = $text . "<<'XXX',\n" . $o->{$o1} . "\nXXX\n";
         } else {
            $text = $text . "'" . $o->{$o1} . "',\n";
         }
      }
      $text = $text . "\},\n";
      $xls  = $xls  . "\n";
   }
   $text =~ s/,\n$//s;
   $text = $text . "\n   \])\;\n\n\}\n\n\n1;\n";
   
   open(FFILE,">$file.pm");
   print FFILE $text;
   close(FFILE);
   
   open(FFILE,">$file.csv");
   print FFILE $title . "\n" . $xls;
   close(FFILE);

   return($text);
        

}


#*******************************************************************

sub data {

   my $self = shift;
   my $text = shift;
   $self->{'DATA'} = $text;
   
   my $ee = [];
   my $o;
   foreach $o (split(/\n/,$text)) {
      push(@$ee,$o."\n");
   }
   return($ee);
   
}


#*******************************************************************

sub xxff {

   my $self  = shift;
   my $text  = shift;
   my $entry = shift;
   
   my $o; my $o1;
   $text =~ s/-(x[A-Z0-9\_]+)-/$entry->{$1}/gs;
   while ($text =~ /(-[A-Z0-9\_]+-)/) {
   print "QQQ: $1\n";
      $o  = $1;
      $o1 = $entry->{$o} || $o;
      $text =~ s/$o/$o1/gs;
   }
   return($text);

}

#*********************************************************************************

sub ff {

   my $self  = shift;
   my $text  = shift;
   my $entry = shift;

   my $o; my $o1; my $o2; my $o3; my @ee; my $erg; my $nr;

   while ($text =~ /-(x?)(\d*[A-Z\_]+)(\d*)-/) {
      $o1 = $1;
      $o2 = $2;
      $o3 = $3;

      $o = $entry->{lc($o2.$o3)};
      if (!$o) { $o = $entry->{uc($o2.$o3)}; }
      if (!$o) { $o = $entry->{lc($o2)}; }
      if (!$o) { $o = $entry->{uc($o2)}; }
      if (!$o) {
         if ($o =~ /(.*?)-(.*)/) {
            $nr   = $2;
            $o2   = $1;
            $o = $entry->{lc($o2)};
            if (!$o) { $o = $entry->{uc($o2)}; }
            if ($o =~ /sub +\{/) {
               eval("\$o = " . $o);
               $o = $self->$o($nr) if (!$@);
            }
         }
      }
      if ($o and $o3 and $o =~ /,/) {
         $o =~ /^ *(.*?) *$/;
         $o = $1;
         $o = (split(/ *, */,$o))[$o3-1];
      }
      if (!$o) {
#         $bed = 1;
         if (!$o1) {
            $o = "-".$o2.$o3."-";
         }
      }
      push(@ee,$o);
      $text =~ s/-$o1$o2$o3-/XXXYYYXXX/;
   }
   while ($text =~ /XXXYYYXXX/) {
      $o = shift(@ee);
      $text =~ s/XXXYYYXXX/$o/;
   }

   
   return($text);

}

#********************************************************************************


sub time_mark {

   my $self = shift;

   my $o1 = time();
      $o1 = sprintf("%04u",(localtime($o1))[5]+1900) .
            sprintf("%02u",(localtime($o1))[4]+1) .
            sprintf("%02u",(localtime($o1))[3]) . "_" . 
            sprintf("%02u",(localtime($o1))[2]) .
            sprintf("%02u",(localtime($o1))[1]);
   return($o1);
   
}


1;



bypass 1.0, Devloped By El Moujahidin (the source has been moved and devloped)
Email: contact@elmoujehidin.net bypass 1.0, Devloped By El Moujahidin (the source has been moved and devloped) Email: contact@elmoujehidin.net