code_junkie

Reverse DNS lookup in perl

Nov 10th, 2011
546
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. use Net::DNS;
  2. my $res = Net::DNS::Resolver->new;
  3.  
  4. # create the reverse lookup DNS name (note that the octets in the IP address need to be reversed).
  5. my $IP = "209.85.173.103";
  6. my $target_IP = join('.', reverse split(/./, $IP)).".in-addr.arpa";
  7.  
  8. my $query = $res->query("$target_IP", "PTR");
  9.  
  10. if ($query) {
  11. foreach my $rr ($query->answer) {
  12. next unless $rr->type eq "PTR";
  13. print $rr->rdatastr, "n";
  14. }
  15. } else {
  16. warn "query failed: ", $res->errorstring, "n";
  17. }
  18.  
  19. use Socket;
  20. $iaddr = inet_aton("127.0.0.1"); # or whatever address
  21. $name = gethostbyaddr($iaddr, AF_INET);
  22.  
  23. perl -MSocket -E 'say scalar gethostbyaddr(inet_aton("79.81.152.79"), AF_INET)'
  24.  
  25. $ip = "XXX.XXX.XXX.XXX" # IPV4 address.
  26. my @numbers = split (/./, $ip);
  27. if (scalar(@numbers) != 4)
  28. {
  29. print "$ip is not a valid IP address.n";
  30. next;
  31. }
  32. my $ip_addr = pack("C4", @numbers);
  33. # First element of the array returned by gethostbyaddr is host name.
  34. my ($name) = (gethostbyaddr($ip_addr, 2))[0];
Add Comment
Please, Sign In to add comment