2013-05-29 124 views
11

我正在嘗試檢測我的iPhone是否與我的Raspberry Pi位於同一網絡中。我想在家中時執行腳本,並且我的iPhone的狀態已註冊在我的LAN中。如何在網絡上檢測iPhone?

看來,當手機處於待機狀態時,甚至找不到iphone-sync端口(6207/tcp)。 「/ usr/bin/nmap -n -sT -p62078 [我的手機本地IP]」不顯示主機。我不知道我還能掃描什麼。很顯然,手機在線並準備好接受facetime電話(通過3G的數據已停用)。我可以用我在Raspberry Pi上使用的avahi完成某些任務嗎?或者有其他方法。

+0

我已經放棄了這個,現在我正在使用藍牙來定期檢查我的iPhone是否在範圍內。 – PiEnthusiast

+0

如果有人遇到這種情況,並想知道我在做什麼來檢測使用藍牙的存在: 我嘗試解析我的(已知)設備地址的名稱('sudo hcitool名稱xx:xx:xx:xx:xx: xx')。如果我得到有效的回覆,手機在BT範圍內。 – PiEnthusiast

回答

3

您可以通過調查您的arp緩存來找到網絡上的設備列表。

arp -a

只需編寫一個bash腳本以定期運行arp -a,並搜索您的手機的MAC地址。

您可以更進一步,根據連接的設備品牌執行不同的操作。

mac地址的前3個十六進制數字是廠商ID。

採取下列MAC地址:

00:19:E3:AB:CD:EF 

00:19:E3:是註冊的MAC地址爲蘋果設備之一。

通過將您的網絡上的設備與this list進行比較,您可以檢測何時例如「3com」設備或「戴爾」設備連接到您的網絡。

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

+0

感謝您的提示。令人遺憾的是,iPhone在不使用時會進入某種深度睡眠模式。 arp緩存不顯示我的四個iDevices中的任何一個。 – PiEnthusiast

1

你可以做「ARP掃描-l -R10」對於(測試此我自己),但問題是,如果啓用了移動數據,iPhone將進入並暫停無線網絡連接,如果屏幕被鎖定安全電池。所以你需要禁用移動數據..然後arp掃描將工作。

+0

你知道iPhone在鎖定的情況下多長時間連接到WiFi嗎?我正在考慮建築物中人員的存在性檢測,如果準確度大約爲半小時,那麼它不會成爲問題。 –

+0

請參閱下面的我的答案。鎖定/睡眠iPhone會發送相當數量的低層網絡流量,這可以爲您提供約20分鐘的解析精度 – user3235770

1

我剛剛在這個問題上花了一個星期的時間,所以當她在工作時,我可以避免發送短信給家裏的鬧鐘。

Ping不起作用,因爲iPhone睡覺時不會響應ICMP。讀取ARP緩存將不起作用,因爲睡眠的iPhone會來來去去(每隔30秒檢查一次)。

我發現'可靠'確定我的兩個iPhone在我的本地(家庭)網絡上的唯一方法是使用PCAP網點庫查找任何來自任一電話的MAC地址的數據包。例如,如果您使用捕獲過濾器運行Wireshark

ether src <iphone-mac-address> 

您將看到令人驚訝的來自手機的網絡發現/通告流量。它仍然處於靜止狀態,但到目前爲止,我所見到的捕獲數據包之間的最長時間間隔大約爲10分鐘。在聲明不在​​家之前,您需要等一段時間(我用15分鐘)才能聽到電話。

使用此技術,假設您的電話配置爲DHCP,您將在重新加入家庭網絡時快速找到電話。我還在我的主要以太網交換機上使用端口鏡像,以包含來自我的無線接入點的流量。

我沒有Raspberry Pi解決方案,因爲我的linux專業知識非常有限,但其他人可能能夠幫助您沿着這些路線。我有一個使用PCAP庫的Windows服務,迄今爲止它的工作可靠,限制等待15分鐘,然後決定iPhone離開網絡。

*更新2018年2月3日*

我有這樣的檢測算法下降到約5分鐘,使用每分鐘針對每個電話,約一次平/ ARP消息的組合。似乎很好。