15

我正在尝试检测我的 iPhone 是否与我的 Raspberry Pi 在同一个网络中。当我在家并且我的 iPhone 的存在已在我的 LAN 中注册时,我想执行一个脚本。

似乎当手机处于待机状态时,甚至找不到 iphone-sync 端口(6207/tcp)。“/usr/bin/nmap -n -sT -p62078 [我手机的本地 IP]” 显示没有主机。我想知道我还能扫描什么。显然,手机已在线并准备好接受 facetime 通话(通过 3G 传输的数据已停用)。我可以用我在树莓派上使用的 avahi 完成一些事情吗,或者有其他方法吗?

4

3 回答 3

4

我刚刚花了一周的时间解决这个问题,所以我可以避免在我妻子上班时向她发送家庭短信警报。

Ping 不起作用,因为 iPhone 在睡眠时不会响应 ICMP。读取 ARP 缓存不起作用,因为睡眠中的 iPhone 会来来去去(每 30 秒检查几分钟)。

我发现“可靠”确定我的两部 iPhone 何时在我的本地(家庭)网络上的唯一方法是使用 PCAP dotnet 库来查找来自任一电话 MAC 地址的任何数据包。例如,如果您使用捕获过滤器运行 Wireshark

ether src <iphone-mac-address>

您会看到来自手机的大量网络发现/公告流量。它仍然有静止状态,但到目前为止,我看到的捕获数据包之间的最长间隔约为 10 分钟。在宣布它不在家之前,您必须等到您在一段时间内(我使用 15 分钟)没有接到电话。

使用这种技术,假设您的电话配置为 DHCP,您将在电话重新加入家庭网络时快速找到它。我还在我的主以太网交换机上使用端口镜像来包含来自我的无线接入点的流量。

我没有 Raspberry Pi 解决方案,因为我的 linux 专业知识非常有限,但其他人可能能够在这些方面为您提供帮助。我有一个使用 PCAP 库的 Windows 服务,到目前为止它工作可靠,限制是在确定 iPhone 离开网络之前等待 15 分钟。

* 2018 年 2 月 3 日更新 *

我将这个检测算法缩短到大约 5 分钟,使用定向到每部电话的 ping/arp 消息的组合,大约每分钟一次。似乎工作得很好。

于 2017-12-20T16:01:35.657 回答
2

您可以通过调查您的 arp 缓存找到网络上的设备列表。

arp -a

只需编写一个 bash 脚本以arp -a定期运行,然后搜索您手机的 mac 地址。

您可以更进一步,并根据连接的设备品牌执行不同的操作。

mac 地址的前 3 个十六进制数字是供应商 ID。

取下面的mac地址:

00:19:E3:AB:CD:EF

00:19:E3:是苹果设备的注册mac地址之一。

通过将您网络上的设备与此列表进行比较,您可以检测到例如“3com”设备或“dell”设备何时连接到您的网络。

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

于 2013-07-26T16:25:37.713 回答
2

您可以为此执行“arp-scan -l -r10”(我自己测试过),但问题是如果启用了移动数据,如果屏幕锁定到安全电池,iphone 将进入并暂停 wifi。所以你需要禁用移动数据..然后 arp-scan 将起作用。

于 2013-10-31T10:22:41.173 回答