#!/usr/bin/perl
# girex netlog image grabber
use LWP::UserAgent;
use HTTP::Cookies;
use Digest::MD5 qw(md5 md5_hex md5_base64);
$lwp = new LWP::UserAgent or die;
$cookie_jar = new HTTP::Cookies or die;
$lwp->cookie_jar( $cookie_jar );
usage unless @ARGV > 1;
$user = shift;
$pass = shift;
$target = ($ARGV[0]) ? $ARGV[0] : $user;
try_login() or die "[-] Credenziali errate\n";
mkdir( $target ) or die $!;
chdir( $target ) or die $!;
status('Creata directory', $target);
status('GET', "http://it.netlog.com/${target}/photo");
$res = $lwp->get("http://it.netlog.com/${target}/photo");
if($res->content =~ m{
Foto (\d+)
})
{
$number = $1;
$i = 1;
}
status('Trovate', $number, "immagini\n\n");
do {
$res = $lwp->get("http://it.netlog.com/${target}/photo/&page=${i}");
foreach $line(split("\n", $res->content))
{
if($line =~ m{src="http://it.netlogstatic.com/p/tt/(.+)\.(\w+)" alt="" />})
{
$regex = "http://it.netlogstatic.com/p/oo/${1}.${2}";
push(@paths, $regex) if not in_array($regex);
push(@ext, $2);
}
}
$i++;
} while (scalar(@paths) < $number);
for($i = 0; $i < scalar(@paths); $i++)
{
print STDOUT "[+] Download immagine numero $i \r"; $| = 1;
open(IMG, ">", "${i}.$ext[$i]"); binmode(IMG);
my $res = $lwp->get($paths[$i]); print IMG $res->content if $res->is_success;
close(IMG);
}
status("Immagini scaricate con successo\n");
sub try_login
{
my $res = $lwp->post( "http://it.netlog.com/go/login",
[ 'action' => 'login',
'target' => '%2F',
'remember' => 'YES',
'nickname' => $user,
'password' => $pass,
'login' => 'Accesso'] );
if($res->as_string =~ /Set-Cookie: ui_it=/)
{
status("Connesso su netlog con $user");
return 1;
}
else
{
return undef;
}
die("[-] Errore: ".$res->status_line."\n");
}
sub in_array
{
my $match = shift;
foreach $foo(@paths)
{
return 1 if($match eq $foo);
}
return undef;
}
sub status
{
print STDOUT "\n[+] " . join(' ', @_);
}
sub usage
{
print "\nusage: perl $0 [target]\n\n";
print "dove user e pass sono i vostri dati e [target]\n";
print "il nick della persona da cui scaricare le foto\n";
print "se omesso, scaricherà le foto del proprio account\n\n";
exit;
}