2008-09-17 11 views

Respuesta

1

Puede haber una manera más fácil, pero para IPv4, si puede realizar búsquedas DNS normales, siempre puede construir la consulta inversa usted mismo. Para la dirección IPv4 A.B.C.D, busque cualquier registro PTR en D.C.B.A.in-addr.arpa. Para IPv6, tomas los 128 bits hexadecimales y los volteas y anexas ipv6.arpa. y haz lo mismo

1

Si gethostbyaddr no se ajusta a sus necesidades, Net::DNS es más flexible.

13
use Socket; 
$iaddr = inet_aton("127.0.0.1"); # or whatever address 
$name = gethostbyaddr($iaddr, AF_INET); 
19

Si necesita información más detallada DNS utilizan el módulo Net::DNS, aquí es un ejemplo:

use Net::DNS; 
my $res = Net::DNS::Resolver->new; 

# create the reverse lookup DNS name (note that the octets in the IP address need to be reversed). 
my $IP = "209.85.173.103"; 
my $target_IP = join('.', reverse split(/\./, $IP)).".in-addr.arpa"; 

my $query = $res->query("$target_IP", "PTR"); 

if ($query) { 
    foreach my $rr ($query->answer) { 
    next unless $rr->type eq "PTR"; 
    print $rr->rdatastr, "\n"; 
    } 
} else { 
    warn "query failed: ", $res->errorstring, "\n"; 
} 

fuente original EliteHackers.info, más detalles allí también.

0

Esto podría ser útil ...

$ip = "XXX.XXX.XXX.XXX" # IPV4 address. 
my @numbers = split (/\./, $ip); 
if (scalar(@numbers) != 4) 
{ 
    print "$ip is not a valid IP address.\n"; 
    next; 
} 
my $ip_addr = pack("C4", @numbers); 
# First element of the array returned by gethostbyaddr is host name. 
my ($name) = (gethostbyaddr($ip_addr, 2))[0]; 
2

de una sola línea:

perl -MSocket -E 'say scalar gethostbyaddr(inet_aton("79.81.152.79"), AF_INET)' 
3
perl -MSocket -E 'say scalar gethostbyaddr(inet_aton("69.89.27.250"), AF_INET)' 

Devuelve: No encontraste fin de cadena "'" en cualquier lugar antes de EF en -e línea 1.

perl -MSocket -E "say scalar gethostbyaddr(inet_aton(\"69.89.27.250\"), AF_INET)" 

Devuelve: box250.bluehost.com

tengo que cambiar la línea a utilizar comillas dobles y luego escapar por las comillas alrededor de la dirección IP

+1

Eso es probablemente porque usted está utilizando cmd.exe en Windows . – spacebat