移动终端设备ID虫子小孩

那么,在当前的Android和iOS两大阵营上,系统是否提供了现成的能够唯一且准确的标识一台终端设备的ID给到开发者采集获取呢?毫无疑问,答案是否定的。Google官方的说法是,一切能跟踪用户的ID都涉及到用户隐私的保护,属于危险级权限,这个在Android6.0上就做了权限级别划分,同时也赋予了用户更灵活的权限控制主动权。iOS就不用说,一向做的”非常棒“,限制各种ID的采集。OK,下面会一一给大家介绍终端各种ID的采集方式以及准确性。

二、Android篇

1、IMEI/MEID

简介之维基百科:

终端标准采集方式:

TelephonyManagermanager=(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);Stringimei=manager.getDeviceId();

好了,这里有人就会有疑问,对于市面上众多的双卡双待手机,是不是会有两个ID,如何把这两个ID都采集上来?

有两个IMEI,或者一个IMEI和一个MEID的设备都存在,Android原生系统并不支持双卡双待,均由厂商在硬件,系统层定制实现。由于没有统一的实现规范标准,那么对应的采集方式也需要进行厂商机型适配,例如三星的某些机型上,要拿到第二个TelephonyManager的实例,getSystemService(Context.TELEPHONY_SERVICE)中Context.TELEPHONY_SERVICE的值为"phone2",默认为"phone",见下图:

HTC的机型又为"htctelephony",基于MTK芯片解决方案或者华为,小米的又各不相同。

采集有效率:整体96%左右,其中接近一个点的为"","null"无效字符串,其他为

000000000000000","111111111111111","123456789123456"等各种奇葩无效串,以及大批量的山寨重复IMEI。

对于系统级应用或者桌面应用,由于获取采集时机在设备模块初始化未完成之前,也会导致设备ID采集不到的情况发生,另外由于像手机管家,360手机助手,和一些厂商ROM自带的权限管家,有阻止应用采集手机IMEI的功能,设置之后也会导致正常采集返回0串或者其他固定串。还有山寨手机厂商为了节省成本,批量复制重复IMEI串烧进手机的EEPROM里面。

2、MAC

WifiManagerwifi=(WifiManager)context.getSystemService(Context.WIFI_SERVICE);WifiInfoinfo=wifi.getConnectionInfo();Stringmac=info.getMacAddress();

好了,问题又来了,在Android6.0及以上的系统上,通过上面的系统接口采集到的MAC地址返回的是一个固定串:02:00:00:00:00:00。这个问题会在第六小节Android6.0特别篇里面统一介绍。

另外,我们在分析MAC地址的有效唯一性时发现,会出现同一个真实IMEI可对应多条MAC地址,也就是说MAC地址会发生变化(先排除作弊工具有意串改的场景,ID串改的在第八小节中统一介绍)。研究发现用户/刷机商在进行线刷时损坏nvram导致每次使用WIFI联网或者手机重启时MAC地址变化,nvram损坏的情况下,系统由于获取不到真实的MAC地址,Android内核会自动生成一个临时的虚拟MAC地址供用户联网,且每次重启或者断网重连时重新生成一个新的MAC地址(前3个字节不变,后3个字节随机生成),并且会在WIFI列表中显示一个“NVRAMWARNINGErr=0x10”信号项。

采集有效率:93%左右

3、IMSI

简介之百度百科:国际移动用户识别码(IMSI:InternationalMobileSubscriberIdentificationNumber)是区别移动用户的标志,储存在SIM卡中,可用于区别移动用户的有效信息。其总长度不超过15位,同样使用0~9的数字。其中MCC是移动用户所属国家代号,占3位数字,中国的MCC规定为460;MNC是移动网号码,由两位或者三位数字组成,中国移动的移动网络编码(MNC)为00;用于识别移动用户所归属的移动通信网;MSIN是移动用户识别码,用以识别某一移动通信网中的移动用户。

那这里注意了,此ID是跟SIM卡绑定的,更换SIM卡就会发生变化,同样在仅支持wifi的pad设备上是没有的。

TelephonyManagermanager=(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);Stringimsi=manager.getSubscriberId();

IMSI跟IMEI一样,同样也会遇到双卡的问题,如果两个串号均想采集,那就需要根据不同的厂商机型的实现方式进行适配。

采集有效率:98%左右,存在无SIM卡的终端设备获取不到的问题,最大的问题是会发生变化,与终端设备非强绑定。

4、Android_ID

简介:Android_ID是设备首次启动时,系统生成的一个唯一串号,长16字节(例:70560687d711af97),由com.android.providers.settings这个系统程序所管理,Android6.0以下储存在/data/data/com.android.providers.settings/databases/settings.db中的secure表。

系统生成此ID的部分源码如下:

finalSecureRandomrandom=newSecureRandom();finalStringnewAndroidIdValue=Long.toHexString(random.nextLong());finalContentValuesvalues=newContentValues();values.put(Settings.NameValueTable.NAME,Settings.Secure.ANDROID_ID);values.put(Settings.NameValueTable.VALUE,newAndroidIdValue);

Settings.Secure.getString(context.getContentResolver(),"android_id")

了解了以上的信息,对此ID就比较清楚了,此ID与硬件无关,与Android系统有关,所以当系统还原出厂设置,刷机时这个ID就会重新生成了。另据官方资料显示,此ID在>=2.3的统上是可靠并且稳定的。But,由于国内的手机基本都是厂商定制的ROM,所以此ID的控制权均由厂商ROM层来控制,难免会发生一些bug,导致部分机型上的ID都相同。另外在OTAROM升级的时候,有些厂商会保留原有db信息不变,有些厂商会清除重新生成。

采集有效率:99%左右,与系统强依赖,稳定性不足。

5、CID(forMMC,SDCard)

简介:CardIdentificationRegister(CID),顾名思义,做为存储卡片的唯一识别信息,规范上要求每张卡片的ID都唯一。CID寄存器有16字节长,如下表所示,它包含了本卡的特别识别码(ID号)。这些信息是在卡的生产期间被编程(烧录),主控制器不能修改它们的内容。注意:SD卡的CID寄存器和MMC卡的CID寄存器在记录结构上是不同的。

adbshellcat/sys/class/mmc_host/mmc*/mmc*:*/cid

一般来讲MMC0保存的是内置存储卡的信息,MMC1保存的是扩展存储卡也就是SD卡的信息。因为SD卡跟终端设备又不是强关联的,会因为更换升级发生变化,那么我们主要看手机内置存储卡的CID。

采集有效率:95%~96%与IMEI相当,在部分山寨低端机器上,会出现采集不到和采集的是SD卡的CID,初步分析是由于山寨低端机器上采用的存储设备为Flash卡或者并未遵循标准的设计规范,因此而采集不到。

6、Android6.0特别篇

2)、MAC地址通过非系统接口可采集(6.0以下通过系统接口采集),采集场景仅限于处于wifi连接状态。

非系统接口,其实指的就是直接读取文件的方式,如下:

cat/sys/class/net/wlan0/address

cat/sys/devices/virtual/net/wlan0/address

3)、AndroidID采集不受影响,但此ID不与硬件绑定,刷机,系统还原,升级等场景会发生变化,不稳定。

说明:应用编译时选择的targetSdkVersion>=23,在6.0及以上的系统运行才会触发权限提示框,<23打出的apk包不受此影响。

7、Google官方推荐篇

在16年1月初,MIG商务合作中心的同事给予支持,我们团队与Google的官方技术人员有过两次针对6.0新特性(主要是权限管理方面)的交流咨询会议,这里也把官方人员推荐的做法也同步给大家了解。总结一下主要有三个建议:

TheInstanceIDAPIletsyouintegrateInstanceIDwithyourAndroidoriOSapp.InstanceIDprovidesauniqueidentifierforeachinstanceofyourappandamechanismtoauthenticateandauthorizeactions,likesendingmessagesviaGoogleCloudMessaging.TheInstanceIDislonglived,butmayexpireforthefollowingreasons:

Devicefactoryreset.Useruninstallstheapp.Userperforms“ClearData”intheapp.Deviceunusedforanextendedperiod(deviceandregiondeterminesthetimespan).InstanceIDservicedetectsabuseorerrorsandresetstheInstanceID.Server-sidecodeifyourclientapprequiresthatfunctionality.TheInstanceIDservicenotifiesyourappofanInstanceIDresetviacallbacktoaInstanceIDListenerService.Ifyourappreceivesthisnotification,itmustcallgetToken()andretrievethenewInstanceID,andupdateitsservers.

UsethegetTokenmethodtoprovetheownershipoftheInstanceIDandtoallowserverstoaccessdataorservicesassociatedwiththeapp.ThemethodfollowsthepatternsofOAuth2,andrequiresanauthorizedEntityandscope.TheauthorizedEntitycanbeaprojectIDoranotherInstanceID,anditdeterminestheservicesthatareauthorizedtousethegeneratedtoken.Thescopedeterminesthespecificserviceordatatowhichthetokenallowsaccess.

有几个问题,此ID主要是用于使用GCM服务,国内不可用,应用内唯一,可变因素太多。

2)Guid,JavaUtil库生成的全球唯一ID

应用内"唯一",需要终端自己实现本地/服务器存储。

官方:一切与硬件关联的ID,能跟踪到用户的都是属于危险级权限,涉及到用户隐私,不能随意采集。个人推测,以后Android在这方面会慢慢向苹果看齐。

8、ID串改方式了解(刷量篇)

对以上ID了解的差不多之后,那我们在看看黑产恶意作弊刷量的方式有哪些。

1)串改终端设备IDa)脚本修改系统配置文件b)工具框架hook串改系统接口函数

2)固定真机脚本调起应用运行3)肉鸡云端下发指令后台调起运行4)ROM+云端下发指令调起5)模拟器刷量,软件/硬件模拟器

ID串改,有比较多的小工具/软件就可以完成,例如EasyIMEIChanger;高端一些的方式采用的是系统函数的hook方式进行调用拦截串改,例如Xposed框架有做这些函数的hook:

好吧,这里就不多说了,我们有专门的团队在做推广渠道刷量的检测分析,如有产品想详细了解和接入试用,也请联系咨询[灯塔小秘]或者项目负责人janexiong。

三、iOS篇

1、UDID

简介:UniqueDeviceIdentifier的缩写,iOS设备唯一标识符

采集方式:[UIDevicecurrentDevice]uniqueIdentifier]

准确性/唯一性:iOS设备唯一标识符,iOS2.0以上及iOS5.0以下的系统可用,iOS5以上已禁用

2、UUID

简介:UniversallyUniqueIdentifier的缩写,中文意思是通用唯一识别码

准确性/唯一性:当App升级或重装后,UUID的值会发生变化

3、MAC

简介:手机无线网卡物理地址

采集方式:

structif_msghdr*ifm;structsockaddr_dl*sdl;

mib[0]=CTL_NET;mib[1]=AF_ROUTE;mib[2]=0;mib[3]=AF_LINK;mib[4]=NET_RT_IFLIST;

if((mib[5]=if_nametoindex("en0"))==0){printf("Error:if_nametoindexerror/n");returnNULL;}

if(sysctl(mib,6,NULL,&len,NULL,0)<0){printf("Error:sysctl,take1/n");returnNULL;}

if((buf=(char*)malloc(len))==NULL){printf("Couldnotallocatememory.error!/n");returnNULL;}

if(sysctl(mib,6,buf,&len,NULL,0)<0){printf("Error:sysctl,take2");if(buf){free(buf);}returnNULL;}

ifm=(structif_msghdr*)buf;sdl=(structsockaddr_dl*)(ifm+1);ptr=(unsignedchar*)LLADDR(sdl);NSString*outstring=[NSStringstringWithFormat:@"%02x:%02x:%02x:%02x:%02x:%02x",*ptr,*(ptr+1),*(ptr+2),*(ptr+3),*(ptr+4),*(ptr+5)];if(buf){free(buf);}return[outstringuppercaseString];

准确性/唯一性:iOS7之前可用,iOS7之后,请求Mac地址都会返回一个固定值“02:00:00:00:00:00”,已被苹果禁用

4、IDFV

简介:Vendor标示符(IDFV-identifierForVendor)

采集方式:[[[UIDevicecurrentDevice]identifierForVendor]UUIDString]

准确性/唯一性:同一个开发者账户下的app,在同一台终端上生成的IDFV一致,但是将此开发者账户下所有的app删除,下次再安装第一个app时,又会生成一个不一致的IDFV。例如:对于com.tencent.appone和com.tencent.apptwo这两个BundleID生成的IDFV是一样的,如果将这两个APP都删除,IDFV就会重新生成。(公司内有多个发布账号,每个账号下IDFV不同)

5、IDFA

采集方式:[[[ASIdentifierManagersharedManager]advertisingIdentifier]UUIDString]

准确性/唯一性:

四、业务自建Guid体系了解

这里也说明一下业务GUID和QIMEI体系的区别:

各业务GUID与灯塔Qimei方案思路是一致的,Qimei可补充GUID的找回能力,提升GUID稳定性。GUID和Qimei由服务器生成下发,并建立和设备其他各种ID映射关系(imei,mac,imsi,android_id等),用于丢失后的找回。主要区别在于Qimei基于全业务范围的积累找回,GUID基本单业务范围的积累找回。以及终端对于基础ID的采集,QIMEI/GUID的存储共享能力上的区别。

THE END
1.CloverConfigurator工具生成苹果序列号,苹果系统修改(三码/五码洗白教程如下:找到Clover的config.plist,使用Clover Configurator打开,选择左侧SMBios,使用右侧上下箭头(老版本应该是个魔术棒图标)选择适合自己的SMBIOS型号,复制Serial Number前往Apple官网查询序列号,如果显示有购买日期和机型等保修信息,说明这个序列号别人在用,不建议使用,点击Generate New生成新的Serial Number,直到出现提https://blog.csdn.net/diff666/article/details/144397601
2.魔改bios内存大小mob6454cc7901c3的技术博客但Windows本身的缺陷(也许是特色)决定了在Windows下不能这么做,所以flyfish修改了build.c,将输出直接写入到Image(flyfish是写入到Boot.img文件,我们为了两个环境的一致,也为了最大化地与原始版本保持统一,将其改为Image)文件中。同时为了适应Windows的一些特殊情况,他还做了其它一些小修改。https://blog.51cto.com/u_16099331/12814343
3.m.yhjzj.cn/449.html阴茎射精图片教程成人 护士肉丝按摩女御姐 美女叉开腚网站 日韩av在线网址 二宫ひかり无码adn382在线观 筱崎爱挤牛奶视频 军花制服AV 美女裸体坦胸露乳网站 麻豆MSD-178 有假的逼逼裤子阴弟可以舔的 口述从后边进入 小水屄想要哥哥大鸡巴 好想看美女被帅哥C小穴~h 舔摸操玩屄图片 瑟瑟 黄http://m.yhjzj.cn/449.html
4.DumpApp贴牌美化教程美化–嘿哩资源网2.3、UDID回调修改至dz.php 将receive.php底部index.php改为dz.php即可! 2.4、代理站 需要后台新建一个二级代理,然后将二级代理的域名替换到OEM/index.php内即可 代理页面美化直接覆盖index.php即可! 2.5、一定记得去批量替换一下其它页面的客服联系方式、购卡链接、教程链接!!https://www.heilifun.com/31842.html
5.教程:利用Hackintool打开第8代核显HDMI/DVI输出的正确姿势黑果本篇文章,适用于使用了较新主板并且搭配英特尔核显的用户。如果你的板载HDMI无法正常工作,那么可以参考本教程的方案来对你的HDMI进行缓冲帧修复从而修复HDMI输出 。 如果你的主板系列为360,370或390,带有台式CoffeeLake处理器,或是技嘉,华硕,华擎以及微星主板,可以参考下文章末尾的各种https://blog.daliansky.net/Tutorial-Using-Hackintool-to-open-the-correct-pose-of-the-8th-generation-core-display-HDMI-or-DVI-output.html
6.appuploader上架详解大全(下)测试设备:如果选择的类型是ios app development 类型,则全部测试设备旁边必须有测试设备并且勾选上,如果没有显示测试设备,点击框框下面的添加测试,然后把测试设备的udid输入,把ios设备连接到当前pc,会自动获得设备的udid。 如果app编译后无法安装到设备,可能是因为设备的udid没有添加进入描述文件,则需要添加描述文件后重https://developer.aliyun.com/article/1220299
7.苹果iPhone手机实现微信多开教程图文详解苹果手机越狱的用户进Cydia里去搜索一个叫”UDIDFaker”的软件.安装好之后给每个QQ分配不同的UDID即可.这样就能解决同时推送的问题. 找到要改UDID的程序 点那个按钮(多点几下,以免重复) 还有一个问题,需要大家来共同解决.有做过ios系统开发的希望不要吝啬. 还是消息推送的问题.这个问题只出现在微信上.好友之间发送的消息推https://m.jb51.net/shouji/119702.html
8.苹果微信UDID定制千月工作室苹果IOS18系统微信分身双开,UDID定制最新安装两个微信应用的方法与教程! 小编在用的iPhone12今天收到了ios18的更新推送,在用苹果微信分身多开的小伙伴,可能有的是不支持更新升级系统的,更新之后可能会导致分身出来的微信无法打开,出现闪退卡顿等故障,那是因为你用的分身 09月17日我爱多开 苹果微信分身 阅读https://blog.998w.cn/tag/%E8%8B%B9%E6%9E%9C%E5%BE%AE%E4%BF%A1udid%E5%AE%9A%E5%88%B6/
9.触动精灵IDE脚本编辑器使用手册注意图中显示的设备号为 UDID,并不是触动精灵的设备号。 打开IDE,在设备面板中输入 127.0.0.1 添加设备 右键选择连接设备,在输出面板中看到连接成功的提示就成功了 注意事项 如果运行监听文件一闪而过或者一直失败,请按照教程中的方法修改注册表。连接设备报错https://www.zybuluo.com/miniknife/note/123055
10.平台常见问题Q&A17 iOS系统远程真机怎么安装udid,我有企业证书怎么无法安装? 18 标准兼容测试能不能登录账号,要不要验证码? 19 未认证企业和认证企业有什么区别 20 真机能不能横屏过来? 21 价格是否有一个大概的框架,能否给一个大概的介绍? 22 ab测试是怎么来操作的,有没有线上能了解的? 23 标准兼容测试报告中,显示有几款https://support.testin.cn/portal/kb/articles/%E5%B9%B3%E5%8F%B0%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98-q-a
11.苹果udid能改吗,肿么还苹果设备的UDID(Universally Unique Device Identifier)是设备的唯一标识符,无法更改。如果需要更改UDID,https://ask.zol.com.cn/x/18467416.html
12.20211130快速验证ipa包中的UDID开发测试过程中,有些设备弹窗显示无法安装ipa,此时需要解析一下adhoc证书打包出来的ipa是否包含目标设备的UDID,在此记录一下过程:1、将 .ipa 文件修改为 .zhttps://www.jianshu.com/p/1a9907b565e1
13.ios重新签名修改包名A:IOS开发环境全套证书,开发者证书P12、包名、UDID设备添加、推送证书P12或P8,描述文件,全覆盖Certificates, Identifiers, Devices, Profiles & Keys。 Q:IOScer&ADhoc环境证书包括那些?ADhoc环境 A:adHOC环境全套证书,开发者证书P12、包名、UDID设备添加、推送证书P12或P8,描述文件,全覆盖Certificates, Identifiers, http://platform.yimenapp.com/ios-zhengshu-7448.html
14.怎么改苹果手机证书?APP证书2. 创建一个新的数字签名证书,可以参考苹果官网的教程。 3. 下载并安装需要更改证书的应用程序,可以从网上下载IPA文件,然后使用iTunes或者iTools等工具进行安装。 4. 使用Xcode等开发工具打开应用程序的工程文件,在“Build Settings”中找到“Code Signing”选项,将证书设置为新创建的数字签名证书。 https://www.yimenapp.net/knowledge/appzhengshu-8705.html
15.《地牢猎手3》无限宝石+金钱+钥匙修改攻略以及访问权限为755,即 用户——读取,写入,执行 组——读取,写入 全局——读取,写入 PS:如果有的FY换了UDID、改了权限还是会闪退。试着删了游戏重新安装。有些FY可能只有钥匙没要宝石和钱。应该一开始游戏就是这些数字,如果没有的话,试着完成教程以后再看看。https://app.ali213.net/gl/m/144094.html