2008-09-17 47 views

Trả lời

1

Có thể có cách dễ dàng hơn, nhưng đối với IPv4, nếu bạn có thể thực hiện tra cứu DNS thông thường, bạn luôn có thể tự mình xây dựng truy vấn ngược lại. Đối với địa chỉ IPv4 A.B.C.D, tra cứu bất kỳ bản ghi PTR nào tại D.C.B.A.in-addr.arpa. Đối với IPv6, bạn lấy 128 nibbles hex và lật chúng xung quanh và nối thêm ipv6.arpa. và làm điều tương tự.

1

Nếu gethostbyaddr không phù hợp với nhu cầu của bạn, Net::DNS linh hoạt hơn.

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

Nếu bạn cần chi tiết hơn thông tin DNS sử dụng các mô-đun Net::DNS, đây là một ví dụ:

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

Original Source EliteHackers.info, các chi tiết đó là tốt.

0

này có thể có ích ...

$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

một liner:

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

Returns: Không thể tìm thấy chuỗi terminator "'" bất cứ nơi nào trước khi EOF tại -e dòng 1.

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

Returns: box250.bluehost.com

tôi phải thay đổi dòng để sử dụng dấu ngoặc kép và sau đó thoát ra dấu ngoặc kép quanh địa chỉ IP

+1

Đó có thể là bởi vì bạn đang sử dụng cmd.exe dưới cửa sổ . – spacebat

Các vấn đề liên quan