2013-05-29 84 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消息的组合。似乎很好。