检查地理位置是不是被欺骗

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

【讨论】:

以上是关于检查地理位置是不是被欺骗的主要内容,如果未能解决你的问题,请参考以下文章

欺骗谷歌地图位置

如何使用指针检查数组中的某个位置是不是被修改

位置欺骗器破坏了地理定位器?

检查是不是启用了“访问我的位置” - Android

防止欺骗位置

有没有办法检查 iOS 设备是不是被锁定/解锁?