检查地理位置是不是被欺骗
Posted
技术标签:
【中文标题】检查地理位置是不是被欺骗【英文标题】:Check if geo-location has been spoofed检查地理位置是否被欺骗 【发布时间】:2011-10-01 05:22:07 【问题描述】:我想确保 LocationListener 接收到的位置是“真实的”,而不是来自欺骗性来源(即应用程序Location Spoofer)。我不在乎“但用户有时想欺骗位置”——这是关于一个不会在安卓市场上分发的应用程序。应用程序不需要那么准确的位置 - 它只需要是“真实的”。
你认为有办法检查位置是否被欺骗?你认为防止位置欺骗的好方法是什么?有没有一种 android-method 可以给我真实的但是位置?是否有一种 android-method 来确定位置是否被欺骗?
我的想法:
如果安装了位置欺骗应用程序,请检查黑名单 启用/禁用不同的位置提供程序并检查其返回的位置 运行后台服务监视位置(以被动方式)并检查突然的位置变化请给我你对这个问题的想法和意见。
【问题讨论】:
【参考方案1】: 来自提供商名称:“gps”或“network”是正确的大多数欺骗者会忘记发送 GPS 状态更新。这是您可以利用的优势
// returns true if mock location enabled, false if not enabled.
if (Settings.Secure.getString(getContentResolver(),
Settings.Secure.ALLOW_MOCK_LOCATION).equals("0"))
return false;
else return true;
最好的方法是这样的:
模拟位置提供程序不发送 NMEA 数据。所以创建一个 NMEA 监听器。如果您没有获得 NMEA 更新,但您在 onLocationChanged() 中获得了有效的 GPS 更新,则使用了欺骗。【讨论】:
嗨 Reno,我不知道 NMEA 监听器?怎么引导清楚? ALLOW_MOCK_LOCATION 已弃用 像 Fake GPS Go 这样的应用程序发送 NMEA,知道如何捕捉这种类型的虚假位置吗?【参考方案2】:查看下一页上的“维护当前最佳估计”主题:
Maintaining a current best estimate
【讨论】:
以上是关于检查地理位置是不是被欺骗的主要内容,如果未能解决你的问题,请参考以下文章