#!/usr/bin/perl # # Image/Script Ninja by Pete # Takes URLs and prints the locations of images (and optionally downloads the # images) and the scripts found on the pages. 'isninja.pl --help' for more information. # Use it while you can, for tomorrow it will be illegal. print "Starting Image/Script Ninja...\n\n\n"; # Make sure the user supplied the correct arguments and didn't specify '--help'. if ( @ARGV < 1 || "@ARGV" =~ /--help/ ) { print "Usage:\nisninja.pl [--getimages] url1 [url2, url3...]\n"; print "URL(s) must end in a filename (*.html, etc.) or a trailing slash.\n"; print "--getimages downloads the image instead of only printing its URL.\n"; exit; } # See if user wanted to save the images if ( "@ARGV" =~ /--getimages/ ) { $getimages = 1; } else { $getimages = 0; } # Go through each URL for ( $loop = 0 ; $loop < @ARGV ; $loop++ ) { # Make sure it's not the argument! if ( $ARGV[$loop] eq "--getimages" ) { next; } # Grab the file @file = `wget $ARGV[$loop] --output-document=-`; # To keep everything seperate print "\n\nResults from $ARGV[$loop]...\n"; $scrnum = 0; $imgnum = 0; # Check each line for ( $line = 0 ; $line < @file ; $line++ ) { # Is there an image? if ( $file[$line] =~ /]/, $file[$line] ); for ( $loop2 = 0 ; $loop2 < @fs ; $loop2++ ) { if ( $fs[$loop2] =~ /scr/i ) { @top = split( /\"/, $fs[$loop2] ); for ( $loop3 = 1 ; $top[ $loop3 - 1 ] !~ /src/i ; $loop3++ ) { ; } $tmp = $ARGV[$loop]; $tmp2 = chop($tmp); while ( $tmp2 ne "/" ) { $tmp2 = chop($tmp); } $imgurl = $tmp . '/' . $top[$loop3]; $imgnum++; print "Image #$imgnum; $imgurl\n"; if ($getimages) { system("wget $imgurl"); } } } } # Is there a script? if ( $file[$line] =~ / $scrnum++; print "===Script #$scrnum===\n"; # The nested stuff is here in case anyone uses a script # to print otu another script or something. $nested = 0; while ( $line < @file ) { print $file[$line]; if ( $file[$line] =~ /