#!/usr/bin/perl -w
# Example 2-1: scan_ip_range.pl
# Excerpted from 'Internet Forensics' by Robert Jones
# Published 2005 by O'Reilly Media (ISBN 0-596-10006-X)
die "Usage: $0 <start IP addr> <end IP addr>\n" unless @ARGV == 2;
my $start_dec = dotted_quad_to_decimal($ARGV[0]);
my $end_dec = dotted_quad_to_decimal($ARGV[1]);
for(my $i=$start_dec; $i<=$end_dec; $i++) {
my $i_ip = decimal_to_dotted_quad($i);
my $hostname = `dig +short -x $i_ip`;
printf "%-15s %s", $i_ip, $hostname;
}
sub dotted_quad_to_decimal {
my @fields = split /\./, shift;
($fields[0] * 16777216) + ($fields[1] * 65536) +
($fields[2] * 256) + $fields[3];
}
sub decimal_to_dotted_quad {
my $decimal = shift;
my $factor = 16777216;
my @quad = ();
for(my $i=0; $i<4; $i++) {
$quad[$i] = int($decimal / $factor);
$decimal -= $quad[$i] * $factor;
$factor /= 256;
}
join ".", @quad;
}
|