netlog mass image account grabber

Stato
Discussione chiusa ad ulteriori risposte.

girex

Utente Silver
11 Giugno 2007
39
3
1
66
Ho scritto questo semplice script in perl per recuperare in modo rapido tutte le mie immagini (perse) che avevo su netlog.

Ad ogni modo lo si può usare verso tutti gli account (che siano visibili al nostro account) anche perchè si sa che con netlog non è possibile fare destro salva immagne con nome.

Segnalatemi se qualcosa non va che l'ho fatto al volo:

Codice:
#!/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{<h2>Foto <span class="skinCounter big">(\d+)</span></h2>})
{
	$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 <user> <pass> [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;
}
 
Stato
Discussione chiusa ad ulteriori risposte.