Advertisement
Guest User

Sniper IRC Bot

a guest
Jan 28th, 2011
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 6.52 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. # Autore: SiD
  4. # Licenza: GNU/Gpl
  5. # Avviare il bot ed attendere che entri nel chan, da lì in poi sarà attivo =D
  6. # ********************************************
  7. # Per far uscire il bot, inviare in PRIVATO AL BOT:
  8. #                 !esci <nick bot> <password bot>
  9.  
  10. # Per dare l'op ad un utente, inviare in PRIVATO AL BOT:
  11. #                 !op <nick utente> <password bot>
  12. # Per dare il deop ad un utente, inviare in PRIVATO AL BOT:
  13. #                 !deop <nick utente> <password bot>
  14.  
  15. # Per ricavare la versione del bot:
  16. #                 !versione
  17.  
  18. # Per cercare un hash e ricavare la password da Milw0rm inviare in PRIVATO AL BOT:
  19. #                 !milw0rm <hash>
  20. # Per esempio  !milw0rm 0800fc577294c34e0b28ad2839435945
  21. # ********************************************
  22.  
  23. use IO::Socket;
  24. use LWP::UserAgent;
  25.  
  26. my $unick       = 'Sn1p3r';            #Nick bot che apparirà nel chan
  27. my $server      = 'irc.oltreirc.net';  # Server IRC
  28. my $chan        = '#sid';              # Chan
  29. my $bot         = 'Sniper';            # Nome del bot (non apparirà)
  30. my $psw         = 'psw';               # Cambiare psw con una password da voi scelta!!
  31. my $version     = '1.0';               # Versione del bot
  32. my $log_name    = 'Sniper-log.txt';    # Nome del log creato
  33. my $kick_status = 1;                   # Kick per bestemmie-parolaccie. Settare a 0 per disattivarlo.
  34. my $autojoin    = 1;                   # AutoJoin immediato al chan in caso di kick. Settare a 0 per disattivarlo.
  35.  
  36. $sock = new IO::Socket::INET (
  37.                         PeerAddr => $server,
  38.                         PeerPort => 6667,
  39.                         Proto    => 'tcp'
  40.                              ) or die "Impossibile connettersi a $server\n";
  41.  
  42. start();  
  43.  
  44. @risate = ('XD', 'xD', 'LOL', 'rotfl', 'asd', 'haha');
  45.  
  46. while($rcv = <$sock>) {
  47.  
  48.         print $rcv;
  49.        
  50.         # Log di quello che accade, molto elementare =D
  51.         open(BOT_LOG, ">>", $log_name);
  52.         print BOT_LOG $rcv;
  53.         close(BOT_LOG);
  54.  
  55.         #Regex per IRC
  56.         if ($rcv =~ /:(.*?)!/) {
  57.                 $nick = $1;
  58.         }
  59.  
  60.         if ($rcv =~ /(ciao|we|eila|eccomi|hi all|ciau|ciauz|ciao a tutti|salve|hola)/) {
  61.                 if ($rcv =~ /PRIVMSG $unick :(ciao|we|eila|hi|ciau|ciauz|hola)/) {
  62.                         priv("Ciao $nick, non parlarmi in query, sono un bot..");
  63.                 }
  64.                 else {
  65.                         chan("Ciao $nick ^^");
  66.                 }
  67.         }
  68.        
  69.         if ($rcv =~ /porco dio|dio porco|dio cane|test. di cazzo|figl.+ di puttana|coglion./) {
  70.                 if ($rcv =~ /PRIVMSG $unick :(porco dio|dio porco|dio cane|test. di cazzo|figl.+ di puttana|coglion.)/) {
  71.                         priv("$nick, gira alla larga cretino -.-");
  72.                 }
  73.                 else {
  74.                         chan("Puoi anche andartene, $nick!");
  75.                         if ($kick_status == 1) {
  76.                                 kick();
  77.                         }
  78.                 }
  79.     }
  80.        
  81.         if ($rcv =~ /LOL|LOLZ|lol|lolz|asd|ASD|XD|xD|rotfl|ROTFL|haha|hehe|hihi/) {
  82.                 $count = scalar(@risate);
  83.                 $rand = int(rand($count));
  84.                 if ($rcv =~ /PRIVMSG $unick :(LOL|LOLZ|lol|lolz|asd|ASD|XD|xD|rotfl|ROTFL|haha|hehe|hihi)/) {
  85.                         priv("@risate[$rand]");
  86.                 }
  87.                 else {
  88.                         chan("@risate[$rand]");
  89.                 }
  90.     }
  91.        
  92.         if ($rcv =~ /(programmazione|perl|python|php|ruby|java|c\+\+|assembly)/) {
  93.                 if ($rcv =~ /PRIVMSG $unick :(programmazione|perl|python|php|c\+\+|java|assembly)/) {
  94.                         priv("Programmazione rulez ^^");
  95.                 }
  96.                 else {
  97.                         chan("Programmazione rulez ^^");
  98.                 }
  99.     }
  100.        
  101.         if ($rcv =~ /((W|w)indows|(B|b)ill (G|g)ates)/) {
  102.                 if ($rcv =~ /PRIVMSG $unick :((W|w)indows|(B|b)ill (G|g)ates)/) {
  103.                         priv("Passa a Linux =)");
  104.                 }
  105.                 else {
  106.                         chan("Linux r0x4!");
  107.                 }
  108.     }
  109.        
  110.         if ($rcv =~ /!versione/) {
  111.                 if ($rcv =~ /PRIVMSG $unick :(!versione)/) {
  112.                         priv("Versione ~ $version");
  113.                 }
  114.                 else {
  115.                         chan("Versione ~ $version");
  116.                 }
  117.     }
  118.        
  119.         if ($rcv =~ /PRIVMSG $unick :!milw0rm (.+)/) {
  120.        
  121.                 $hash = $1;
  122.                 $milw0rm = "http://www.milw0rm.com/cracker/search.php";
  123.                 $agent = LWP::UserAgent->new();
  124.                 $head = [
  125.                         hash   => "$hash",
  126.                         Submit => "Submit"
  127.                                 ];
  128.                
  129.                 $req = $agent -> post($milw0rm, $head);
  130.                 if($req) {
  131.                         if($req -> content =~ /<\/TD><TD align="middle" nowrap="nowrap" width=90>(.*?)<\/TD>/) {
  132.                                 $passw = $1;
  133.                                 priv("Password trovata ~ $passw");
  134.                         }
  135.                         else {
  136.                                 priv("Password non trovata =(");
  137.                         }
  138.                 }
  139.     }
  140.        
  141.         if ($rcv =~ /KICK $chan $unick/) {
  142.                 if ($autojoin == 1) {
  143.                         print $sock "JOIN $chan\r\n";
  144.                 }
  145.     }
  146.        
  147.         if ($rcv =~ /PRIVMSG $unick :!op (.*?) $psw/) {
  148.                 op("$1");
  149.         }
  150.        
  151.         if ($rcv =~ /PRIVMSG $unick :!deop (.*?) $psw/) {
  152.                 deop("$1");
  153.         }
  154.        
  155.         if ($rcv =~ /PRIVMSG $unick :!esci $unick $psw/) {
  156.                 chan("Bye Bye!");
  157.                 exit();
  158.     }
  159.        
  160.         if ($rcv =~ /^PING :(.*?)/) {
  161.                 print $sock "PONG :$1";
  162.     }
  163.  
  164. }
  165.  
  166. # Subroutines ^^
  167. sub start() {
  168.         print $sock "NICK $unick\r\n";
  169.         print $sock "USER $unick 8 * :$bot\r\n";
  170.         print $sock "JOIN $chan\r\n";
  171. }
  172.  
  173. sub chan() {
  174.         my $mes = shift;
  175.         print $sock "PRIVMSG $chan :$mes\r\n";
  176. }
  177.  
  178. sub priv() {
  179.         my $mes = shift;
  180.         print $sock "PRIVMSG $nick :$mes\r\n";
  181. }
  182.  
  183. sub kick() {
  184.         print $sock "KICK $chan $nick\r\n";
  185. }
  186.  
  187. sub op() {
  188.         my $whop = shift;
  189.         print $sock "MODE $chan +o $whop\r\n";
  190. }
  191. sub deop() {
  192.         my $whop = shift;
  193.         print $sock "MODE $chan -o $whop\r\n";
  194. }
  195.  
  196. sub exit() {
  197.         print $sock "QUIT \r\n";
  198. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement