参考 同盾设备指纹简单分析

同盾设备指纹分析

研究了下设备指纹,我发现设备指纹无非三个方面。

1.设备指纹不可伪造性 2.设备指纹唯一性(降低重码数)3.设备篡改可识别性

下面分别说说以上三个方面。

设备指纹不可伪造,无非就是通过加密的手段,加密后我方可验证是否为我们自己加密的设备信息。

设备指纹唯一性、设备篡改可识别性,以同盾为例子,同盾在生成设备指纹唯一ID时,相应的生成了一些其他组合的DeviceId。

首先当用户篡改设备并且我们存储的设备指纹都被清了时(恢复出厂),依然可以根据其中一组DeviceId识别设备。

说下我知道的几种DeviceId组合:(优先根据设备信息恢复,其次根据本地存储)

1. imei + udid + wifiMac

2. androidId + wifiMac + brand

3. imei + wifiMac + serialNo + totalStorage

其次如果根据DeviceId组合没有找到设备的话,采取读取本地存储的设备指纹,一般生成的设备指纹会存储多个位置,还是以同盾为例,设备指纹存储了3个位置。

手机的IMEI、MEID、UDID、ICCID、IMSI

IMEI

(International Mobile Equipment Identity)是国际移动设备身份码的缩写,国际移动装备辨识码,是由15位数字组成的"电子串号",它与每台手机一一对应,而且该码是全世界唯一的。每一部手机在组装完成后都将被赋予一个全球唯一的一组号码,这个号码从生产到交付使用都将被制造生产的厂商所记录。

IMEI是区别移动设备的标志,储存在移动设备中,可用于监控被窃或无效的移动设备。IMEI可用移动终端设备通过键入“*#06#”查得(不同厂商的手机所需输入的内容不同,同一厂商不同手机所需输入的内容也可能不同)。其总长为15位,每位数字仅使用0~9的数字(含义见下文)。

IMEI俗称“串号”,存储在手机的EEPROM(俗称“码片”)里,熟悉并了解这个号码对我们今后识别手机会起到非常大的作用。首先TAC码(IMEI的前六位数字)前三位在不同的时期会发生变化,而且即使同一部手机在不同的时期也会有不同的TAC码,如大家最熟悉的8210升级8250。再如爱立信的同一型号手机T39MC在不同地区的地方亦会有不同的号码:大陆行货为520406,香港则为520407。

IMEI为TAC + FAC + SNR + SP。

IMEI码由GSM(全球移动通信协会)统一分配,授权BABT(英国通信认证管理委员会)审受。

修改工具:EasyIMEIChanger

MEID

Mobile Equipment IDentifier(MEID)是全球唯一的56bit移动终端标识号。标识号会被烧入终端里,以后可以被修改。可用来对移动式设备进行身份识别和跟踪。由于ESN号段是有限的资源,基本上耗尽,可能还有少量回收利用的号段,所以制定了56位的MEID号段,用来取代32位的ESN号段。MEID主要分配给CDMA制式的手机。

MEID的格式

如上图所示,MEID由14个十六进制字符标识,第15位为校验位,不参与空中传输。

RR:范围A0-FF,由官方分配

XXXXXX:范围 000000-FFFFFF,由官方分配

ZZZZZZ:范围 000000-FFFFFF,厂商分配给每台终端的流水号

C/CD:0-F,校验码

MEID号码的查看,没有一个通用的方法,由各手机制造商自己设置。可以通过查看手机说明书得到查看MEID号码的方法。

相关修改工具:MEID ESN一键修改工具等

UDID(IOS特有)

UDID 「Unique Device Identifier Description」是由子母和数字组成的40个字符串的序号,用来区别每一个唯一的iOS设备,包括 iPhones, iPads, 以及 iPod touches,这些编码看起来是随机的,实际上是跟硬件设备特点相联系的,另外你可以到iTunes,pp助手或itools等软件查看你的udid(设备标识),如下

UDID是用来干什么的?

UDID可以关联其它各种数据到相关设备上。例如,连接到开发者账号,可以允许在发布前让设备安装或测试应用;也可以让开发者获得iOS测试版进行体验。苹果用UDID连接到苹果的ID,这些设备可以自动下载和安装从App Store购买的应用、保存从iTunes购买的音乐、帮助苹果发送推送通知、即时消息。

在iOS 应用早期,UDID被第三方应用开发者和网络广告商用来收集用户数据,可以用来关联地址、记录应用使用习惯……以便推送精准广告。

为什么苹果反对开发人员使用UDID?

iOS 2.0版本以后UIDevice提供一个获取设备唯一标识符的方法uniqueIdentifier,通过该方法我们可以获取设备的序列号,这个也是目前为止唯一可以确认唯一的标示符。

许多开发者把UDID跟用户的真实姓名、密码、住址、其它数据关联起来;网络窥探者会从多个应用收集这些数据,然后顺藤摸瓜得到这个人的许多隐私数据。同时大部分应用确实在频繁传输UDID和私人信息。

为了避免集体诉讼,苹果最终决定在iOS 5 的时候,将这一惯例废除,开发者被引导生成一个唯一的标识符,只能检测应用程序,其他的信息不提供。现在应用试图获取UDID已被禁止且不允许上架。

iOS 6.0系统新增了两个用于替换uniqueIdentifier的接口,分别是:identifierForVendor,advertisingIdentifier。

提供的功能就是“同一开发商的APP在指定机器上都会获得同一个ID。当我们删除了某一个设备上某个开发商的所有APP之后,下次获取将会获取到不同的ID。” 也就是说我们通过该接口不能获取用来唯一标识设备的ID,具体如下:

idfa

  • 全名:advertisingIdentifier
  • 代码:

    1. #import <AdSupport/AdSupport.h>

    2. NSString *adId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];

  • 来源:iOS6.0及以后

  • 说明:直译就是广告id, 在同一个设备上的所有App都会取到相同的值,是苹果专门给各广告提供商用来追踪用户而设的,用户可以在 设置|隐私|广告追踪 里重置此id的值,或限制此id的使用,故此id有可能会取不到值,但好在Apple默认是允许追踪的,而且一般用户都不知道有这么个设置,所以基本上用来监测推广效果,是戳戳有余了。
  • 注意:由于idfa会出现取不到的情况,故绝不可以作为业务分析的主id,来识别用户。

idfv

  • 全名:identifierForVendor
  • 代码:

      NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
    
  • 来源:iOS6.0及以后

  • 说明:顾名思义,是给Vendor标识用户用的,每个设备在所属同一个Vender的应用里,都有相同的值。其中的Vender是指应用提供商,但准确点说,是通过BundleID的反转的前两部分进行匹配,如果相同就是同一个Vender,例如对于com.taobao.app1, com.taobao.app2 这两个BundleID来说,就属于同一个Vender,共享同一个idfv的值。和idfa不同的是,idfv的值是一定能取到的,所以非常适合于作为内部用户行为分析的主id,来标识用户,替代OpenUDID。
  • 注意:如果用户将属于此Vender的所有App卸载,则idfv的值会被重置,即再重装此Vender的App,idfv的值和之前不同。

程序猿们又想到了使用WiFi的mac地址来取代已经废弃了的uniqueIdentifier方法。具体可见: http://stackoverflow.com/questions/677530/how-can-i-programmatically-get-the-mac-address-of-an-iphone

然而在iOS 7中苹果再一次无情的封杀mac地址,使用之前的方法获取到的mac地址全部都变成了02:00:00:00:00:00。然后又有了新方法,使用KeyChain来保存获取到的唯一标示符呢,这样以后即使APP删了再装回来,也可以从KeyChain中读取回来。但是不同程序得到的UDID都不一样,相对于单个程序来说是唯一的,所以这个UDID也就无法唯一的确定某台设备。不过不管怎样,至少可以保证同一个开发商的所有程序针对同一台设备能够获取到相同的不变的UDID。

什么是序列号?(IOS特有)

序列号是一串标识你手机出生证明以及身材特征的信息,甚至还可用来识别是否为官方翻新机。
你可以简单的将这一串数字分割为:aabccdddeef 的形式。拿iPhone 4为例

aa = 工厂及生产线编号 b = 年份 cc =制造周数 ddd = 机身识别码 ee = 颜色  f = 容量大小 ,通过序列号在苹果官网可以查询手机的激活和保修信息

综上,UDID和序列号是iOS设备特有的属性。

ICCID 

ICCID(Integrate circuit card identity) 集成电路卡识别码(固化在手机SIM卡中)

ICCID为IC卡的唯一识别号码,共有20位数字组成,其编码格式为:XXXXXX 0MFSS YYGXX XXXXX。分别介绍如下: 前六位运营商代码:中国移动的为:898600;中国联通的为:898601,中国电信的为:898603。

IMSI

国际移动用户识别码(IMSI:International Mobile Subscriber Identification Number)是区别移动用户的标志,储存在SIM卡中,可用于区别移动用户的有效信息。其总长度不超过15位,同样使用0~9的数字。

IMSI 与你的手机卡是绑定关系 用于区别移动用户的有效信息

IMEI 与你的手机是绑定关系 用于区别移动终端设备

同盾设备指纹简单分析及手机相关ID了解相关推荐

  1. 同盾设备指纹简单分析

    研究了下设备指纹,我发现设备指纹无非三个方面. 1.设备指纹不可伪造性 2.设备指纹唯一性(降低重码数)3.设备篡改可识别性 下面分别说说以上三个方面. 设备指纹不可伪造,无非就是通过加密的手段,加密 ...

  2. 风控7-同盾设备指纹

    python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...

  3. linux下camera驱动分析_LINUX设备驱动模型分析之三 驱动模块相关(DRIVER)接口分析...

    本系列前几篇文章链接如下: <LINUX设备驱动模型分析之一 总体概念说明> <LINUX设备驱动模型分析之二 总线(BUS)接口分析> 上一章我们分析了bus-driver- ...

  4. android10禁用华为桌面,[原创]简单分析华为emui10对第三方桌面的禁用逻辑(华为手机管家app) + 求助新rom的分析入手思路...

    华为开启emui10的公测后, 之前一直禁止切换默认launcher的情况有了新的解决办法 : 冻结 手机管家 即可设置 第三方launcher 这里简单分析华为手机管家中 相关逻辑 求助: 在 最新 ...

  5. 设备指纹(Device Fingerprinting)是什么?

    简单来讲,设备指纹是指可以用于标识出该设备的设备特征或者独特的设备标识.设备指纹因子通常包括计算机的操作系统类型,安装的各种插件,浏览器的语言设置及其时区 .设备的硬件ID,手机的IMEI,电脑的网卡 ...

  6. 设备指纹学习笔记和思考

    设备指纹:用户登录网页.APP时,后台记录的登录设备的"指纹",能够准确识别该设备是否曾经登录过.设备指纹的核心是使用设备的唯一识别码.使用该唯一识别码,可以追踪用户登录网页.AP ...

  7. 29 | 设备指纹:面对各种虚拟设备,如何进行对抗?

    有一句话说"数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已".这句话在风控系统中同样适用,因为风控系统本质上也是一个大数据分析系统.所以,收集更多的数据是提升风控 ...

  8. iOS设备指纹的前世今生

    从暗扣话费.广告流量变现.手机应用分发,到木马刷量.勒索病毒.控制肉鸡挖矿,网络黑产无处不在,而"薅羊毛"正是黑灰产的重要盈利模式之一. "薅上一天,够吃一年." ...

  9. linux i2c adapter 增加设备_LINUX设备驱动模型分析之四 设备模块相关(DEVICE)接口分析...

    本系列前几篇文章链接如下: <LINUX设备驱动模型分析之一 总体概念说明> <LINUX设备驱动模型分析之二 总线(BUS)接口分析> <LINUX设备驱动模型分析之三 ...

最新文章

  1. java中关于try、catch、finally中的细节分析
  2. python去除中文停用词_删除停止词Python
  3. 新的公司:Dendrite
  4. 面向对象程序设计的4个主要特点
  5. splay详解(二)
  6. 无法添加外键约束的原因(cannot add foreign key constraint)
  7. 帧中继多点子接口下配置OSPF
  8. 《工业元宇宙白皮书 2022年 》(附免费pdf下载地址)
  9. PHP调用微信发放现金红包接口
  10. Atitit 软件设计中的各种图纸 uml 之道 1. 常见设计成果与图纸 1 1.1. ui原型图与html 1 1.2. 业务逻辑 伪代码 各种uml图 1 1.3. 业务逻辑 流程图 ns
  11. 东电计算机专业好就业吗,东北电力大学就业前景怎样好不好
  12. CentOS系统下各文件夹的作用
  13. inkscape:图层
  14. python数据维度小测试_数据分析|如何做一个ABtest测验
  15. CSS 实现色彩渐变
  16. 开发客户的渠道+方法
  17. 【9106】天使的起誓
  18. 本地配置多个git账户(公司、GitHub)
  19. 主机ping不通虚拟机 TTL传输中过期的解决办法
  20. 数据中心机柜散热解决方案,知道这两点就够了!

热门文章

  1. Leetcode 1774. Closest Dessert Cost 枚举法 vector 中的insert方法
  2. open-vot:PyTorch 实现 Siamese-FC
  3. wxPython 基本控件
  4. Java并发包concurrent——ConcurrentHashMap
  5. asp mysql查询_asp的 条件查询
  6. 多标签文本分类研究进展概述
  7. MATLAB中fplot函数,画出的figure中曲线存在空白的问题与解决方法。
  8. ospf理论概述.md
  9. 透析《长安十二时辰》里的望楼,人类在唐朝就有5G愿望了?
  10. [离散数学]命题逻辑P_6:命题等价公式及应用