Welcome To Our Shell

Mister Spy & Souheyl Bypass Shell

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

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/DivBasicF/COM.pm

package DivBasicF::COM;

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

sub new {

   my $class           = shift;
   my $self            = {};
   $self->{'PARS'}     = shift;
   $self->{'OBJ'}      = shift;
   bless($self,$class);
#   if ($self->{'OBJ'}) {
#      $self->{'OBJ'}->{'PARENT'} = $self;
#   }
   $self->{'CONNECTION_ID'} = { "1" => "" };
   $self->{'RESET_ID'}      = { "1" => "" };
   $self->{'SESSION'}       = { "1" => {} };
   $self->{'STORE_ID'}      = { "1" => "" };
   $self->{'LOCK'}          = { "1" => 0  };
   $self->{'STATUS'}        = { "1" => 0  };
   $self->{'DEFAULT'}       = { "1" => [] };
   $self->{'CHANNEL'}       = "1";

   $self->init();
   
   if (!($self->{'FREQUENZ'}))  { $self->{'FREQUENZ'}  = 25; }
   if (!($self->{'WAIT_TIME'})) { $self->{'WAIT_TIME'} = 20; }
   ($self->{'CYCLES'},$self->{'INTERVAL'}) =
         $self->cycles_interval($self->{'WAIT_TIME'},$self->{'FREQUENZ'});

   return($self);

}

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

sub cycle {

   my $self = shift;
   my $obj  = shift;
   return($self);
   
   if (!$obj) {
      $self->{'PARENT'} = $self->{'OBJ'}->cycle($self);
   }
   elsif (!($self->{'OBJ'})) {
      $self->{'OBJ'} = $obj;
   }
   else {
      return($self->{'OBJ'}->cycle($obj));
   }
   return($self);
   
   
}

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

sub init { my $self = shift; $self->{'COM_PARS'} = shift; }
sub log  { 1; }
sub up   { my $self = shift; if ($self->{'OBJ'}) { $self->{'OBJ'}->up();   } }
sub down { my $self = shift; if ($self->{'OBJ'}) { $self->{'OBJ'}->down(); } }
sub dir  { my $self = shift; return($self->{'DIR'}); }
sub list {  return({}); }

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

sub cycles_interval {

   my $self      = shift;
   my $wait_time = shift;   
   my $frequenz  = shift;
   my $cycles    = $self->{'CYCLES'};
   my $interval  = $self->{'INTERVAL'};

   if ($frequenz) {
      if (!$wait_time) {
         $wait_time = $self->{'WAIT_TIME'};
      }
      $cycles = $wait_time * $frequenz;
      $interval = 1 / $frequenz;
   }
   elsif ($wait_time) {
      $cycles = $wait_time * $self->{'FREQUENZ'};
      $cycles = 1 if ($cycles < 1);
   }

   return($cycles,$interval);

}

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

sub encode {

   my $self     = shift;
   my $o        = shift;
   if ($self->{'SERIAL'}) {
      return($self->{'SERIAL'}->encode($o));
   }
   return(Server::frezthaw::freeze($o));

}

#********************************************************************
   
sub decode {

   my $self = shift;
   my $o    = shift;
   my $o1   = "";
   if ($self->{'SERIAL'}) {
-      return($self->{'SERIAL'}->decode($o));
   }
   $o1 = (Server::frezthaw::thaw($o))[0];
   return($o1);

}

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

sub run {     #  Server-seitige Funktion

   my $self = shift;
   my $max_new = shift;
   my $max_run = shift;
   my $wait    = shift;
   my $text;

   while (0 == 0) {
      print "STATUS " . $self->{'STATUS'}->{$self->{'CHANNEL'}};
      $text = $self->run1();
      print " $text\n";
      return() if ($text == -1);
      $text = $wait if ($text eq "___WAIT_UNKNOWN___");
      sleep($text) if ($text);
   }
   
}

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

sub msg {

   my $self = shift;
   $self->{'MESSAGE'} = shift;
   
}

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

sub get {

   my $self = shift;
   my $o    = $self->{'MESSAGE'};
   delete ($self->{'MESSAGE'});
   return($o);
   
}

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

sub run1 {

   my $self    = shift;
   my $wait    = shift;
   my $channel = $self->{'CHANNEL'};
   my $o; my $o1; my $o2;

   if ($self->{'STATUS'}->{$channel} == 0) {
      $self->{'TEXT'}->{$channel} = $self->get(999999999999);
      unshift(@{$self->{'TEXT'}->{$channel}},
               "START_".$self->{'TEXT'}->{$channel}->[0]);
      $self->{'STATUS'}->{$channel} = 2;
      return("");
   }
   
   if ($self->{'STATUS'}->{$channel} == 1) {
      $o = "";
      $self->{'TEXT'}->{$channel} = $self->get($o);
      if (!(ref($self->{'TEXT'}->{$channel}))) {
         return($self->{'TEXT'}->{$channel});
      }
      $self->{'STATUS'}->{$channel} = 2;
      return("");
   }
   
   if ($self->{'STATUS'}->{$channel} == 2) {
      $self->{'TEXT'}->{$channel} =
             $self->{'OBJ'}->query( [@{ $self->{'TEXT'}->{$channel} }] );
      if (!(ref($self->{'TEXT'}->{$channel}))) {
         $self->{'STATUS'}->{$channel} = 1;
         return($self->{'TEXT'}->{$channel});
      }
      elsif ($self->{'TEXT'}->{$channel}->[0] =~ /^___NEXT(\-?)([a-zA-Z0-9]*)___$/) {
         $o  = $2;
         $o1 = $1;
         shift(@{$self->{'TEXT'}->{$channel}});
         $self->{'STATUS'}->{$channel} = 2;
         if ($o1) {
            sleep($o);
         } else {
            return(-1) if ($o eq "EXIT");
            return($o);
         }
      }
      else {
         $self->{'STATUS'}->{$channel} = 4;
      }
      return("");
   }
   
   if ($self->{'STATUS'}->{$channel} == 4) {
      $o = ""; $o1 = "";
      if ($self->{'TEXT'}->{$channel}->[0] =~ /^___QUERY(\-?)([a-zA-Z0-9]*)___$/) {
         $o  = $2;
         $o1 = $1;
         shift(@{$self->{'TEXT'}->{$channel}});
      }
      $self->msg($self->{'TEXT'}->{$channel});
      $self->{'STATUS'}->{$channel} = 1;
      if ($o1) {
         sleep($o);
      } else {
         return(-1) if ($o eq "EXIT");
         return($o);
      }
   }
         
}         
     
#*********************************************************************

sub START {

   my $self = shift;
   my $mode = shift;
   return(['___NEXT1___',@_]);

}

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

sub query {

   my $self  = shift;
   my $pars  = shift;
   my $func  = shift(@$pars);
   my $session = $self->get_session();
   $session->{'___QUERYFUNC___'} = $func;

#  print "DDDD $self $func " . Dumper($pars) . "\n"; sleep 1;
   
   my $mode   = "";
   my $text   = "";
   my $fehler = "";
   while (0 == 0) {
      eval("\$text = \$self->\$func(\$mode,\@\$pars)");
      if ($text) {
         return($text);
      } else {
         if ($@) {
            $fehler = $fehler . "$func: " . $@ . "\n";
         } else {
            $fehler = $fehler . "$func: no return value\n";
         }
      }
      if ($func !~ /^(.*)(\_.*)$/) {
         if (!($self->{'OBJ'})) {
            return(["ERROR: $func on $self not found: " . $fehler]);
         }
#         if ($func =~ s/^(.*)\:\:(.*)$//) {
#            $func = $2;
#         }
         return($self->{'OBJ'}->query([$func.$mode,@$pars]));
      }
      $mode = $2 . $mode;
      $func = $1;
   }
      
}

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

sub channel {

   my $self = shift;
   my $ch   = shift;
   if (!$ch) {
      my @ee = sort { $a <=> $b } values ( %{$self->{'CONNECTION_ID'}} );
      $ch = sprintf("%1u",pop(@ee));
      $self->{'RESET_ID'}->{$ch}      = "";
      $self->{'SESSION'}->{$ch}       = {};
      $self->{'STORE_ID'}->{$ch}      = "";
      $self->{'LOCK'}->{$ch}          = 0;
      $self->{'STATUS'}->{$ch}        = 1;
      $self->{'DEFAULT'}->{$ch}       = [];
      $self->{'TEXT'}->{$ch}          = [];
   }
   $self->{'CHANNEL'} = $ch;
   return($self->{'CHANNEL'});
   
}

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

sub get_channel {

   my $self = shift;
   return($self->{'CHANNEL'});
   
}

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

sub connection {

   my $self = shift;
   if (!($self->{'CONNECTION_ID'}->{$self->{'CHANNEL'}})) {
      $self->{'RESET_ID'}->{$self->{'CHANNEL'}} = shift;
      $self->{'CONNECTION_ID'}->{$self->{'CHANNEL'}} =
                 $self->{'RESET_ID'}->{$self->{'CHANNEL'}};
   } else {
      $self->{'CONNECTION_ID'}->{$self->{'CHANNEL'}} = shift;
   }
   return($self->{'CONNECTION_ID'}->{$self->{'CHANNEL'}});
   
}

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

sub get_connection {

   my $self     = shift;
   my $reset_id = shift;
   if ($reset_id) {
      if ($self->{'CONNECTION_ID'}->{$self->{'CHANNEL'}} eq
          $self->{'RESET_ID'}->{$self->{'CHANNEL'}}) {
         return("");
#         $reset_id = $self->{'CONNECTION_ID'}->{$self->{'CHANNEL'}};
#         print "RRR $reset_id\n";
#         return([$reset_id]);
#         return([$self->{'CONNECTION_ID'}->{$self->{'CHANNEL'}}]);
      }
   }
   return($self->{'CONNECTION_ID'}->{$self->{'CHANNEL'}});
   
}

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

sub session {

   my $self = shift;
   $self->{'SESSION'}->{$self->{'CHANNEL'}} = shift;
   return($self->{'SESSION'}->{$self->{'CHANNEL'}});
   
}

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

sub get_session {

   my $self = shift;
   my $par  = shift;
   
   my $v = $self->{'SESSION'}->{$self->{'CHANNEL'}};

   if ($par) {
      $v->{'class'} = $par;
   }

   return($v);
   
}

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

sub get_status {

   my $self = shift;
   return($self->{'STATUS'}->{$self->{'CHANNEL'}});
   
}

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

sub store_id {

   my $self = shift;
   my $o    = shift;
   $self->{'STORE_ID'}->{$self->{'CHANNEL'}} = $o;
   return($self->{'STORE_ID'}->{$self->{'CHANNEL'}});
   
}

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

sub get_store_id {

   my $self   = shift;
   my $toggle = shift;
   my $o;
   $o         = $self->{'STORE_ID'}->{$self->{'CHANNEL'}};
   if (!$o) {
      $o = Digest::MD5->md5_base64(Dumper($self).time().
                            sprintf("%1u",int rand(10000000)));
      $o =~ s/\//\_/g;
      $o =~ s/\+/\-/g;
   }
   if ($toggle) {
      if   ($o =~ s/\_$//) { 1; }
      else {$o = $o . "_"; }
   }
   return($o);
   
}

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

sub umlaute {

   my $self = shift;
   $self->{'UMLAUTE'} = {
      "Lae" => chr(228),        #  Linux
      "Loe" => chr(246),
      "Lue" => chr(252),
      "Lsz" => chr(223),
      "LAE" => chr(196),
      "LOE" => chr(214),
      "LUE" => chr(220),

      "Wae" => chr(132),        #  Windows
      "Woe" => chr(148),
      "Wue" => chr(129),
      "Wsz" => chr(223),
      "WAE" => chr(142),
      "WOE" => chr(153),
      "WUE" => chr(154),

      "Uae" => chr(195) . chr(164),  #  UTF-8
      "Uoe" => chr(195) . chr(182),
      "Uue" => chr(195) . chr(188),
      "Usz" => chr(195) . chr(159),
      "UAE" => chr(195) . chr(132),
      "UOE" => chr(195) . chr(150),
      "UUE" => chr(195) . chr(156)
   };

}

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

sub c1 {

   my $self = shift;
   my $text = shift;
   
   if ($self->{'CONVERT'} eq "win") {
      my $u = $self->{'UMLAUTE'};
      if (!$u) { $u = $self->umlaute(); }
      $text =~ s/$u->{'Lae'}/$u->{'Wae'}/gs;
      $text =~ s/$u->{'Loe'}/$u->{'Woe'}/gs;
      $text =~ s/$u->{'Lue'}/$u->{'Wue'}/gs;
      $text =~ s/$u->{'Lsz'}/$u->{'Wsz'}/gs;
      $text =~ s/$u->{'LAE'}/$u->{'WAE'}/gs;
      $text =~ s/$u->{'LOE'}/$u->{'WOE'}/gs;
      $text =~ s/$u->{'LUE'}/$u->{'WUE'}/gs;
      if ($self->{'LAZY'}) {
         $text =~ s/$u->{'Uae'}/$u->{'Wae'}/gs;
         $text =~ s/$u->{'Uoe'}/$u->{'Woe'}/gs;
         $text =~ s/$u->{'Uue'}/$u->{'Wue'}/gs;
         $text =~ s/$u->{'Usz'}/$u->{'Wsz'}/gs;
         $text =~ s/$u->{'UAE'}/$u->{'WAE'}/gs;
         $text =~ s/$u->{'UOE'}/$u->{'WOE'}/gs;
         $text =~ s/$u->{'UUE'}/$u->{'WUE'}/gs;
      }
   }
   elsif ($self->{'CONVERT'} eq "utf8") {
      my $u = $self->{'UMLAUTE'};
      if (!$u) { $u = $self->umlaute(); }
      $text =~ s/$u->{'Lae'}/$u->{'Uae'}/gs;
      $text =~ s/$u->{'Loe'}/$u->{'Uoe'}/gs;
      $text =~ s/$u->{'Lue'}/$u->{'Uue'}/gs;
      $text =~ s/$u->{'Lsz'}/$u->{'Usz'}/gs;
      $text =~ s/$u->{'LAE'}/$u->{'UAE'}/gs;
      $text =~ s/$u->{'LOE'}/$u->{'UOE'}/gs;
      $text =~ s/$u->{'LUE'}/$u->{'UUE'}/gs;
      if ($self->{'LAZY'}) {
         $text =~ s/$u->{'Wae'}/$u->{'Uae'}/gs;
         $text =~ s/$u->{'Woe'}/$u->{'Uoe'}/gs;
         $text =~ s/$u->{'Wue'}/$u->{'Uue'}/gs;
         $text =~ s/$u->{'Wsz'}/$u->{'Usz'}/gs;
         $text =~ s/$u->{'WAE'}/$u->{'UAE'}/gs;
         $text =~ s/$u->{'WOE'}/$u->{'UOE'}/gs;
         $text =~ s/$u->{'WUE'}/$u->{'UUE'}/gs;
      }
   }
   elsif ($self->{'CONVERT'} eq "linux") {
      if ($self->{'LAZY'}) {
         my $u = $self->{'UMLAUTE'};
         if (!$u) { $u = $self->umlaute(); }
         $text =~ s/$u->{'Uae'}/$u->{'Lae'}/gs;
         $text =~ s/$u->{'Uoe'}/$u->{'Loe'}/gs;
         $text =~ s/$u->{'Uue'}/$u->{'Lue'}/gs;
         $text =~ s/$u->{'Usz'}/$u->{'Lsz'}/gs;
         $text =~ s/$u->{'UAE'}/$u->{'LAE'}/gs;
         $text =~ s/$u->{'UOE'}/$u->{'LOE'}/gs;
         $text =~ s/$u->{'UUE'}/$u->{'LUE'}/gs;
         $text =~ s/$u->{'Wae'}/$u->{'Lae'}/gs;
         $text =~ s/$u->{'Woe'}/$u->{'Loe'}/gs;
         $text =~ s/$u->{'Wue'}/$u->{'Lue'}/gs;
         $text =~ s/$u->{'Wsz'}/$u->{'Lsz'}/gs;
         $text =~ s/$u->{'WAE'}/$u->{'LAE'}/gs;
         $text =~ s/$u->{'WOE'}/$u->{'LOE'}/gs;
         $text =~ s/$u->{'WUE'}/$u->{'LUE'}/gs;
      }
   }
   
   return($text);
   
}
   
#**************************************************************

sub c2 {

   my $self = shift;
   my $text = shift;
   
   if ($self->{'CONVERT'} eq "win") {
      my $u = $self->{'UMLAUTE'};
      if (!$u) { $u = $self->umlaute(); }
      $text =~ s/$u->{'Wae'}/$u->{'Lae'}/gs;
      $text =~ s/$u->{'Woe'}/$u->{'Loe'}/gs;
      $text =~ s/$u->{'Wue'}/$u->{'Lue'}/gs;
      $text =~ s/$u->{'Wsz'}/$u->{'Lsz'}/gs;
      $text =~ s/$u->{'WAE'}/$u->{'LAE'}/gs;
      $text =~ s/$u->{'WOE'}/$u->{'LOE'}/gs;
      $text =~ s/$u->{'WUE'}/$u->{'LUE'}/gs;
      if ($self->{'LAZY'}) {
         $text =~ s/$u->{'Uae'}/$u->{'Lae'}/gs;
         $text =~ s/$u->{'Uoe'}/$u->{'Loe'}/gs;
         $text =~ s/$u->{'Uue'}/$u->{'Lue'}/gs;
         $text =~ s/$u->{'Usz'}/$u->{'Lsz'}/gs;
         $text =~ s/$u->{'UAE'}/$u->{'LAE'}/gs;
         $text =~ s/$u->{'UOE'}/$u->{'LOE'}/gs;
         $text =~ s/$u->{'UUE'}/$u->{'LUE'}/gs;
      }
   }
   elsif ($self->{'CONVERT'} eq "utf8") {
      my $u = $self->{'UMLAUTE'};
      if (!$u) { $u = $self->umlaute(); }
      $text =~ s/$u->{'Uae'}/$u->{'Lae'}/gs;
      $text =~ s/$u->{'Uoe'}/$u->{'Loe'}/gs;
      $text =~ s/$u->{'Uue'}/$u->{'Lue'}/gs;
      $text =~ s/$u->{'Usz'}/$u->{'Lsz'}/gs;
      $text =~ s/$u->{'UAE'}/$u->{'LAE'}/gs;
      $text =~ s/$u->{'UOE'}/$u->{'LOE'}/gs;
      $text =~ s/$u->{'UUE'}/$u->{'LUE'}/gs;
      if ($self->{'LAZY'}) {
         $text =~ s/$u->{'Wae'}/$u->{'Lae'}/gs;
         $text =~ s/$u->{'Woe'}/$u->{'Loe'}/gs;
         $text =~ s/$u->{'Wue'}/$u->{'Lue'}/gs;
         $text =~ s/$u->{'Wsz'}/$u->{'Lsz'}/gs;
         $text =~ s/$u->{'WAE'}/$u->{'LAE'}/gs;
         $text =~ s/$u->{'WOE'}/$u->{'LOE'}/gs;
         $text =~ s/$u->{'WUE'}/$u->{'LUE'}/gs;
      }
   }
   elsif ($self->{'CONVERT'} eq "linux") {
      if ($self->{'LAZY'}) {
         my $u = $self->{'UMLAUTE'};
         if (!$u) { $u = $self->umlaute(); }
         $text =~ s/$u->{'Uae'}/$u->{'Lae'}/gs;
         $text =~ s/$u->{'Uoe'}/$u->{'Loe'}/gs;
         $text =~ s/$u->{'Uue'}/$u->{'Lue'}/gs;
         $text =~ s/$u->{'Usz'}/$u->{'Lsz'}/gs;
         $text =~ s/$u->{'UAE'}/$u->{'LAE'}/gs;
         $text =~ s/$u->{'UOE'}/$u->{'LOE'}/gs;
         $text =~ s/$u->{'UUE'}/$u->{'LUE'}/gs;
         $text =~ s/$u->{'Wae'}/$u->{'Lae'}/gs;
         $text =~ s/$u->{'Woe'}/$u->{'Loe'}/gs;
         $text =~ s/$u->{'Wue'}/$u->{'Lue'}/gs;
         $text =~ s/$u->{'Wsz'}/$u->{'Lsz'}/gs;
         $text =~ s/$u->{'WAE'}/$u->{'LAE'}/gs;
         $text =~ s/$u->{'WOE'}/$u->{'LOE'}/gs;
         $text =~ s/$u->{'WUE'}/$u->{'LUE'}/gs;
      }
   }
   
   return($text);
   
}

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

sub xxnext {

   my $self = shift;
   
   my $session = $self->get_session();
   if ($session->{'___BLOCK___'} =~ /^(.*)\,(\d+)$/) {
      $session->{'___JUMP___'} = $1 . ",0";
   }
   
}


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

sub xxlast {

   my $self = shift;
   my $name = shift;
   
   my $session = $self->get_session();
   if ($session->{'___BLOCK___'} =~ /^(.*)\,(\d+)$/) {
      $session->{'___JUMP___'} = $1;
   }
   
}

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

sub xxanswer {

   my $self = shift;
   my $mode = shift;
   my $erg  = shift;

   if ($erg) {
      $self->{'ANSWER_FUNC'}  = $erg;
      $self->{'ANSWER_SLEEP'} = shift;
      $self->{'ANSWER_COM'}   = shift;
      $self->{'ANSWER_TIME'}  = 0;
   }
   
   $erg = $self->{'ANSWER_TIME'} - time();
   return($erg) if ($erg > 0);
   
   $erg = $self->{'ANSWER_COM'}->get();
   if ($erg > 0) {
      if ($self->{'ANSWER_SLEEP'}) { $erg = $self->{'ANSWER_SLEEP'}; }
      $self->{'ANSWER_TIME'} = time() + $erg;
      return(["___GET___"]);
   }

   return(["___NEXT___",$self->{'ANSWER_FUNC'},@$erg]);
   
}

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

sub xxget1 { my $self = shift;

 my $erg = $self->{'PARENT'}->get(@_);
 return($erg);
 
}

sub xxmsg1 { my $self = shift; return($self->{'OBJ'}->msg(@_));    }

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

sub xxreturn {

   my $self = shift;
   my $val  = shift;
   
   my $session = $self->get_session();
   delete ($session->{'___BLOCK___'});
   delete ($session->{'___BLOCK0___'});
   delete ($session->{'___SLEEP___'});
   delete ($session->{'___EXECUTED___'});
   delete ($session->{'___JUMP___'});
   delete ($session->{'___CALL___'});
   
   return($val);

}

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

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