любой способ обнаружить устройства Android в вашей сети?



Я хочу быть в состоянии обнаружить устройства Android по сети и, возможно, получить некоторую информацию об их устройстве. Это очень легко с устройствами Apple, так как они работают Bonjour services. Тем не менее, я не могу найти какой-либо подобный сервис, работающий на Android.



это должно работать без изменения устройства Android, установки какой-либо службы или открытия какого-либо порта. Он предназначен для работы с устройствами vanilla Android таким образом, что Bonjour поможет вам найти vanilla Apple устройства. Даже возможность просто убедитесь, что устройство работает под управлением Android будет достаточно.





Выбрали Ответ: хотя это не самый лучший ответ (пока), пожалуйста, взгляните на ответ Луиса. Как он упоминает, вы можете использовать поиск DNS (с помощью локального DNS-сервера) для обнаружения устройств Android. Я обнаружил, что это имеет 100% успех, так как Android заставляет устройства использовать имя хоста android -_____. Это, по-видимому, трудно изменить по телефону, даже если он укоренен. Поэтому я думаю, что это довольно точный метод. Спасибо, Луис!



Example:
$ nslookup 192.168.1.104 192.168.1.1
Server: 192.168.1.1
Address: 192.168.1.1#53

104.1.168.192.in-addr.arpa name = android-711c129e251f14cf.1.




Пример Кода: если вы хотите реализовать это в Java (например, для запуска на Android), вы не можете легко использовать getHostName (), потому что он использует внешние DNS-серверы. Вы хотите использовать локальный DNS-сервер на маршрутизаторе, например. Луис упоминает ниже, что вы можете изменить DNS-серверы Wifi-соединения, но это может сломать и другие вещи. Вместо этого я нашел dnsjava библиотека, чтобы быть чрезвычайно полезным для отправки целевых запросов DNS. Вот пример кода, использующего библиотеку:



        String ipAddress = "104.1.168.192";
String dnsblDomain = "in-addr.arpa";
Record[] records;
Lookup lookup = new Lookup(ipAddress + "." + dnsblDomain, Type.PTR);
SimpleResolver resolver = new SimpleResolver();
resolver.setAddress(InetAddress.getByName("192.168.1.1"));
lookup.setResolver(resolver);
records = lookup.run();

if(lookup.getResult() == Lookup.SUCCESSFUL) {
for (int i = 0; i < records.length; i++) {
if(records[i] instanceof PTRRecord) {
PTRRecord ptr = (PTRRecord) records[i];
System.out.println("DNS Record: " + records[0].rdataToString());
}
}
} else {
System.out.println("Failed lookup");
}

} catch(Exception e) {
System.out.println("Exception: " + e);
}


это дает мне выход:



DNS Record: android-711c129e251f14cf.1.


Бинго.

417   0  

Comments

    Ничего не найдено.