2013-05-29 18 views
11

Ich versuche herauszufinden, ob mein iPhone im selben Netzwerk wie mein Raspberry Pi ist. Ich möchte ein Skript ausführen, wenn ich zu Hause bin und die Anwesenheit meines iPhones in meinem LAN registriert ist.Wie kann ich das iPhone im Netzwerk erkennen?

Es scheint, dass, wenn das Telefon im Standby-Modus ist nicht einmal der iphone-sync-Anschluss (6207/tcp) gefunden wird. "/ usr/bin/nmap -n -sT -p62078 [lokale IP-Adresse meines Telefons]" zeigt keinen Host an. Ich frage mich, was ich sonst noch suchen könnte. Offensichtlich ist das Telefon online und bereit, Gesichtsrufe anzunehmen (Daten über 3G sind deaktiviert). Könnte ich etwas mit Avahi erreichen, das ich auf meinem Raspberry Pi verwende, oder gibt es andere Möglichkeiten?

+0

Ich habe dies aufgegeben und verwende jetzt Bluetooth, um regelmäßig zu überprüfen, ob mein iPhone in Reichweite ist. – PiEnthusiast

+0

Falls jemand auf dieses Problem stößt und sich fragt, was ich mache, um die Anwesenheit mit Bluetooth zu erkennen: Ich versuche den Namen meiner (bekannten) Geräteadresse aufzulösen ('sudo hcitool name xx: xx: xx: xx: xx: xx'). Wenn ich eine gültige Antwort erhalte, befindet sich das Telefon in BT-Reichweite. – PiEnthusiast

Antwort

3

Sie können eine Liste der Geräte in Ihrem Netzwerk finden, indem Sie Ihren ARP-Cache untersuchen.

arp -a

einfach einen Bash-Skript schreibt arp -a in einem regelmäßigen Intervall zu laufen, und für die MAC-Adresse des Telefons suchen.

Sie könnten sogar noch weiter gehen und verschiedene Aktionen ausführen, je nachdem, welche Marke des Geräts angeschlossen ist.

Die ersten 3 hexadezimalen Ziffern einer MAC-Adresse sind die Hersteller-ID.

Nehmen Sie die folgende MAC-Adresse:

00:19:E3:AB:CD:EF 

00:19:E3: ist eine der registrierten MAC-Adresse für Apple-Geräte.

Durch den Vergleich der Geräte in Ihrem Netzwerk mit this list können Sie feststellen, ob zum Beispiel ein "3com" -Gerät oder ein "Dell" -Gerät an Ihr Netzwerk angeschlossen ist.

http://www.coffer.com/mac_find/?string=apple

+0

Danke für den Tipp. Leider gehen iPhones in einen Tiefschlafmodus, wenn sie nicht benutzt werden. Der ARP-Cache zeigt keines meiner vier iDevices an. – PiEnthusiast

1

Sie tun können „arp-scan -l -R 10“ für die (das selbst getestet), aber das Problem ist, wenn die mobilen Daten das iPhone aktiviert wird WiFi gehen und aussetzen, wenn Bildschirm sicher gesperrt ist Batterie. Also müssen Sie mobile Daten deaktivieren .. dann funktioniert arp-scan.

+0

Wissen Sie, wie oft das iPhone mit WLAN verbunden ist, während es gesperrt ist? Ich denke über Anwesenheitserkennung von Leuten im Gebäude nach, und es sollte kein Problem sein, wenn es Genauigkeit ungefähr eine halbe Stunde geben wird. –

+0

Sehen Sie meine halbe Antwort unten. Gesperrte/schlafende iPhones senden eine beträchtliche Menge an Netzwerkverkehr auf niedriger Ebene, was eine Auflösungsgenauigkeit von ~ 20 Minuten ermöglicht – user3235770

1

Ich habe gerade eine Woche damit verbracht, dieses Problem zu überwinden, so dass ich davon absehen kann, SMS an meine Frau zu senden, wenn sie bei der Arbeit ist.

Ping funktioniert nicht, da das iPhone im Ruhezustand nicht auf ICMP reagiert. Das Lesen des ARP-Cache funktioniert nicht, weil ein schlafendes iPhone kommen und gehen wird (überprüfen Sie es alle 30 Sekunden für ein paar Minuten).

Der einzige Weg, den ich "zuverlässig" feststellen kann, wenn meine zwei iPhones in meinem lokalen (Heim-) Netzwerk sind, ist die PCAP-dotnet-Bibliothek, um nach Paketen zu suchen, die von den MAC-Adressen beider Telefone stammen. Zum Beispiel, wenn Sie mit dem Wireshark-Erfassungsfilter

ether src <iphone-mac-address> 

laufen Sie eine überraschende Menge an Netzwerk-Discovery/announcement Verkehr vom Telefon sehen. Es hat immer noch Ruhezustände, aber bis jetzt ist das längste Intervall, das ich zwischen eingefangenen Paketen gesehen habe, ungefähr 10 Minuten. Du müsstest warten, bis du für einige Zeit nicht mehr vom Telefon gehört hast (ich benutze 15 Minuten), bevor du es nicht zu Hause deklarierst.

Mit dieser Technik finden Sie schnell ein Telefon, wenn es wieder mit dem Heimnetzwerk verbunden wird, vorausgesetzt, Ihr Telefon ist für DHCP konfiguriert. Ich verwende auch Port-Mirroring auf meinem Haupt-Ethernet-Switch, um Datenverkehr von meinen Wireless Access Points einzubeziehen.

Ich habe keine Raspberry Pi-Lösung für diese, weil meine Linux-Expertise ist sehr begrenzt, aber jemand anderes kann Ihnen in diese Richtung helfen. Ich habe einen Windows-Dienst, der die PCAP-Bibliothek verwendet, und bisher funktioniert es zuverlässig, mit der Einschränkung, 15 Minuten warten zu müssen, bevor entschieden wird, dass ein iPhone das Netzwerk verlassen hat.

* update 2-3-2018 *

Ich habe diesen Erkennungsalgorithmus bis etwa 5 Minuten nach unten, mit einer Kombination von Ping/arp-Nachrichten an jedes Telefon gerichtet, etwa einmal pro Minute. Scheint gut zu funktionieren.

Verwandte Themen