альтернативный способ или функция для gethostbyaddr () [duplicate]

Другим сценарием является то, что вы нанесли нулевой объект в тип значения . Например, код ниже:

object o = null;
DateTime d = (DateTime)o;

Он выкинет NullReferenceException в роли. В приведенном выше примере это кажется совершенно очевидным, но это может произойти в более «поздних связующих» сложных сценариях, где нулевой объект был возвращен из некоторого кода, которого вы не являетесь, и приведение, например, генерируется некоторой автоматической системой.

Одним из примеров этого является этот простой фрагмент привязки ASP.NET с элементом управления календарем:

" />

Здесь SelectedDate на самом деле является свойством - типа DateTime - типа Calendar Web Control, и привязка может отлично вернуть что-то null. Неявный генератор ASP.NET создаст кусок кода, который будет эквивалентен приведенному выше методу. И это поднимет NullReferenceException, что довольно сложно определить, потому что он лежит в сгенерированном ASP.NET коде, который компилирует отлично ...

1
задан Maroman 2 January 2012 в 18:45
поделиться

4 ответа

Один IP-адрес может содержать потенциально неограниченное количество доменов. Домены, возвращенные gethostbyaddr, будут указывать имена доменов из записей DNS PTR для этого IP-адреса. Обратная запись DNS (PTR) отображает IP-адреса для одного или нескольких доменных имен.

Одной из таких компаний, которая предоставляет информацию о доменах по IP-адресам, является domaintools.com. Вы можете заплатить за такую ​​информацию, которую они собрали. Если имя домена отсутствует в записи PTR, то единственным способом узнать, какие домены находятся на IP-адресе, является попытка разрешить имена доменов на их IP-адреса и вести учет. AFIK нет другого способа.

См. Обратный поиск DNS и Инструменты домена обратного IP-поиска

Данные с обратной IP-поиск по инструментам домена основан на их добыче, сборе и исследованиях.

3
ответ дан drew010 26 August 2018 в 01:03
поделиться

Ваш PHP правильный, earthwar.de - правильный ответ

eugen@lucidhome:~$ nslookup
> set q=ptr
> 62.75.138.253
Server:     192.168.232.1
Address:    192.168.232.1#53

Non-authoritative answer:
253.138.75.62.in-addr.arpa  name = earthwar.de.

Authoritative answers can be found from:
> 

Это, конечно же, не означает, что другие имена (например, german-proxy.de) не указывают на один и тот же адрес , но найти их все невозможно.

Обновление:

eugen@lucidhome:~$ nslookup 
> set q=a
> german-proxy.de.     
Server:     192.168.232.1
Address:    192.168.232.1#53

Non-authoritative answer:
Name:   german-proxy.de
Address: 62.75.138.253
> earthwar.de.
Server:     192.168.232.1
Address:    192.168.232.1#53

Non-authoritative answer:
Name:   earthwar.de
Address: 91.143.85.129
> 

, поэтому это хороший пример. Факт: Нет, не так, я могу сделать это, чувак!

2
ответ дан Eugen Rieck 26 August 2018 в 01:03
поделиться

Могут быть МНОГИЕ имена -> IP-сопоставления, но только ONE IP-> name mapping. Это не редкость, когда вы используете хост-хост-> ip-> host lookups. Вы не можете определить, какое имя хоста указано пользователем, если только протокол, который они используют, передает это имя хоста вместе с запросом, например. http 1.1. Большинство протоколов работают исключительно с IP-адреса и не нуждаются / заботятся о именах хостов.

2
ответ дан Marc B 26 August 2018 в 01:03
поделиться

Вы не можете доверять имени, возвращенному gethostbyaddr. DNS-сервер с полномочиями на определенный IP-адрес может вообще вернуть любое имя хоста.

Обычно администраторы настраивают DNS-серверы для ответа с правильным именем хоста, но злоумышленник может настроить свой DNS-сервер для ответа с неправильными именами хостов. Вы можете избежать попадания в эту ловушку, когда вы вызываете gethostbyname на имя хоста, возвращаемое из gethostbyaddr, и убедитесь, что имя разрешает исходный IP-адрес.

Но есть еще ... иногда одно имя хоста может сопоставляться с несколькими IP-адресами.

var_dump(gethostbynamel('google.com')); 

возвращает

array(6) {
   [0]=>
        string(14) "173.194.69.104"
   [1]=>
        string(14) "173.194.69.147"
   [2]=>
        string(14) "173.194.69.105"
   [3]=>
        string(14) "173.194.69.106"
   [4]=>
        string(14) "173.194.69.103"
   [5]=>
        string(13) "173.194.69.99"
}

В общем, вы вам нужно будет узнать о копании DNS и обратном DNS-поиске. Это долгий путь, чтобы ходить, но вы можете доверять мне, когда я говорю, что это интересно.

1
ответ дан user 26 August 2018 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: