Wikipeando

Port Scanner con Perl

Posteado en Programacion, Seguridad, Perl por situ el 13 de May de 2008

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 strict;
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

Posteado en Programacion, Perl por situ el 19 de April de 2008

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.

#!/usr/bin/perl
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

Posteado en Programacion, Perl por situ el 16 de April de 2008

Les dejo un script el cual tiene como funcion buscar en google.com.ar el string que ingresemos.

googlewiki.png

Como encriptar y desencriptar archivos usando Perl

Posteado en Programacion, Perl por situ el 5 de December de 2007

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 ()

#!/usr/bin/perl

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 ()

#!/usr/bin/perl

my $fix = $ARGV[0];

$fix =~ s/\W.+/.tar/g;

if($ARGV[0] =~ /tar/ && $ARGV[0] =~ /asc/) {
        system("gpg --no-options $ARGV[0]");
       
        if($? != 0) {   
                exit 1;
        }
       
        system("tar -xvvf $fix");
        system("rm $fix");
        system("rm -r $ARGV[0]");
       
} else {
        print "No es una carpeta encriptada valida.\n";
}

Comprobar Hash MD5 con perl

Posteado en Programacion, Seguridad, Perl por situ el 6 de November de 2007

Con este script vamos a poder introducir por consola el nombre de un archivo y como resultado vamos obtener el HASH del mismo.

#!/usr/bin/perl
use Digest::MD5;
@ARGV or die "Uso: $0 archivo\narchivo: /etc/passwd por ejemplo\n";
my $file = $ARGV;
my $file= shift;
open(FILE, $file) or die "no se encuentra el archivo '$file': $!";
binmode(FILE);
print Digest::MD5->new->addfile(*FILE)->hexdigest, " $file\n";

Ej:
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

Posteado en Programacion, Seguridad, Perl por situ el 25 de October de 2007

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

#!/usr/bin/perl -w

#
# 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

Posteado en Programacion, Perl por situ el 25 de October de 2007

Este script tiene como objetivo el envío de mails con archivos adjuntos.

#!/usr/bin/perl

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

Posteado en Programacion, Perl por situ el 24 de October de 2007

Les dejo un script el cual nos sirve para hacer un ping a un host y comprobar si este responde.

#!/usr/bin/perl

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

Posteado en Programacion, Perl por situ el 24 de October de 2007

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.

#!/usr/bin/perl
## Lista archivos que ocupen menos de 1 kb
use strict;
use File::Find;

my $dir = '/home/operador';

find(\&imprimir_archivo_chico, $dir);

sub imprimir_archivo_chico{
my $elemento = $_;
print "$File::Find::name\n" if (-s $elemento <1024 && -f);
}

Como conectarnos a varios servidores por ssh con Perl

Posteado en Programacion, Perl por situ el 18 de September de 2007

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.

#!/usr/bin/perl
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 $_;
}
}

close(READER);
close(WRITER);
close(LS);
close (DATOS);

Gracias al foro del sitio "perlenespanol.baboonsoftware.com" por la ayuda

Next Page »