سؤال

كيف يمكنني إجراء بحث عكسي عن DNS، أي كيف يمكنني تحليل عنوان IP إلى اسم مضيف DNS الخاص به في Perl؟

هل كانت مفيدة؟

المحلول

gethostbyaddr والمكالمات المماثلة.يرى http://perldoc.perl.org/functions/gethostbyaddr.html

نصائح أخرى

إذا كنت بحاجة إلى معلومات DNS أكثر تفصيلاً، استخدم صافي::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, ، مزيد من التفاصيل هناك أيضًا.

use Socket;
$iaddr = inet_aton("127.0.0.1"); # or whatever address
$name  = gethostbyaddr($iaddr, AF_INET);
perl -MSocket -E 'say scalar gethostbyaddr(inet_aton("69.89.27.250"), AF_INET)'

عائدات: لا يمكن العثور على فاصل السلسلة "'" في أي مكان قبل EOF عند -e السطر 1.

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

عائدات: box250.bluehost.com

لا بد لي من تغيير السطر لاستخدام علامات الاقتباس المزدوجة ثم الهروب من علامات الاقتباس حول عنوان IP

بطانة واحدة:

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

قد تكون هناك طريقة أسهل، ولكن بالنسبة لـ IPv4، إذا كان بإمكانك إجراء عمليات بحث عادية عن DNS، فيمكنك دائمًا إنشاء الاستعلام العكسي بنفسك.بالنسبة لعنوان IPv4 A.B.C.D، ابحث عن أي سجلات PTR على D.C.B.A.in-addr.arpa.بالنسبة لـ IPv6، يمكنك تناول 128 قطعة سداسية وقلبها وإلحاقها بـ ipv6.arpa.وتفعل الشيء نفسه.

إذا كان gethostbyaddr لا يناسب احتياجاتك، صافي::DNS أكثر مرونة.

قد يكون هذا مفيداً...

$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];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top