Un lugar sin fin

programacion

Perleando con - comprobar acceso a urls (blacklists)

Escrito por unlugarsinfin 03-03-2009 en General. Comentarios (0)

El siguiente código perl, es un script sencillo que realiza peticiones de forma automática a las urls contenidas en el fichero ‘blacklist.txt’ con el objetivo de determinar si el Proxy o cualquier otro servidor de filtrado permite el acceso (‘permitidos.txt’) o lo deniega (‘denegados.txt’) o simplemente no llega a determinada url (‘inaccesibles.txt’).

 

Ideal para realizar una pequeña auditoría de la permisividad de navegación a ciertas urls que deberían estar bloqueadas en listas negras o blacklists.

 

#!/usr/bin/perl -w

 

use strict;

use warnings;

use LWP::Simple;

use LWP::UserAgent;

use CGI::Carp qw(fatalsToBrowser);

use HTTP::Request;

 

# Construye el navegador

my $browser = LWP::UserAgent->new;

$browser->env_proxy; # Utiliza la variable HTTP_PROXY

$browser->agent("Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)");

 

# abre/crea ficheros

open(FILE_R,"blacklist.txt");

open(PERMITIDOS,'>permitidos.txt');

open(DENEGADOS,'>denegados.txt');

open(INACCESIBLES,'>inaccesibles.txt');

 

# mensajes desde el proxy -> si en su lugar se desea buscar la cadena en el content

my $inaccesible = "The host was not found";

my $denegado = "The ISA Server denied the specified Uniform Resource Locator";

 

foreach my $url (<FILE_R>)

{

                chop($url);

                my $req = HTTP::Request->new(GET => $url);

                my $response = $browser->request($req);

                my $estado = $response->status_line;

                my $content = $response->content();

               

                print "$estado\n";

                #print $content;

               

                if($estado =~ m/$denegado/i) {

                               print DENEGADOS "$url\n";

    }

                if($estado =~ m/200/i) {

                               print PERMITIDOS "$url\n";

    }

                if($estado =~ m/$inaccesible/i) {

                               print INACCESIBLES "$url\n";

    }

               

}

close FILE_R;

close PERMITIDOS;

close DENEGADOS;

close INACCESIBLES;

 

Perleando con - buscar y borrar ficheros

Escrito por unlugarsinfin 24-02-2009 en General. Comentarios (0)

A continuación, un pequeño script en Perl que 1/ busca y BORRA en el directorio especificado 2/ los nombres de ficheros según la cadena de búsqueda introducida y 3/ con un tamaño superior al especificado.

 

Todo ello a través de parámetros en la línea de comandos y ‘globbeando’ el texto para utilizar wildcards o asteriscos.

 

v.0.01 - Uso: borra_dat.exe directorio texto tamanio(kb)

 

Espero que lo disfruten:

 

#!/usr/bin/perl

 

use strict;

use File::Find;

use File::Glob qw(:glob);

 

my $uso='borra_dat.exe directorio texto tamanio(kb) ';

my $version='0.01';

 

if ( @ARGV < 3) {

print "v.$version - Uso: $uso\n";

exit 0;

}

print "Ficheros borrados: \n";

 

my $directorio = $ARGV[0];

 

my $texto = glob2pat($ARGV[1]);

 

sub glob2pat {

    my $globstr = $ARGV[1];

    my %patmap = (

        '*' => '.*',

        '?' => '.',

        '[' => '[',

        ']' => ']',

    );

    $globstr =~ s{(.)} { $patmap{$1} || "\Q$1" }ge;

    return '^' . $globstr . '$';

}

 

my $tamano = $ARGV[2] * 1024;

 

find(\&imprimir_archivo_dat, $directorio);

 

 

sub imprimir_archivo_dat{

my $elemento = $_;

#if(-f $elemento && $elemento =~ /\.dat$/ && -s $elemento < $ARGV[2] ){

 

if(-f $elemento && $elemento =~ $texto && -s $elemento > $ARGV[2] ){

print "$File::Find::name\n";

unlink $elemento;

}

}

Cerrando procesos remotamente

Escrito por unlugarsinfin 23-02-2009 en General. Comentarios (0)
Muchas veces, los administradores de sistemas tienen que cerrar procesos en los equipos de sus usuarios de forma remota y por diversas razones. 

Un ejemplo claro es cuando necesitas salvaguardar las carpetas personales de Outlook y están los “típicos” que se dejan encendido el ordenador con todo abierto.

 

Bien, la forma más fina sería a través de agentes de backup residentes especializados en estas tareas como, creo recordar, el de ficheros abiertos de Veritas.

 

Pero si no tenemos licencia, existen algunas soluciones y un ejemplo válido, si usar el tan ‘agresivo’ pskill, sería el siguiente.

 

Creamos un vbs:

 

Option Explicit

 

Dim objProcesses, objProcess

 

Set objProcesses = GetObject("WinMgmts:root/CIMV2").ExecQuery( _

  "SELECT * FROM Win32_Process WHERE Name='Outlook.exe o loquesea.exe'")

 

For Each objProcess In objProcesses

  objProcess.Terminate

Next

 

Después lo pasamos a ejecutable con una de las mil herramientas que encontraremos en Internet, por ejemplo http://www.soft32.com/download_194850.html

 

Y por último, lo programamos a través del programador de tareas de los Güindous de nuestros usuarios o lo ejecutamos remotamente, digamos por ejemplo J con psexec.exe:

 

>psexec.exe \\equipo -c CloseOutlook.exe

 

Y ya está, fácil y sencillo.

Perleando con - pruebas del servidor de correo....

Escrito por unlugarsinfin 06-02-2009 en General. Comentarios (0)
Script para pruebas de recepcion de correo, normalmente lo uso para pruebas de stress
=====================================================================================

#!/usr/bin/perl
use MIME::Lite;
$to = $ARGV[0];
$msg = new MIME::Lite
From =>'midir@dominioorigen',
To =>$to,
Subject =>'Mail para prueba de stress',
Type =>'multipart/mixed';

attach $msg
Type =>'TEXT',
Data =>"

Aqui cualquier mensaje
";
$msg->send;





Script para probar que esta detectando correctamente correo spam
================================================================

#!/usr/bin/perl
use MIME::Lite;
$to = $ARGV[0];
$msg = new MIME::Lite
From =>'direccion@dominioorigen',
To =>$to,
Subject =>'Prueba para spam',
Type =>'multipart/mixed';

attach $msg
Type =>'TEXT',
Data =>"


XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X



";
$msg->send;



Script para probar que esta detectando correctamente correo con un adjunto con virus (clamav)
=============================================================================================
!/usr/bin/perl
use MIME::Lite;
$to = $ARGV[0];

### Adjust subject and body message
my $subject = 'A message with 2 parts ...';
my $message_body = "Here's the attachment file(s) you wanted";

### Adjust the filenames
my $my_file = '/home/marce/clam.cab';

### Create the multipart container
$msg = MIME::Lite->new (
From => 'midir@dominoorigen',
To => $to,
Subject => $subject,
Type =>'multipart/mixed'
) or die "Error creating multipart container: $!\n";

### Add the text message part
$msg->attach (
Type => 'TEXT',
Data => $message_body
) or die "Error adding the text message part: $!\n";

### Add the file
$msg->attach (
Type => 'image/gif',
Path => $my_file,
# Filename => $your_file_gif,
Disposition => 'attachment'
) or die "Error adding $file_gif: $!\n";

### Send the Message
MIME::Lite->send('smtp', $mail_host, Timeout=>60);
$msg->send;



NOTA:

En todos estos script se envia por argumento la direccion a quien sera enviado el mail.