Как заблокировать хост, используя локальный VPN в Android? - PullRequest
0 голосов
/ 09 февраля 2019

Я создаю приложение для Android, в котором мне нужно заблокировать определенный трафик из примера приложения, если пользователь хочет заблокировать facebook, тогда оно не должно открываться ни в каком браузере или приложении Facebook.

после поиска я получил https://github.com/LipiLee/ToyShark.so я создаю службу VPN и могу получить IP-адрес из пакета путем разбора пакета, но мне нужно преобразовать IP-адрес в имя хоста, например 192.xx.xx.xx, в www.facebook.com, поэтому я использовал

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это iad23s43-in-f14.1e100.net.,

Я пытался использовать для этого библиотеку 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());
}

, но получаю сообщение об ошибке

Access denied finding property "net.dns1"

, поэтому я хочу спросить ..

1.Is there any way to get the hostname from the packet other than the destination ip?

2.How to do DNS resolution in android to get hostname if i have only ip address?
...