#!/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; }