Jump to content
Aerosol

Using perl to grab IP addresses of multiple hostnames

Recommended Posts

Posted

Recently while conducting a vulnerability assessment for a rather large customer I was given a list of hostnames from around 20 domains culminating in a list of over 5000 targets that needed to go through the motions. Due to scale of the testing I needed to run the scans from several cloud nodes simultaneously to speed up the scanning. The other thing I needed to do was to extract all the IP addresses from the hostnames so as not to scan boxes multiple times when performing Port Scans for instance.

I had been playing with Perl for literally a couple of hours and decided to give writing my first Perl script a go in order to grab all the IP addresses from the list of hosts which I could then Unique and Sort to get the final list of target IP’s. I initially played with the idea of running ping commands or nslookups and then regex’ing the IP’s from there but I discovered a fantastic method called “gethostbyname” in Perl.

After some trial and error I ended up with this little gem that literally shaved days off this vulnerability assessment (5000+ hostnames ended up being less than 1000 IP addresses).

#!/usr/bin/perl

use Socket;

# Print usage when no hosts file is specified
if ($ARGV[0] eq '') {
print "n Usage: ".$0." <hosts_file>nn";
print " e.g: ".$0." hosts.txtnn";
}

# Open file containing list of Hostnames
open(FILE, $ARGV[0]);
@Hosts) {
chomp($hostname);
if($hostname) {
$ip = gethostbyname($hostname);
if($ip) {
printf "%sn" , $hostname.":".inet_ntoa($ip);
undef $ip;
} else {
# Print 0.0.0.0 for unresolved Hostnames
printf "%sn" , $hostname.":0.0.0.0";
undef $ip;
}
}
}

It works by taking each hostname and running the “gethostbyname” method on it to print out the original hostname and IP address separated by a “:” for easy regex or to use delimited import in Excel. Feel free to change the delimiter if you so wish. The other function I added was to set an IP address of “0.0.0.0” whenever a hostname could not be resolved.

Here’s what it looks like in action.

6CAapmm.png

If you want to import the output into another program you can just append “ > output.csv”

Credit's to: norsec0de

References:

Source

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...