Port Scanner con Perl
Leyendo el sitio http://www.gnucitizen.org/blog/agile-hacking-a-homegrown-telnet-based-portscanner me encontre con un script realizado en perl el cual tiene objetivo mediante el uso del modulo "IO::Socket::INET" realizar un scan de ports tcp de una direccion ip.
El resultado del mismo es muy elemental pero nos pueden sacar de muchos apuros.
use IO::Socket;
my ($target,$remote,$results,$port,@ports);
unless (@ARGV> 0) { die "usage: $0 [ip]" }
$target = shift(@ARGV);
for ($port = 0; $port<65536; $port++)
{
$remote = IO::Socket::INET->new(
Proto => "tcp",
PeerAddr => $target,
PeerPort => $port,
);
if ($remote) {print "$port is open\n" };
}
Uso: perl script.pl ip
Tomar el output de un switch cisco con Perl
Les dejo un pequeño script el cual tiene como objetivo tomar la salida del comando "show version" de un equipo Cisco y guardarlo en un log.
use strict;
use Net::Telnet::Cisco;
use POSIX qw(strftime);
my $hora= strftime("%Y-%m-%d", localtime);
my $session = Net::Telnet::Cisco->new(Host => 1.1.1.1);
$session->login('user', 'password');
# Ejecuta el comando show version
my @output = $session->cmd('show version');
open (F,">> log-cisco.txt");
print F "---- $hora ----\n";
print F "@output";
print F "---- ----";
$session->close;
close (F);
Saludos
Buscar en google argentina usando perl
Les dejo un script el cual tiene como funcion buscar en google.com.ar el string que ingresemos.
Como encriptar y desencriptar archivos usando Perl
Les dejo 2 scripts los cuales gentilmente fueron dados por Norther de perlenespanol.baboonsoftware.com.
Script Encryptf: Tiene como funcion comprimir una carpeta utilizando TAR, luego nos genera un archivo encriptado del mismo y por ultimo nos elimina el archivo comprimido que no esta encriptado.
Script Decrypt: Con este script vamos a desencriptar el archivo que creamos con el script anterior.
Encryptf ()
my $error = 1;
my $aux = $ARGV[0];
$aux =~ s/\W//g;
my $encript = "$aux.tar";
if (-d $ARGV[0]) {
system("tar -cvvf $encript $ARGV[0]") || ($error = 0);
if($error =~ 0) {
system("gpg -ac --no-options $encript");
if($? != 0) {
system("rm $encript");
exit 1;
}
system("rm -r $ARGV[0]");
system("rm -r $encript");
} else {
print "Se ha abortado debido a un error.\n";
}
} else {
print "No es una carpeta!!!\n";
}
Decryptf ()
Comprobar Hash MD5 con perl
Con este script vamos a poder introducir por consola el nombre de un archivo y como resultado vamos obtener el HASH del mismo.
root@tux2:/tmp# perl md5.pl /etc/passwd
b5066f11ad12b18949eec843634ae9fe /etc/passwd
root@tux2:/tmp# perl md5.pl
Uso: md5.pl archivo
archivo: /etc/passwd por ejemplo
Script para cifrar archivos usando gnupg
Les dejo un script el cual tiene como funcion cifrar todos los archivos de un directorio, incluyendo los que esta alojando en subdirectorios.
Cabe aclarar que esta realizado para plataformas Windows y para que funcione debemos tener instalada la aplicación GnuPG.
GnuPg -> http://www.gnupg.org/(es)/index.html
El script pertenece al usuario Gasfed. =D
#
# GasFed Nov 2006
my $gpg='C:\Program Files\GNU\GnuPG\gpg.exe';
########### you probably don't need to edit below this line. ###########
use Cwd;
use Getopt::Std;
if ( $#ARGV <1 ) {
print "\nUso: perl $0 DirOrigen DirDestino\n\n";
print " DirOrigen Directorio donde se encuentran las archivos a ser encriptados\n";
print " DirDestino Directorio donde se guardaran los arrchivos encriptados\n";
exit();
}
my $src=$ARGV[0];
my $dst=$ARGV[1];
if ( -x $gpg ) {
print "\nEncriptando..\n";
print "Por favor espere, esto puede tardar unos minutos..\n";
$home=getcwd;
&encript($src, $dst);
chdir($home);
print "\nDone!\n\n";
}
sub encript ()
{
my $src = shift;
my $dst = shift;
(-d $src) or die "No puedo abrir el directorio $src\n";
(-d $dst) or mkdir($dst) or die "No puedo abrir el directorio $dst\n";
$base = getcwd;
chdir("$dst");
$dst=getcwd;
chdir("$base");
opendir( DIR, "$src" );
@contents = readdir(DIR);
closedir(DIR);
chdir("$src");
$src = getcwd;
$src =~ s/\//\\/g;
$dst =~ s/\//\\/g;
# No hidden files and ".." directories:
@contents = grep {!/^\./} @contents;
# Get directories:
my @dirs = grep {-d} @contents;
# Get files:
my @files = grep {-f} @contents;
# Get images:
if (@dirs==0 and @files==0)
{
rmdir($dst);
} else {
foreach my $f (sort(@files)) {
$ejecutar=("\"$gpg\" --yes --output \"$dst\\$f.gpg\" --recipient seguridad --encrypt \"$src\\$f\"");
$status=system($ejecutar);
if ($status != 0) { print "$ejecutar\n"; }
}
foreach my $d (sort(@dirs)) {
&encript("$src\\$d", "$dst\\$d");
}
}
}
Tengamos en cuenta que el script usa nuestra clave privada para realizar el procedimiento de cifrado.
Les dejo un link donde van a encontrar el manual de la aplicación:
http://webber.dewinter.com/gnupg_howto/spanish/index.html
Envio de mail con archivo adjunto usando Perl
Este script tiene como objetivo el envío de mails con archivos adjuntos.
use MIME::Lite;
# Envío de correo
$msg = MIME::Lite->new(
From =>'micuenta@dominio.com.ar',
To =>'lacuentadel@destinario.com.ar',
Subject =>'Test',
Type =>'multipart/mixed'
);
$msg->attach(
Type =>'TEXT',
Data =>"Cuerpo del mensaje"
);
$msg->attach(
Type =>'text/html',
Path =>'prueba.txt',
Filename =>'nuevo_nombre_de_prueba.txt',
Disposition => 'attachment'
);
$msg->send('smtp', 'servidor');
Como hacer PING usando Perl
Les dejo un script el cual nos sirve para hacer un ping a un host y comprobar si este responde.
use Net::Ping;
$servidor = "127.0.0.1";
$p = Net::Ping->new();
print "$El servidor responde.\n" if $p->ping($servidor);
$p->close();
Gracias nuevamente al foro de perl por su ayuda.
Listar archivos con menos de 1KB usando Perl
Les dejo un pequeño script, el cual tiene como funcion listar todos los archivos de un directorio que ocupen menos de 1 KB.
Gracias al foro de : http://perlenespanol.baboonsoftware.com/ por la ayuda.
Como conectarnos a varios servidores por ssh con Perl
Les dejo un script el cual tiene como utilidad poder conectarnos a varios servidores mediante el protocolo "SSH" , ejecutar un comando y guardar el resultado en un archivo. Debemos tener en cuenta que en todos los servidores vamos a conectarnos con el mismo usuario de logueo, el cual se realiza mediante el uso de clave publica / privada.
use Net::SSH qw(sshopen2);
my $user = "operador";
my $cmd = "ls";
# Archivo donde guardamos el output del comando
open LS,">ls.txt";
# Archivo que contiene las direcciones IP's de los servidores
open DATOS,"ips.lst";
while ( $linea = <DATOS> ) {
# Guardamos la direccion IP en el archivo de salida
print LS $linea;
# Quitamos el retorno de carro final
chomp($linea);
# Ejecutamos el proceso
sshopen2("$user\@$linea", *READER, *WRITER, $cmd) || die "ssh: $!";
# Leemos la salida y la grabamos
while ( <READER> ) {
print LS $_;
}
}
Gracias al foro del sitio "perlenespanol.baboonsoftware.com" por la ayuda








