一种获取设备特征ID方法和系统与流程

文档序号:13520689阅读:186来源:国知局
本发明涉及通讯领域,特别是涉及一种获取设备特征id方法。本发明还涉及用于获取设备特征id的系统。
背景技术
:长久以来获得稳定而且可信赖的用户设备标识,是诸多行业最为基础的数据支持。虽然并不被人所熟知,但是却有很多种方法来帮助系统生产不同的id。最基础的方法,就通过生产随机数,分配给不同的用户,这种常用于含有账户体系的业务场景。例如腾讯qq,给每一个用户都分配一个不重复的qq号码,作为其系统服务的id。但也有其他的方式,主要通过采集设备使用者的信息来生产id,例如通过采集音频数据、加速传感器数据或者生物指纹传感器的数据,这种可以服务于跨设备的用户标识。但是,如上两种方法,很难满足于移动广告行业反作弊的需求。主要原因有如下两点:1、移动广告交易主要是以设备为单元进行消耗的计费,例如cpc(按照点击设备数计费)、cpm(按照曝光设备数计费)、cpa(按照激活设备数计费),那么针对持有多设备的用户以及不具有账户体系的广告平台,随机数的方法是不适用的;2、广告作弊者主要是通过变换较为常见的设备标识进行伪装,通过采集使用者信息会有较多局限,第一是采集方法都是基于特质的传感器,不适用于大部分移动设备,第二是用户识别的方法复杂并且精准度有限。基于以上描述的背景,广告行业从业者进行诸多尝试,将基于操作系统的设备标识方法,用于移动广告交易及反作弊。基于系统标准api的设备标识,这是最为通用的设备标识方法,如下为在部分平台所使用的设备标识说明。主要通过系统标准api获取对应的设备参数,每个原生的移动设备操作系统都会提供对应的设备标识。如下为具体的设备标识说明:msi国际移动用户识别码(imsi:internationalmobilesubscriberidentificationnumber)是区别移动用户的标志,储存在sim卡中,可用于区别移动用户的有效信息。imei(国际移动设备识别码(imei:internationalmobileequipmentidentificationnumber)是区别移动设备的标志,储存在移动设备中,可用于监控被窃或无效的移动设备。esn(electronicserialnumbers):电子序列号,在cdma系统中,是鉴别一个物理硬件设备唯一的标识。也就是说每个手机都用这个唯一的id来鉴别自己,就跟人的身份证一样。meid(mobileequipmentid):由于cdma移动设备增多,导致原来8位的esn不够用,所以56bits=(56/4=14bytes)的meid横空出世。现在的cdma手机一般esn/meid两者都有。meid也是用16进制来表示。在移动广告行业中,最通用的设备标识方法是基于设备标准公开api获取,而这种方式,id的篡改成本较低,普通的移动端开发者可以通过篡改对应的设备值,或者通过篡改系统标准接口的返回值,来进行设备伪装,具体篡改方式通过apihooking比较常见。基于设备标准公开api获取用户设备特征id的技术原理为,由app/sdk发起请求标准公开api,api请求类库(libraries),类库再请求内核(linux)数据,再向上一层返回至app/sdk。在这个过程中,常见的作弊者只要在libraries这一层级使用hooking,便可监听标准api层级的请求并拦截,然后返回伪造数据。导致了获取的设备特征id不准确。技术实现要素:有鉴于此,本发明提供了一种设备特征id方法和系统,可以解决现有技术通过系统标准api获取设备特征id易被篡改导致不准确的问题。本发明通过以下技术方案实现:通过内核api来代替标准公开api,利用内核api请求类库层级的runtime向内核获取设备特征id,可避免作弊者利用hooking拦截并伪造数据。直接请求操作系统libraries层级的runtime,由runtime请求内核数据,绕过了标准公开api层级的监听,保证了获取的设备特征id的真实性。根据本发明的第一方面,本发明提供了一种获得设备特征id的方法,所述方法包括以下步骤:发送获取设备特征id的请求给内核api;利用内核api发送获取设备特征id的请求给类库层级;类库层级请求内核数据得到设备特征id;获取的设备特征id经由类库层级通过内核api返回。所述内核api是能够防止获取到设备特征id返回时被篡改的不同于标准公开api的api。优选地,在所述类库层级中,由libraries层级的runtime发送获取设备特征id的请求。在本发明的一些实施方式中,所述设备特征id包括mac、imei、imsi、idfa、和/或cid。优选地,所获取的设备特征id与通过标准公开api获得的设备特征id比对,比对结果作为参数用于判断设备是否为虚拟设备。可选地,所获取的设备特征id与通过标准公开api获得的设备特征id比对,比对结果作为参数用于判断与所述设备特征id相关的数据是否为作弊数据。在本发明的一些实施方式中,所述方法还获取wifi列表、os激活时间、和传感器列表中的一种或多种。优选地,所述方法还包括通过哈希算法将获得的设备特征id、wifi列表、os激活时间、和/或传感器列表转换为字符串。优选地,所述方法还包括通过采集到的每个指标所得的分数和权重综合判断设备是否为虚拟设备。根据本发明的第二方面,本发明还提供一种获得设备特征id的系统,其系统包括:采集模块,执行发送获取设备特征id的请求;获取模块,获取根据请求返回的设备特征id;存储模块,为设备特征id库,存储计算出的设备特征id。优选地,所述采集模块还包括:第一请求单元,执行app/sdk发送获取设备特征id的请求给内核api的步骤;第二请求单元,执行利用内核api发送获取设备特征id的请求给类库层级runtime的步骤;第三请求单元,执行类库层级runtime请求内核数据得到设备特征id的步骤。在本发明的一些实施方式中,所述采集模块还包括第四请求单元,用于获取wifi列表、os激活时间、和传感器列表中的一种或多种。优选地,所述系统还包括转换模块,用于通过哈希算法将获得的设备特征id、wifi列表、os激活时间、和/或传感器列表转换为字符串。优选地,所述系统还包括判定模块,其通过采集到的每个指标所得的分数和权重综合判断设备是否为虚拟设备。在本发明的一些实施方式中,所述设备特征id包括mac、imei、imsi、idfa、和/或cid。优选地,所获取的设备特征id与通过标准公开api获得的设备特征id比对,比对结果作为参数用于判断设备是否为虚拟设备。可选地,所获取的设备特征id与通过标准公开api获得的设备特征id比对,比对结果作为参数用于判断与所述设备特征id相关的数据是否为作弊数据。与现有技术相比本发明通过不使用标准应用层api,而使用内核api进行设备特征id获取,由runtime请求内核数据,绕过了标准公开api层级的监听,有效防止了设备特征id被篡改,提高了获取数据的准确性。附图说明本发明的下列附图在此作为本发明的一部分用于理解本发明。图1是示意地表示本发明一些实施装置的结构图。图2是示意地表示本发明一些实施方式的方法的流程图。图3是示意性地表示本发明的方法的工作原理。具体实施方式在下文的描述中,给出了大量具体的细节以便提供对本发明更为彻底的理解。然而,对于本领域技术人员来说显而易见的是,本发明可以无需一个或多个这些细节而得以实施。在其他的例子中,为了避免与本发明发生混淆,对于本领域公知的一些技术特征未进行描述。在本发明中,术语“内核api”(kernelapi)也包括私有api(privateapi)。所述私有api是指放在privateframeworks框架中的api。在本发明中,术语“类库”(libraries)是一个综合性的面向对象的可重用类型集合,这些类型包括:接口、抽象类和具体类,类库可以解决一系列常见编程任务(包括诸如字符串管理、数据收集、数据库连接以及文件访问等任务),还可以解决多种专用开发任务(控制台应用程序、桌面应用程序、web应用程序等)。总体来说,本发明是通过app/sdk发送获取设备特征id的请求给内核api,内核api通过类库层级runtime直接请求内核数据获取准确的设备特征id,此设备特征id,将和设备的其他基于硬件层的id一起,纳入用户的id组中。为使本发明的目的、技术方案和优点更加清晰,以下结合附图1,2说明本发明的一种获得设备特征id的系统及方法。图1是示意地表示本发明一些实施装置的结构图。如图1所示在根据本发明所述的系统中,可以包括采集模块110、获取模块120、存储模块130。所述采集模块110包括:第一请求单元1101、第二请求单元、第三请求单元,第一请求单元1101通过步骤s210,由app/sdk向特定的api发送获取设备特征id的请求,第二请求单元1102通过步骤s220,由内核api发送获取设备特征id的请求给类库层级的runtime,第三请求单元1103通过步骤s230,由runtime向内核请求设备特征id。所述获取模块120,通过步骤s240将获取的设备特征id经由类库层级通过内核api返回给app/sdk。所述的存储模块130,为设备特征id库,存储获得的设备特征id。接下来参照图2是示意地表示使用本发明一些实施方式的方法的流程图。如图2所示:在步骤s210处,通过app/sdk发送获取设备特征id的请求给内核api。在步骤s220处,内核api发送获取设备特征id的请求给类库层级的runtime。在步骤s230处,runtime请求内核数据得到设备特征id。所述设备特征id包括mac、imei、imsi、idfa、和/或cid。在步骤s240处,获取的设备特征id经由类库层级通过内核api返回给app/sdk。实施例1为测试内核api的方案是否有效,遂做如下测试:*原始数据发现不同设备的mac地址相同,设备a和b至少一台为虚拟设备。通过大量的实际测试(比如使用虚拟机模拟安卓操作系统更改系统参数或是系统安装基于“hook机制”的作弊框架)发现使用公共api获取mac地址时,作弊机制会hook住本次获取请求,然后返回预设的假数据(如随机生成的mac地址),得到一条假的系统参数。发明人通过私有api方式获取mac地址,绕过了作弊框架的hook,直接深入“osframework”层之下,获取到的原始mac值如下:使用内核api获得的设备a的数据比较:androidsdkapi获取的mac地址内核api获取的mac地址4d:39:f9:4c:48:4128:e3:1f:b9:8a:01使用内核api获得的设备b的数据比较:androidsdkapi获取的mac地址内核api获取的mac地址4d:39:f9:4c:48:4127:f4:1f:96:a8:02发现利用标准公开api和内核api获得的mac地址均不相同,说明设备a和b是虚拟设备的可能性很大。然后再通过对比wifilist、os激活时间、传感器列表等生成的专属设备指纹id,综合阈值判定及是否具有作弊行为或虚拟设备的特征。实施例2真实情况下对待测设备c用标准公开api和私有api采集设备的mac地址。androidsdkapi获取的mac地址内核api获取的mac地址34:b9:f9:4c:a3:4134:b9:f9:4c:a3:41发现利用标准公开api和内核api获得的mac地址一致,说明设备c是虚拟设备的可能性比较小。然后再通过对比wifilist、os激活时间、传感器列表等生成的专属设备指纹id,综合阈值判定及是否具有作弊行为或虚拟设备的特征。实施例3真实情况下对待测设备用标准公开api和私有api采集设备的mac地址。androidsdkapi获取设备的mac地址内核api获取的mac地址34:b9:f9:4c:a3:4128:e3:1f:b9:8a:014d:39:f9:4c:48:4128:e3:1f:b9:8a:0127:f4:1f:96:a8:0228:e3:1f:b9:8a:0168:e3:3f:b9:a5:7128:e3:1f:b9:8a:01发现利用标准公开api与内核api获得的mac地址不相同,且虽然通过标准公开api获得的mac地址各不相同,但是通过内核api获得的mac地址均为28:e3:1f:b9:8a:01。说明采集到这些设备数据属于用同一物理设备作弊产生的数据。利用内核api(私有api),也可以获取imei、imsi、idfa、和/或cid等设备特征id。理论上讲,如果是真实设备,大多数情况下内核api和标准公开api获得的设备特征id是相同的。当获得的设备特征id不同时,可以认为该设备为虚拟设备的可能性很高。再通过对比wifilist、os激活时间、传感器列表等利用哈希算法生成的专属设备指纹id。所述专属设备指纹id可以与之前获得的设备特征id一起作为判断设备是否为虚拟设备的参数。本发明的利用内核api获取设备特征id的方法可以单独或与其他方法一起综合判断设备是否为虚拟设备。通过本发明的方法,可以跳过现有很多作弊的手段,获得真实的设备特征id,为解决数据真实性研究提供了技术保障。本发明不限于上述实施方式,在本发明思想的范围内可以进行各种变更。本发明已通过上述实施例进行了说明,但应当理解的是,上述实施例只是用于举例和说明的目的,而非意在将本发明限制于所描述的实施例范围内。此外本领域技术人员可以理解的是,本发明并不局限于上述实施例,根据本发明教导还可以做出更多种的变型和修改,这些变型和修改均落在本发明所要求保护的范围以内。本发明的保护范围由附属的权利要求书及其等效范围所界定。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1