我正在尝试检测我的 iPhone 是否与我的 Raspberry Pi 在同一网络中。我想当我在家并且我的 iPhone 已在我的 LAN 中注册时执行脚本。
似乎当手机处于待机状态时,甚至找不到 iphone 同步端口(6207/tcp)。 “/usr/bin/nmap -n -sT -p62078 [我手机的本地IP]”显示没有主机。我想知道我还能扫描什么。显然,手机已在线并准备好接受 Facetime 通话(通过 3G 的数据已停用)。我可以用我在 Raspberry Pi 上使用的 avahi 来完成一些事情吗?或者还有其他方法吗?
我刚刚花了一周的时间来解决这个问题,这样我就可以在我妻子上班时不向她发送短信家庭警报。
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 消息组合,大约每分钟一次。看起来效果很好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)