2013-05-29 29 views
11

Sto cercando di rilevare se il mio iPhone si trova nella stessa rete del mio Raspberry Pi. Mi piacerebbe eseguire una sceneggiatura quando sono a casa e la presenza del mio iPhone è registrata nella mia LAN.Come posso rilevare l'iPhone sulla rete?

Sembra che quando il telefono è in standby non viene trovata nemmeno la porta di sincronizzazione iphone (6207/tcp). "/ usr/bin/nmap -n -sT -p62078 [IP locale del mio telefono]" non mostra nessun host. Mi chiedo che altro posso cercare. Ovviamente il telefono è online e pronto ad accettare le chiamate facetime (i dati via 3G sono disattivati). Potrei realizzare qualcosa con Avahi che sto usando sul mio Raspberry Pi, o ci sono altri modi.

+0

Ho rinunciato a questo e ora sto usando il bluetooth per controllare regolarmente se il mio iPhone è nel raggio d'azione. – PiEnthusiast

+0

Nel caso qualcuno si imbatta in questo e si chiede cosa faccio per rilevare la presenza tramite bluetooth: Cerco di risolvere il nome del mio indirizzo (noto) del dispositivo ('sudo hcitool nome xx: xx: xx: xx: xx: xx'). Se ottengo una risposta valida, il telefono si trova nella gamma BT. – PiEnthusiast

risposta

3

È possibile trovare un elenco di dispositivi sulla rete esaminando la cache dell'arp.

arp -a

sufficiente scrivere uno script bash per eseguire arp -a a intervalli regolari, e cercare l'indirizzo MAC del telefono.

Si può andare ancora oltre con questo ed eseguire azioni diverse a seconda della marca del dispositivo collegato.

Le prime 3 cifre esadecimali di un indirizzo mac sono l'id del fornitore.

Prendere il seguente indirizzo MAC:

00:19:E3:AB:CD:EF 

00:19:E3: è uno degli indirizzi MAC registrato per i dispositivi Apple.

Confrontando i dispositivi sulla rete con this list, è possibile rilevare quando ad esempio un dispositivo '3com' o un dispositivo 'dell' si collega alla rete.

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

+0

Grazie per il suggerimento. Purtroppo gli iPhone entrano in una sorta di modalità di sonno profondo quando non vengono utilizzati. La cache dell'arp non mostra nessuno dei miei quattro iDevice. – PiEnthusiast

1

Si può fare "arp-scan -l -r10" per questo (testato questo me stesso), ma il problema è se i dati di telefonia mobile hanno consentito l'iPhone andrà e sospendere wifi se lo schermo è bloccato per sicurezza batteria. quindi è necessario disabilitare i dati mobili .. quindi arp-scan funzionerà.

+0

Sai quante volte l'iPhone connette al WiFi mentre è bloccato? Sto pensando alla rilevazione della presenza delle persone nella costruzione e non dovrebbe essere un problema, se ci sarà precisione circa mezz'ora. –

+0

Vedi la mia mezza risposta *** d di seguito. Gli iPhone bloccati/in attesa inviano una notevole quantità di traffico di rete di basso livello, che può fornire una precisione della risoluzione di ~ 20 minuti – user3235770

1

Ho appena trascorso una settimana a battere su questo problema in modo da poter evitare di inviare allarmi SMS a casa mia quando è al lavoro.

Il ping non funziona perché l'iPhone non risponde a ICMP quando dorme. La lettura della cache ARP non funzionerà perché un iPhone dormiente andrà e verrà (controllarlo ogni 30 secondi per alcuni minuti).

L'unico modo che ho trovato per determinare "in modo affidabile" quando i miei due iPhone sono nella mia rete locale (domestica) consiste nell'utilizzare la libreria dotnet PCAP per cercare tutti i pacchetti provenienti da uno degli indirizzi MAC dei telefoni. Ad esempio, se si esegue Wireshark con il filtro di acquisizione

ether src <iphone-mac-address> 

si vedrà una sorprendente quantità di traffico di rete scoperta/l'annuncio dal telefono. Ha ancora stati di quiescenza, ma finora l'intervallo più lungo che ho visto tra i pacchetti catturati è di circa 10 minuti. Dovresti aspettare fino a quando non hai sentito dal telefono per un certo intervallo (io uso 15 minuti) prima di dichiararlo non a casa.

Con questa tecnica è possibile trovare rapidamente un telefono quando si ricongiunge alla rete domestica, supponendo che il telefono sia configurato per DHCP. Io uso anche il mirroring delle porte sul mio switch Ethernet principale per includere il traffico dai miei punti di accesso wireless.

Non ho una soluzione Raspberry Pi per questo, perché la mia esperienza linux è molto limitata, ma qualcun altro potrebbe essere in grado di aiutarti lungo queste linee. Ho un servizio di Windows che utilizza la libreria PCAP e finora funziona in modo affidabile, con la limitazione di aspettare 15 minuti prima di decidere che un iPhone ha lasciato la rete.

* aggiornamento 2-3-2018 *

ho questo algoritmo di rilevamento fino a circa 5 minuti, utilizzando una combinazione di messaggi ping/ARP dirette ad ogni telefono, circa una volta al minuto. Sembra funzionare bene.