[Perl] DH ScreenShoter 0.1

Iniciado por BigBear, Octubre 04, 2013, 02:31:25 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Un simple script en perl para sacar un screenshot y subirlo a imageshack.

El codigo :

Código: perl

#!usr/bin/perl
#DH ScreenShoter 0.1
#Coded By Doddy H
#ppm install http://www.bribes.org/perl/ppm/Win32-GuiTest.ppd
#ppm install http://www.bribes.org/perl/ppm/Crypt-SSLeay.ppd

use Win32::GuiTest
  qw(GetAsyncKeyState GetForegroundWindow GetWindowText FindWindowLike SetForegroundWindow SendKeys);
use Win32::Clipboard;
use Time::HiRes "usleep";
use LWP::UserAgent;

my $nave = LWP::UserAgent->new;
$nave->agent(
"Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12"
);
$nave->timeout(5);

$|++;

my $time;
my $nombrefecha;

my ( $dia, $mes, $anio, $hora, $minutos, $segundos ) = agarrate_la_hora();

$nombrefecha =
    $dia . "_"
  . $mes . "_"
  . $anio . "_"
  . $hora . "_"
  . $minutos . "_"
  . $segundos;

my $se = "captures";

unless ( -d $se ) {
    mkdir( $se, "777" );
}

chdir $se;

head();

print "[+] Save Photo with this name : ";
chomp( my $filename = <stdin> );

print "\n[+] Get Photo in this time : ";
chomp( my $timeop = <stdin> );

print "\n[+] Open photo after taking it ? : ";
chomp( my $load_image = <stdin> );

print "\n[+] Upload image to ImageShack ? : ";
chomp( my $imageshack = <stdin> );

print "\n[+] Taking shot in ";

if ( $timeop eq "" ) {
    $time = 1;
}
else {
    $time = $timeop;
}

for my $num ( reverse 1 .. $time ) {
    print "$num.. ";
    sleep 1;
}

if ( $filename eq "" ) {

    capturar_pantalla( $nombrefecha . ".jpg" );

}
else {

    capturar_pantalla($filename);

}

print "\a\a\a";
print "\n\n[+] Photo Taken\n";

if ( $imageshack =~ /y/ ) {
    if ( $filename eq "" ) {
        subirarchivo( $nombrefecha . ".jpg" );
    }
    else {
        subirarchivo($filename);
    }
}

if ( $load_image =~ /y/ ) {
    if ( $filename eq "" ) {
        system( $nombrefecha. ".jpg" );
    }
    else {
        system($filename);
    }
}

copyright();

## Functions

sub subirarchivo {

    my $your_key = "fuck you";    #Your API Key

    print "\n[+] Uploading ...\n";

    my $code = $nave->post(
        "https://post.imageshack.us/upload_api.php",
        Content_Type => "form-data",
        Content      => [
            key        => $your_key,
            fileupload => [ $_[0] ],
            format     => "json"
        ]
    )->content;

    if ( $code =~ /"image_link":"(.*?)"/ ) {
        print "\n[+] Link : " . $1 . "\n";
    }
    else {
        print "\n[-] Error uploading the image\n";
    }
}

sub head {

    my @logo = (
        "#=============================================#", "\n",
        "#             DH ScreenShoter 0.1             #", "\n",
        "#---------------------------------------------#", "\n",
        "# Written By Doddy H                          #", "\n",
        "# Email: lepuke[at]hotmail[com]               #", "\n",
        "# Website: doddyhackman.webcindario.com       #", "\n",
        "#---------------------------------------------#", "\n",
        "# The End ?                                   #", "\n",
        "#=============================================#", "\n"
    );

    print "\n";

    marquesina(@logo);

    print "\n\n";

}

sub copyright {

    my @fin = ("-- == (C) Doddy Hackman 2012 == --");

    print "\n\n";
    marquesina(@fin);
    print "\n\n";

    <stdin>;

    exit(1);

}

sub capturar_pantalla {

    SendKeys("%{PRTSCR}");

    my $a = Win32::Clipboard::GetBitmap();

    open( FOTO, ">" . $_[0] );
    binmode(FOTO);
    print FOTO $a;
    close FOTO;

}

sub marquesina {

    #Effect based in the exploits by Jafer Al Zidjali

    my @logo = @_;

    my $car = "|";

    for my $uno (@logo) {
        for my $dos ( split //, $uno ) {

            $|++;

            if ( $car eq "|" ) {
                mostrar( "\b" . $dos . $car, "/" );
            }
            elsif ( $car eq "/" ) {
                mostrar( "\b" . $dos . $car, "-" );
            }
            elsif ( $car eq "-" ) {
                mostrar( "\b" . $dos . $car, "\\" );
            }
            else {
                mostrar( "\b" . $dos . $car, "|" );
            }
            usleep(40_000);
        }
        print "\b ";
    }

    sub mostrar {
        print $_[0];
        $car = $_[1];
    }

}

sub agarrate_la_hora {

    my ( $a, $b, $c, $d, $e, $f, $g, $h, $i ) = localtime(time);

    $f += 1900;
    $e++;

    return (
        $d, $e, $f, $c, $b, $a

    );

}

## The End ?

muy buen aporte, gracias por publicar tu código para que lo podamos apreciar todos :)

ultimamente hay una fiebre por hacer este tipo de aplicación y mucha gente está haciendo un código para cumplir esta función.

aunque siempre es bueno ver alternativas.

un saludo :)