it-swarm.com.de

wie können Sie Android-Geräte in Ihrem Netzwerk entdecken?

Ich möchte in der Lage sein, Android-Geräte in meinem Netzwerk zu finden und möglicherweise Geräteinformationen darüber abzurufen. Dies ist bei Apple-Geräten sehr einfach, da sie Bonjour-Dienste ausführen. Ich kann jedoch keinen ähnlichen Dienst finden, der auf Android läuft. 

Dies muss funktionieren, ohne das Android-Gerät zu ändern, einen Dienst zu installieren oder einen Port zu öffnen. Es ist dafür gedacht, mit Vanilla Android-Geräten so zu arbeiten, dass Bonjour Ihnen dabei hilft, Vanilla Apple-Geräte zu finden. Selbst wenn Sie nur überprüfen können, ob auf dem Gerät Android läuft, würde dies ausreichen.


Ausgewählte Antwort : Obwohl dies (noch) nicht die am besten bewertete Antwort ist, schauen Sie sich bitte die Antwort von Luis an. Wie er erwähnt, können Sie (mithilfe Ihres lokalen DNS-Servers) eine DNS-Suche verwenden, um Android-Geräte zu ermitteln. Ich habe festgestellt, dass dies eine 100% ige Erfolgsquote hat, da Android einen Hostnamen von Android erzwingt -_ ____ . Es ist offensichtlich schwierig, dies am Telefon zu ändern, selbst wenn es verwurzelt ist. Ich denke, das ist eine ziemlich genaue Methode. Danke, Luis!

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.\001.

Beispielcode: Wenn Sie dies in Java implementieren möchten (z. B. zur Ausführung unter Android), können Sie getHostName () nicht einfach verwenden, da es die externen DNS-Server verwendet. Sie möchten beispielsweise den lokalen DNS-Server Ihres Routers verwenden. Luis erwähnt unten, dass Sie die DNS-Server der WLAN-Verbindung ändern könnten, was jedoch möglicherweise andere Dinge beschädigt. Stattdessen habe ich festgestellt, dass die Bibliothek dnsjava äußerst hilfreich ist, um gezielte DNS-Anforderungen zu senden. Hier ist ein Beispielcode, der die Bibliothek verwendet:

        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);
    }

Das gibt mir die Ausgabe:

DNS Record: Android-711c129e251f14cf.\001.

Bingo.

53
gnychis

Es gibt einen sehr einfachen Ansatz, der bei wenigen verschiedenen Geräten zu positiven Ergebnissen geführt hat.

Wenn ein Gerät eine Verbindung zu Ihrem Router herstellt, erhält es eine IP (d. H. DHCP) und registriert einen Namen in DNS. Der registrierte Name scheint immer in der Form Android_nnnnnnnn zu sein.

Natürlich können Sie jeden Computer mit dem gleichen Ansatz benennen und die Prüfung überlisten, was zu falschen Ergebnissen führt ...

Ich kann auch nicht sicherstellen, dass alle Gerätelieferanten denselben Ansatz verfolgen, aber ich habe festgestellt, dass dies bei einigen Geräten verschiedener Marken (einschließlich verschiedener SDK-Stufen), die ich getestet habe, korrekt funktioniert.

--EDITED--

Wie es geht

Es hängt davon ab, wo Sie den Code zum Erkennen der Android-Geräte ausführen würden. Angenommen, Sie würden den Code auf einem Android-Gerät ausführen:

  1. Ermitteln Sie zunächst Geräte, die auf Ping in Ihrem Netzwerk reagieren. Sie können den Code in meiner Antwort zu diesem Beitrag verwenden: execComd () , um einen Ping-Befehl auszuführen.
  2. Rufen Sie den Namen der antwortenden Geräte mit dem Code ab:

    InetAddress inetAddress = InetAddress.getByName (string_with_ip_addr);

    String name = inetAddress.getCanonicalHostName ();

--EDIT 2--

Konzeptioneller Beweiß

Die unten beschriebene Methode ist nur ein Konzept für das, was ich oben geschrieben habe.

Ich verwende die isReachable()-Methode, um die ICMP-Anforderung zu generieren. Dies wird in vielen Beiträgen gesagt, die nur mit gerooteten Geräten funktioniert. Dies ist der Fall für das zum Testen verwendete Gerät. Ich habe jedoch keine Root-Berechtigungen für die Anwendung erteilt, die diesen Code ausführt. Daher glaube ich, dass das SIUD-Bit nicht gesetzt werden konnte, weshalb einige Klauseln dieser Methode fehlschlagen. Ich möchte hier von jemandem testen, der es auf einem nicht gerooteten Gerät testet.

Anrufen verwenden:

ArrayList<String> hosts = scanSubNet("192.168.1.");

Es gibt in hostsa eine Liste von Namen für Geräte zurück, die auf eine Ping-Anforderung antworten.

private ArrayList<String> scanSubNet(String subnet){
    ArrayList<String> hosts = new ArrayList<String>();

    InetAddress inetAddress = null;
    for(int i=1; i<10; i++){
        Log.d(TAG, "Trying: " + subnet + String.valueOf(i));
        try {
            inetAddress = InetAddress.getByName(subnet + String.valueOf(i));
            if(inetAddress.isReachable(1000)){
                hosts.add(inetAddress.getHostName());
                Log.d(TAG, inetAddress.getHostName());
            }
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    return hosts;
}

Grüße.

31
Luis

Android wird nicht so einfach sein wie iOS. Es gibt kein Bonjour-Äquivalent.

Android 4.0, Eiscremesandwich, eingeführt Wi-Fi Direct Peer-to-Peer-Networking. Zuerst hoffte ich, dass das Scannen so durchgeführt werden könnte, wie Sie denken, aber es hilft Android-Geräten, ohne Zugriffspunkt zu kommunizieren, sodass sie nicht wirklich "in Ihrem Netzwerk" sind. Außerdem läuft ICS nur auf einem Bruchteil von Android-Geräten.

Anstelle eines aktiven Netscan-Ansatzes verbleibt ein passiver Überwachungsansatz. Wenn Ihr Netzwerk sicher ist, ist das Sniffing des verschlüsselten Pakets möglich, jedoch unpraktisch. Du musst es tun 

  • versetzen Sie Ihre Netzwerkschnittstelle in den Monitor-Modus
  • den 4-Wege-Handshake erfassen
  • entschlüsseln Sie es mit dem vorinstallierten Schlüssel des Netzwerks
  • dadurch erhalten Sie den Schlüssel, den Sie zum Entschlüsseln des Datenverkehrs benötigen

Wenn Sie dies in Aktion sehen möchten, unterstützt Wireshark Supports WPA - Entschlüsselung .

Sobald Sie den Wi-Fi-Verkehr sehen können, werden Android-Geräte dazu neigen, mit bestimmten Google-Servern zu kommunizieren, und ihre HTTP-Verbindungen verfügen über User Agent-Zeichenfolgen, die identifiziert werden können . Dies ist die Grundlage für eine praktikable passive Lösung.

Tenable Network Security bieten Produkte an, die diese Art von Ansatz verfolgen.

Eine andere Idee

@Michelle Cannon erwähnte das Meshlium Xtreme von Libelium, dessen Vorgehensweise Sie nicht bis dorthin führt (nicht ohne gute, aktuelle MAC-Adressbereichstabellen). Es könnte jedoch dazu beitragen, ein geringeres Ziel zu erreichen. Sie können:

  • Alle drahtlosen Geräte erkennen
  • Beseitigen Sie Apple-Geräte mithilfe des OUI (Organizationally Unique Identifier) ​​des MAC
  • Sagen Sie, es ist ein mobiles Gerät, indem Sie die Signalstärke überwachen, um zu bestimmen, dass es sich bewegt (und mobile Geräte werden in der Regel auftauchen und verschwinden)
  • Möglicherweise können Sie die MAC-OUI als Hinweis für Android verwenden
  • Möglicherweise können Sie die MAC OUI als Hinweis verwenden, dass es sich nicht um Android handelt (sondern um einen Laptop oder eine WLAN-Karte usw.).

Dies kann praktikabel sein, wenn Sie bereit sind, Geräte zu erkennen, die wahrscheinlich Android sind.

DHCP-Fingerprinting

@Michelle Cannon schlug DHCP-Fingerprinting vor. Anfangs war ich mir nicht sicher, aber ich muss ihm dafür danken, dass er vorgeschlagen hat, was für einfaches passives Scannen die beste Wahl ist. Als Vorsichtsmaßnahme möchte ich erklären, warum ich zu spät auf die Party gekommen bin.

Es gibt Dinge, die wir kennen, denken, wir wissen nicht, und Dinge, von denen wir glauben, dass wir sie kennen, aber falsch liegen.

In vielerlei Hinsicht ist es gut, dass Android den Linux-Kernel verwendet. Aber es ist nicht gut, wenn Sie Android-Geräte in Ihrem Netzwerk entdecken möchten. Der TCP/IP-Stack von Android ist Linux, daher werden Android-Geräte wie Linux-Geräte aussehen oder so dachte ich zuerst. Aber dann wurde mir klar, dass Linux eine Menge von Build-Konfigurationsparametern hat, so dass Android in einem Netzwerk etwas Besonderes sein könnte, aber was?

Beim DHCP-Fingerprinting werden die vom Gerät angeforderten genauen DHCP-Optionen sowie das Timing verwendet. Damit dies funktioniert, benötigen Sie in der Regel eine aktuelle Fingerabdruckdatenbank. Zuerst sah es so aus, als würde fingerbank diese Daten beschaffen, aber dann fiel mir auf, dass ihre Dateien seit fast einem Jahr nicht aktualisiert wurden. Bei all den verschiedenen Android-Gerätetypen halte ich es nicht für praktisch, aktualisierte Fingerabdrücke für ein einzelnes Projekt zu behalten.

Aber dann habe ich mir die aktuellen DHCP-Signaturen für Android angesehen und Folgendes festgestellt:

Android 1.0:     dhcpvendorcode=dhcpcd 4.0.0-beta9
Android 1.5-2.1: dhcpvendorcode=dhcpcd 4.0.1
Android 2.2:     dhcpvendorcode=dhcpcd 4.0.15
Android 3.0:     dhcpvendorcode=dhcpcd-5.2.10 

Linux verwendet normalerweise dhclient als DHCP-Client, Android hingegen verwendet dhcpcd. Android bevorzugt die Verwendung von Software, die nach Möglichkeit mit dem BSD-Stil lizenziert ist, und dhcpcd verwendet eine BSD-Lizenz. Es scheint, dass dhcpvendorcode als starker Indikator dafür verwendet werden kann, dass auf einem Mobilgerät Android ausgeführt wird.

DHCP-Überwachung

Ein Client verwendet DHCP, um eine IP-Adresse zu erhalten, wenn er sich einem Netzwerk anschließt, so dass er ohne IP-Adresse startet. Dieses Problem wird durch die Verwendung von UDP-Broadcasts für den ersten Austausch umgangen. Im Wi-Fi wird der Broadcast-Verkehr selbst mit WPA nicht verschlüsselt. Sie können also nur den UDP-Port 67 auf den Client-zu-Server-Verkehr und den 68-Port für die Umkehrung überwachen. Sie müssen nicht einmal Ihre Netzwerkschnittstelle in den Promiscuous-Modus versetzen. Sie können diesen Verkehr einfach mit einem Protokollanalysator wie Wireshark überwachen.

Ich zog es vor, Code zu schreiben, um den Verkehr zu überwachen, und entschied mich für Python. Ich habe pydhcplib ausgewählt, um die Details von DHCP zu behandeln. Meine Erfahrung mit dieser Bibliothek war nicht glatt. Ich musste die Unterstützungsdateien IN.py und TYPES.py manuell herunterladen und platzieren. Bei der Konvertierung von Paket in String blieb der dhcpvendorcode leer. Es hat die DHCP-Pakete richtig analysiert, also habe ich gerade meinen eigenen Druckcode geschrieben.

Hier der Code, der den DHCP-Verkehr vom Client zum Server überwacht:

#!/usr/bin/python
from pydhcplib.dhcp_packet import *
from pydhcplib.dhcp_network import *
from pydhcplib.dhcp_constants import *


netopt = {
    'client_listen_port':"68",
    'server_listen_port':"67",
    'listen_address':"0.0.0.0"
}

class Server(DhcpServer):
    def __init__(self, options):
        DhcpServer.__init__(
            self,options["listen_address"],
            options["client_listen_port"],
            options["server_listen_port"])

    def PrintOptions(self, packet, options=['vendor_class', 'Host_name', 'chaddr']):

        # uncomment next line to print full details
        # print packet.str()

        for option in options:
            # chaddr is not really and option, it's in the fixed header
            if option == 'chaddr':
                begin = DhcpFields[option][0]
                end = begin+6
                opdata = packet.packet_data[begin:end]
                hex = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f']
                print option+':', ':'.join([(hex[i/16]+hex[i%16]) for i in opdata])
            else:
                opdata = packet.options_data.get(option)
                if opdata:
                    print option+':', ''.join([chr(i) for i in opdata if i != 0])
        print

    def HandleDhcpDiscover(self, packet):
        print "DHCP DISCOVER"
        self.PrintOptions(packet)
    def HandleDhcpRequest(self, packet):
        print "DHCP REQUEST"
        self.PrintOptions(packet)

    ##  def HandleDhcpDecline(self, packet):
    ##      self.PrintOptions(packet)
    ##  def HandleDhcpRelease(self, packet):
    ##      self.PrintOptions(packet)
    ##  def HandleDhcpInform(self, packet):
    ##      self.PrintOptions(packet)


server = Server(netopt)

while True :
    server.GetNextDhcpPacket()

Dieser Code basiert auf dem Server-Beispiel von pydhcplib, da er auf Clientanforderungen wie einen Server wartet.Wenn mein Nexus 7 Android 4.2-Tablet eine Verbindung herstellt, werden diese interessanten Informationen erfasst (geändert):.

DHCP REQUEST vendor_class: dhcpcd-5.5.6 Host_name: Android-5c1b97cdffffffff chaddr: 10:bf:48:ff:ff:ff DHCP DISCOVER vendor_class: dhcpcd-5.5.6 Host_name: Android-5c1b97cdffffffff chaddr: 10:bf:48:ff:ff:ff

Reverse DNS Lookup .

@Luis hat eine großartige Lösung veröffentlicht, die zeigt, wie einfach besser ist. Selbst nachdem ich gesehen hatte, dass der DHCP-Client von Android Host_name auf Android-5c1b97cdffffffff gesetzt hatte, wollte ich den Router nicht nach seiner Liste der Namen fragen, die Reverse-DNS-Lookups verwenden. Der Router fügt den Hostnamen seinem DNS-Server hinzu, sodass Sie weiterhin auf das Gerät zugreifen können, wenn sich seine IP-Adresse ändert.

Es wird erwartet, dass der Hostname für die Dauer der DHCP-Lease im DNS aufgeführt bleibt. Sie können überprüfen, ob das Gerät noch vorhanden ist, indem Sie pinging it.

Ein Nachteil von Host_name besteht darin, dass dies geändert werden kann. Der Gerätehersteller oder -betreiber kann den Host-Namen leicht ändern (obwohl ich nach der Suche keine Beweise gefunden habe, die er jemals hatte). Es gibt apps, um den Hostnamen zu ändern , aber sie benötigen root, also ist dies höchstens ein Edge-Fall.

Endlich gibt es noch eine offene Android-Ausgabe 6111: Erlaube die Angabe eines Hostnamens der aktuell 629 Sterne hat. Es wäre nicht überraschend, den konfigurierbaren Host-Namen in den Android-Einstellungen zu einem späteren Zeitpunkt, vielleicht bald, zu sehen. Wenn Sie also bei der Identifizierung von Android-Geräten von Host_name abhängig sind, müssen Sie feststellen, dass diese unter Ihnen gerissen werden könnten.

Wenn Sie Live-Tracking durchführen, besteht ein weiteres mögliches Problem bei Reverse DNS Lookup darin, dass Sie entscheiden müssen, wie häufig gescannt werden soll. (Dies ist natürlich kein Problem, wenn Sie nur einen einmaligen Snapshot erstellen.) Durch häufiges Scannen werden Netzwerkressourcen beansprucht, und selten kommt es zu veralteten Daten. Das Hinzufügen der DHCP-Überwachung kann dabei helfen:.

  • Pingen Sie Geräte an, um zu sehen, ob sie noch aktiv sind
  • Überwachen Sie den DHCP-Verkehr, um neue Geräte sofort zu erkennen
  • Führen Sie gelegentlich die DNS-Suche aus, um nach möglicherweise fehlenden Geräten zu suchen
  • Wenn Sie Geräte beim Verlassen bemerken müssen, pingen Sie die Geräte mit der gewünschten zeitlichen Auflösung
  • Es ist zwar nicht einfach (und auch nicht 100% ig genau), aber es gibt verschiedene Techniken, mit denen Android-Geräte in Ihrem Netzwerk erkannt werden können.

While it's not easy (nor 100% accurate), there are several techniques that make it possible to discover Android devices on your network.

21
jimhark

AFAIK, Android-System bietet keine zeroconf app Dienste auf der integrierten System-App/dem Service-Stack. Um die automatische Erkennung auf dem tatsächlichen an das lokale Netzwerk angeschlossenen Gerät zu aktivieren, müssen Sie entweder eine Zeroconf-App eines Drittanbieters installieren oder eine eigene App/einen eigenen Dienst/Dienst entwickeln und auf dem tatsächlichen Gerät installieren. Einige API-Optionen sind:

Ich bin mir nicht ganz klar über Ihre Anforderungen. Wenn Sie etwas Ähnliches (z. B. automatisches Erkennen und Verbinden) auf Vanilla-Android-Geräten wünschen, können Sie wahrscheinlich Wi-Fi direct verwenden, das jetzt auf einigen späteren Geräten mit Android 4.0 verfügbar ist Es ist jedoch erforderlich, dass beide Geräte Wi-Fi Direct unterstützen und nur bei deaktivierter Wi-Fi-Verbindung eine Ad-hoc-P2P-Verbindung herstellen, ähnlich wie eine Bluetooth-Verbindung mit einer größeren Reichweite:

enter image description here

Informationen zur Wi-Fi Direct-API-Unterstützung finden Sie im offiziellen Handbuch - Geräte drahtlos verbinden .

5
yorkw

Ich betrachte dies ein Denken

http://www.libelium.com/smartphones_iphone_Android_detection

beachten Sie dies besonders

Müssen die Benutzer eine bestimmte App installiert haben oder in irgendeiner Weise interagieren, um entdeckt zu werden?

Nein, der Scan wird im Hintergrund ausgeführt. Meshlium erkennt nur die "Beacon-Frames", die von den in den Smartphones integrierten WLAN- und Bluetooth-Funkgeräten stammen. Die Benutzer müssen lediglich eine der beiden drahtlosen Schnittstellen aktiviert haben.

Vor langer Zeit benutze ich eine App namens Stumbler auf meinem Mac, um WLAN-Netzwerke zu finden. Ich denke, das ist ähnlich

Andere Ideen

Nun, wenn ich Android-Telefone in einem lokalen Netzwerk ermitteln muss, wie würde ich das tun? Ohne DNS-Dienst habe ich nur ein paar Möglichkeiten

Die SSID, wenn sie gesendet wird - kann mir nichts sagen. Die IP-Adresse - Mit Android können Sie die Host-Benennung stark steuern. Sie können also einen bestimmten IP-Bereich für Ihre Android-Geräte definieren. -nicht nützlich.

Angenommen, ich sehe ein unbekanntes Gerät im Netzwerk. Wenn Bluetooth aktiviert ist, übertrage ich eine Bluetooth-Geräte-Signatur-SDPP, mit der ich meinen Gerätetyp ableiten kann.

Wenn ich einen Dienst ausführen würde, der Android unterstützt, und ich bestimmte Android-Geräte in meinem Netzwerk ermitteln wollte, könnte ich einfach die MAC-Adressen für diese Geräte registrieren und im Netzwerk nach ihnen suchen.

Ansonsten müssten Sie entweder einen Bonjour (dns-sd) oder eine Upnpp-Dame auf dem Gerät ausführen.

2
Michelle Cannon

Ich lerne viel von diesem Thema. 

es gibt auch etwas, das als Dhcp-Fingerprinting bezeichnet wird. Offensichtlich verhalten sich unterschiedliche Geräte anders als die Art der Netzwerk-Scans, die wir besprochen haben, wie beispielsweise diejenigen, die mit NMAP einen Linux-Scanner verwenden. Karten des Verhaltens dieser Sonden sind im Internet verfügbar.

http://www.enterasys.com/company/literature/device-profiling-sab.pdf

https://media.defcon.org/dc-19/presentations/Bilodeau/DEFCON-19-Bilodeau-FingerBank.pdf

http://community.arubanetworks.com/t5/ArubaOS-and-Mobility-Controllers/COTD-DHCP-Fingerprinting-how-to-ArubaOS-6-0-1-0-and-above/td-p/ 11164

http://myweb.cableone.net/xnih/

1
Michelle Cannon

Aktualisierte Antwort

Entschuldigung, ich habe die ursprüngliche Frage nicht richtig verstanden. Nur durch Ihren Kommentar wurde mir wirklich klar, dass Sie irgendetwas nicht auf den Zielgeräten installieren müssen, sondern nur eine Möglichkeit, beliebige Telefone in Ihrem Netzwerk zu finden.

Ich bin mir nicht sicher, ob dies wirklich so möglich ist, wie Sie es wünschen. Wenn auf Android kein Netzwerkerkennungsdienst ausgeführt wird, finden Sie das Gerät nicht an erster Stelle. Natürlich können Sie einige Low-Level-Netzwerkprotokolle verwenden, aber das würde Ihnen nur einen Hinweis darauf geben, dass es etwas gibt, aber nicht das, was es ist (Android-Gerät, PC oder was auch immer).

Der vielversprechendste Ansatz wäre die Suche nach vorinstallierten Apps, die über eine Netzwerkfunktionalität verfügen. Z.B. Samsung-Geräte verfügen über Kies Air (wenn der Benutzer dies zulässt), Motorola verwendet UPnP für seinen Medienserver und HTC hat auch etwas Eigenes, wenn ich mich recht erinnere. Es gibt jedoch keine App, die auf allen Android-Geräten aller Anbieter und Betreiber installiert ist. Sie können sich also nicht nur auf einen dieser Dienste verlassen, sondern müssten anhand ihrer spezifischen Protokolle und Verhaltensweisen nach verschiedenen Diensten suchen, um zusätzliche Informationen über das Gerät zu erhalten. Natürlich muss der Benutzer die Funktionalität aktivieren, damit Sie sie verwenden können.

Alte Antwort

Eine weitere Alternative zur Liste von yorkw ist AllJoyn von Qualcomm. Es handelt sich um ein plattformübergreifendes Open Source-Entdeckungs- und Peer-to-Peer-Kommunikations-Framework, das ich bereits selbst verwendet habe. 

Obwohl Qualcomm ein großer Sponsor von AllJoyn ist, bedeutet dies nicht, dass Sie einen Qualcomm-Chipsatz in Ihrer Definition benötigen. AllJoyn funktioniert auf jedem Chipsatz, einschließlich Intel und NVidia. Es sind keine gerooteten Telefone oder andere Modifikationen am Android-Framework erforderlich, und es funktioniert einfach "out of the box" unter Verwendung von Wi-Fi und/oder Bluetooth als Paarungsmethoden.

1
André

Hier ist ein One-Liner, der alle Maschinen in Ihrem Netzwerk anpingt (vorausgesetzt, Ihr Netzwerk ist 192.168.1.x) und führt eine umgekehrte Suche nach ihren Namen durch:

for i in {1..255}; do echo ping -t 4 192.168.1.${i} ; done | parallel -j 0 --no-notice 2> /dev/null | awk '/ttl/ { print $4 }' | sort | uniq | sed 's/://' | xargs -n 1 Host 

Benötigt parallel dazu GNU. Sie können dies unter OSX mit "brew install parallel" installieren.

Von hier aus können Sie einfach die Geräte mit dem Namen Android-c40a2b8027d663dd.home. oder was auch immer betrachten.

Sie können dann versuchen, nmap -O auf einem Gerät auszuführen, um herauszufinden, was Sie sonst noch herausfinden können:

Sudo nmap -O Android-297e7f9fccaa5b5f.home.

Aber so fruchtbar ist es nicht.

0
Will Schenk