2008-09-17 14 views

ответ

19

gethostbyaddr и подобные звонки. См.

1

Может быть проще, но для IPv4, если вы можете выполнять обычные поисковые запросы DNS, вы всегда можете самостоятельно построить обратный запрос. Для адреса IPv4 A.B.C.D найдите любые записи PTR в D.C.B.A.in-addr.arpa. Для IPv6 вы берете 128 гектаров и переворачиваете их и добавляете ipv6.arpa. и делать то же самое.

1

Если gethostbyaddr не соответствует вашим потребностям, Net::DNS является более гибким.

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

Если вам нужна более подробная информация DNS использовать Net::DNS модуль, вот пример:

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"; 
} 

Первоисточник EliteHackers.info, больше деталей там.

0

Это может быть полезно ...

$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

один вкладыш:

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)' 

Возвращает: Не можете найти строку терминатор "" где-нибудь до конца файла на -e строка 1.

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

Возвращает: box250.bluehost.com

Я должен изменить линию, чтобы использовать двойные кавычки, а затем выйти из кавычки вокруг IP-адрес

+1

Это, вероятно, потому, что вы используете cmd.exe под окнами , – spacebat 2013-06-13 04:49:16