У меня есть пакет tcp
.Из заголовка tcp я могу получить IP-адрес назначения.Моя цель состоит в том, чтобы найти имя хоста для назначения.
Я попытался выполнить обратный поиск DNS, используя приведенный ниже код.
try {
hostname = InetAddress.getByName(myIp).getHostName();
Log.w("Host for ", myIp + " is " + hostname) ;
}catch (UnknownHostException e){
Log.w("Unknown Host for ", myIp);
}
Приведенный выше код дает вывод в виде:
W / Host для: 172.217.3.33 is iad23s57-in-f1.1e100.net
W / Host для: 216.58.217.142 is iad23s43-in-f14.1e100.net.,.
Я хочу использовать имя хоста в качестве имени сайта.пример.youtube.com, stackoverflow.com и т. д.
Я пытался использовать для этого библиотеку MiniDNS
.
ResolverResult<A> result = DnssecResolverApi.INSTANCE.resolve(hostname, A.class);
if (!result.wasSuccessful()) {
DnsMessage.RESPONSE_CODE responseCode = result.getResponseCode();
// Perform error handling.
Log.d(TAG, “ Result Not successful");
return;
}
if (!result.isAuthenticData()) {
// Response was not secured with DNSSEC.
Log.d(TAG, ”Result Not authentic");
return;
}
Set<A> answers = result.getAnswers();
for (A a : answers) {
InetAddress inetAddress = a.getInetAddress();
// Do someting with the InetAddress, e.g. connect to.
Log.d(TAG, InetAddress.toString());
}
Приведенный выше код выдает следующую ошибку:
Доступ запрещен при поиске свойства "net.dns1"
Я могу проанализировать пакет tcp/udp
, чтобы получить tcp/udp header
и получить адрес назначения.Есть ли способ получить имя хоста из пакета, кроме IP-адреса назначения?