最近收到了第三方的反馈,说除了之前可以检测到的软件层面的虚拟定位意外,如今更是发现了一个硬件设备,299软妹币一个,专门用来对非越狱的iOS系统进行模拟位置。。。连硬件设备都派上来了,无所不用其极啊!恰恰也说明网约车司机们,对这方面的需求还是很大的,闷声发大财的人真的很多(手动思考状)。
更新一下(2018.7.24)
- 研究了下两台设备间的相同点与不同点:
- 相同点:
- 厂家信息中name、manufacturer、modelNumber、firmwareRevision、hardwareRevision与protocols字段内容相同;
- 蓝牙广播中kCBAdvDataServiceUUIDs的值相同,都为EEEE8317-01EE-0220-0020-00000021EAFE;
- 不同点:
- 厂家信息中serialNumber字段不同;
- 蓝牙广播中kCBAdvDataLocalName、identifier值不同;
- 相同点:
- 目前发现一个问题,在iOS9上可以获取所有外接设备,不需要额外操作;但是在iOS10、11上,需要在APP的Info.plist中增加相应的字段:Supported external accessory protocols,并且需要在其中指定需要检测的外接设备的protocol,才可以获取到外接设备列表:
这样就会出现一个情况,在iOS10或者11上,要检测特定类型的设备,必须APP先在Info.plist中写上这个类型的protocol,这样就不能实现检测任意设备的效果。并且这个是iOS的硬性要求,无法跳过。
————以上为7月24日更新————
硬件实现原理调研
“位移精灵”硬件在蓝牙列表中显示为2个设备,分别为:WY-xxxx-BLE 和 WY-xxxx-MFI (xxxx代表四位数字)
1.1 WY-xxxx-MFI 设备为经过MFI验证的辅助GPS设备(作为GPS信息输入源),但其内部并没有真正的GPS芯片,而是模拟的假GPS数据
1.2 WY-xxxx-BLE 设备为与对应App之间通讯传输使用,可以在App端指定要模拟的位置模拟效果:
2.1 iOS系统定位服务直接返回模拟的结果,调用堆栈与定位服务的正常返回一样(之前出现的虚拟定位插件在这里有差别)
2.2 在室内可以稳定模拟位置;在室外结果不稳定,定位结果会在模拟位置与正常位置之间来回跳动,有70%数据为正常结果
2.3 模拟的定位结果返回数据无特别明显的差别,目前看到的唯一差别为altitude值在90%情况下为0尝试连接获取设备信息:
通过代码访问iOS设备的ExternalAccessory列表,也可以看到该设备,设备的生产厂家信息如下(这些信息是硬件生产厂家指定的):1
2
3
4
5
6
7
8
9
10
11name: C01-BR30 //设备名称
manufacturer: Zhejiang Shenghui Lighting Co., Ltd //生产厂家
modelNumber: BR30 //设备模块编号
serialNumber: 000218000000 //序列号
firmwareRevision: 1.0.1 //固件版本
hardwareRevision: 1.0.1 //硬件版本
protocols: "com.sengled.protocol.btspeaker" //通讯协议
另外,通过iOS的私有API可以拿到:
macAddress: 00:06:00:00:02:18 //mac地址
preferredApp: T83739RUE3 //对应一个Apple开发者账户
supportsLocation: true //是否支持定位尝试与设备通讯:
4.1 与名为WY-xxxx-MFI的设备尝试连接,由于使用的是私有的通讯协议,不知道具体协议内容,所以无法与设备进行通讯,设备默认状态下不对外发送任何数据,向设备发送一些随机的测试内容均没有相应,没能够获取设备通讯数据。
4.2 与名为WY-xxxx-BLE的设备尝试连接,但连接后瞬间被设备主动断开连接,推测是连接请求中的没有附带符合要求的参数导致,无法进一步与设备通讯。识别检测:
因为MFI开发属于硬件范畴(并且文档Apple要求严格保密),而我们SDK的属于软件层面,因此需要从软件层面出发进行检测,可以通过获取iOS设备的ExternalAccessory列表,从中判断是否有特定类型的设备去识别,但此方案有以下两个风险:
5.1 硬件设备厂家信息更新会使得特征失效。
5.2 如果是盗用手段借助了通过认证的MFI芯片,则厂家正常生产的智能家居类设备可能被误判。- 另外,可以查到生产厂家是生产LED灯的厂家,从Apple官方可以查询到,该企业通过了MFI认证,可以断定设备是借助了这个厂家的MFI芯片,不确定是不是非法破解挪用。