#!/usr/bin/perl #Simple Open DNS scanner #Create a list DNS nameserver in a file, then save with file name ns.txt # #user~>head -5 ns.txt #167.205.50.5 #152.118.24.2 #167.205.23.1 #209.85.135.27 #152.118.24.8 #user~>perl scandns.pl #Using nameserver 167.205.50.5 #Using nameserver 152.118.24.2 #Using nameserver 167.205.23.1 #Using nameserver 209.85.135.27 #Using nameserver 152.118.24.8 #152.118.24.8 is Open DNS server #user~>cat open-ns.txt #152.118.24.8 #user~> # use Net::DNS; use strict; use POSIX; $|=1; my @ns; my $i; my $thost="milw0rm.com"; open(NS,"); for($i=0;$i<=$#ns;$i++){ my @nameserver = ($ns[$i]); my $r = Net::DNS::Resolver->new( nameservers => [@nameserver], debug => 0, udp_timeout => 3, tcp_timeout => 3, ); my $packet = Net::DNS::Packet->new($thost,'A','IN'); my $answer = $r->send($packet); #just a litle trying #print "Use nameserver : ".$ns[$i]." -> ". $r->errorstring." answer record = ".$answer->header->ancount."\n"; print "Using nameserver ".$ns[$i]."\n"; if($r->errorstring =~ m/NOERROR/){ #RFC 1035 #Change if you want to search DNS server which allow recursive query #if($answer->header->ra==1 && $answer->header->rd==1){ if($answer->header->ancount!=0){ #print $ns[$i]. " allows recursive query\n"; #open(ONS,">>recursive-ns.txt"); print $ns[$i]. " is Open DNS server\n"; open(ONS,">>open-ns.txt"); print ONS $ns[$i]."\n"; } } } # # Author : Ph03n1X / king_purba@yahoo.co.uk # http://kandangjamur.net #