我正在尝试检测我的iPhone是否与我的Raspberry Pi位于同一网络中。当我在家时,我想执行一个脚本,我的iPhone已经在我的局域网中注册了。
似乎当手机处于待机状态时,甚至找不到iphone同步端口(6207 / tcp)。 “/ usr / bin / nmap -n -sT -p62078 [我的手机的本地IP]”显示没有主机。我想知道还有什么我可以扫描的。显然,手机处于在线状态并准备接受正面通话(通过3G停用的数据)。我可以用我在Raspberry Pi上使用的avahi来完成某些事情,或者还有其他方法。
答案 0 :(得分:3)
我只花了一个星期的时间来解决这个问题所以我可以避免在她上班的时候向我的妻子发送短信家庭警报。
Pinging无法正常工作,因为iPhone在睡着时不会对ICMP做出回应。读取ARP缓存不会起作用,因为正在睡觉的iPhone会来去(每隔30秒检查几分钟)。
我找到的唯一可靠方式'确定我的两个iPhone在我的本地(家庭)网络上的时间是使用PCAP dotnet库来查找源自任一电话的任何数据包' MAC地址。例如,如果您使用捕获过滤器
运行Wiresharkether src <iphone-mac-address>
您将看到来自手机的惊人数量的网络发现/通知流量。它仍然具有静止状态,但到目前为止,我在捕获的数据包之间看到的最长间隔大约是10分钟。你必须等到你没有通过电话听到一段时间(我使用15分钟)才宣布它不在家。
使用此技术,您可以在重新加入家庭网络时快速找到手机,假设您的手机配置了DHCP。我还在主以太网交换机上使用端口镜像来包含来自无线接入点的流量。
我没有这方面的Raspberry Pi解决方案,因为我的linux专业知识非常有限,但其他人可能能够帮助你实现这一目标。我有一个使用PCAP库的Windows服务,到目前为止它工作可靠,在决定iPhone离开网络之前等待15分钟的限制。
*更新2-3-2018 *
我将这种检测算法缩短到大约5分钟,使用针对每部手机的ping / arp消息的组合,大约每分钟一次。似乎工作得很好。
答案 1 :(得分:2)
您可以通过调查arp缓存找到网络上的设备列表。
arp -a
只需编写一个bash脚本,定期运行arp -a
,然后搜索手机的mac地址。
您可以更进一步,并根据所连接的设备品牌执行不同的操作。
mac地址的前3个十六进制数字是供应商ID。
使用以下mac地址:
00:19:E3:AB:CD:EF
00:19:E3:
是Apple设备的注册mac地址之一。
通过将网络上的设备与this list进行比较,您可以检测到例如“3com”设备或“dell”设备何时连接到您的网络。
答案 2 :(得分:1)
你可以为此做“arp-scan -l -r10”(我自己测试过),但问题是如果启用移动数据,如果屏幕锁定安全电池,iphone将暂停wifi。所以你需要禁用移动数据..然后arp-scan将起作用。