公司目前在办公室内布设了一套室内定位的实验环境,用的是华为路由器,采用的算法是基于信号强度的RSSI算法。公司目前希望能使用这套设备得到无线网络覆盖范围下的所有移动设备(对应每个人)的MAC地址,同时获取他们的位置、活动规律,以及用于客户那边实现反向寻车、客流分析等方面的应用。
简单说一下Wifi定位的原理:
当你的手机打开Wifi时(不需要连接到某个网络哦),手机就会定期地向外发送一些带有MAC地址的探针(英文名:Probe,其实就是一个数据包),路由器(我们称它为AP)收到探针后,会得到几个信息:1.信号强度,2.MAC地址。当我们网络内多个AP都收到你的手机探针后,通过分析信号强度,可以推测距离,进而计算位置。
那么,也就是说,只要你的手机开着WIfi,进入到我的无线网络中,我就可以知道你的MAC地址,和你的位置。
但往往理论上讲讲是挺美好的,实际应用起来问题多多。下面主要讲问题和对策:
1. APPLE公司从IOS8开始,使用了一种新的技术,他们叫做"MAC Randomization"。中文名叫做MAC地址随机化。。目的是什么呢?就是防止上面方法提到的追踪你的MAC地址,进而在你不知道的情况下得到你的位置。所以,APPLE手机在Wifi开启但未连接、手机锁屏、位置服务关闭时,向外发送的探针是随机产生的MAC地址,而不是你手机的真实MAC!随机产生的MAC并不是IEEE授权给各厂商的,而是一些“本地MAC地址(locally administered addresses)”(具体参考https://en.wikipedia.org/wiki/MAC_address)。
参考下面的连接:
http://www.imore.com/closer-look-ios-8s-mac-randomization
而且,IEEE 802.11 在最近的Presentation中也提到,将来会把这项技术纳入到标准中,用来保护隐私。其实,我们测试过多种品牌的手机,SONY早在2年前就已经这么做了(业界良心啊),而一些知名品牌都没有这方面的应用。
既然手机厂商都跳出来说不让你获取MAC地址了,那么是不是Wifi应用就不能做了呢?其实有一些还是可以的。比如客流统计,因为手机MAC也不是一直随机。通过Sniffer探测,可以发现,手机在一段时间(10分钟左右)内使用一个唯一的虚假MAC。那么我们只要select count(distinct(mac))..where ..10分钟....就可以汇总出宏观上的客流数量了。