#!/usr/bin/perl use strict; use threads; use IO::Socket::INET; use LWP::UserAgent; my $ua = LWP::UserAgent->new(agent => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.5'); push @{$ua->requests_redirectable}, "POST"; my($Sock,$Line,$Nick); my(@IRCUnparsed,@IRCParsed); my(%BossUsers); ############################################ my $Server = $ARGV[0] || "127.0.0.1"; my $Channel = $ARGV[1] || qw(#wtf); my $Port = $ARGV[2] || qw(6667); my $NickName = "botbot"; my $Password = qw(123456); ############################################ $Sock = new IO::Socket::INET(PeerAddr=>"$Server:$Port",Proto=>"tcp"); $Sock->autoflush(); die("Couldn't connect: $!\n") unless $Sock; &SendNick(); &send_raw("USER Botty Bot Bott :Bot bot"); while(1){ $Line = <$Sock>; if(!$Sock){print("[-] Sock died\n");exit(0);} @IRCUnparsed = split(/\r\n/,&tchomp($Line)); @IRCParsed = split(/ /,$IRCUnparsed[0]); print($IRCUnparsed[0] . "\n"); if($IRCParsed[0] eq 'PING'){ &send_raw("PONG " . $IRCParsed[1]); } elsif($IRCParsed[1] eq '001'){ &JoinChan; } elsif(($IRCParsed[1] eq '433') || ($IRCParsed[1] eq "436")){ #&SendNick(); #&JoinChan(); } elsif($IRCParsed[1] eq '475'){ &send_raw("QUIT"); } elsif($IRCParsed[1] eq 'KICK'){ &JoinChan; } if(($IRCUnparsed[0] =~ m/^:(.+)!(.+)\@(.+) PRIVMSG (.+) :(.+)/) || ($IRCUnparsed[0] =~ m/^:(.+)!~(.+)\@(.+) PRIVMSG (.+) :/)){ my($uNick,$uID,$uHost) = ($1,$2,$3); if($5 =~ m/quit/){ &send_raw("QUIT"); die(); } if($4 eq $Channel){ if($IRCParsed[3] eq ':.web'){ my $URL = $IRCParsed[4]; my $Thr = threads->new(\&Web,$URL); } #chan messages } elsif($4 eq $Nick){ #private messages if($BossUsers{$uNick} == 0){ for(0..@IRCParsed){ #print($_ . " -> " . $IRCParsed[$_] . "\n"); } if($IRCParsed[3] eq ':.login'){ if($IRCParsed[4] eq $Password){ &send_msg($uNick,"Password correct, logged in"); $BossUsers{$uNick} = 1; } else{ &send_msg($uNick,"Password incorrect"); $BossUsers{$uNick} = 0; } } } elsif($BossUsers{$uNick} => 1){ if($IRCParsed[3] eq ':.logout'){ $BossUsers{$uNick} = 0; &send_msg($uNick,"Logged out"); } elsif($IRCParsed[3] eq ":.quit"){ &SendQuit(); } } } $IRCParsed[0] = $1; } } sub Web($) { &send_msg($Channel,"WEB FUNCTION THREAD STARTED"); my($URL,$Request,$Requested,$Content) = @_; $Request = HTTP::Request->new(GET => $URL); $Requested = $ua->request($Request); if($Requested->is_success){ $Content = $Requested->content; if($Content =~ m/