不得不面对的随机MAC问题

news2025/1/19 20:15:35

一、现状

为了完善安全机制、保护用户隐私,各个设备厂商开发了 MAC 地址随机功能,防止用户信息泄露。随机 MAC 地址,就是一个随机生成的伪 MAC 地址,一个假 MAC 地址,使用随机 MAC 地址进行网络通信,而不是真实 MAC 地址。

二、随机MAC带来的影响和问题

  • 设备线索冗余,查看某账号下的设备,当前以mac为粒度展示数量膨胀
  • 设备轨迹漂移,当前以mac为粒度的轨迹信息,可能是多设备贡献的
  • 虚实转换关联到多人,无法准确定位背后实人
  • 虚到虚的设备扩线失效

三、中期方案

建立随机mac识别公共服务层,所有涉及mac的下游应用及模型的调用先检查一次

业务结果上的目标,随机mac的落位准确率

业务指标评估成果

将正常mac、随机mac、不可用mac分为白灰黑三类。

  • 白mac:目前的数据服务主力军,占大头
    1. imei和mac合法
    2. 1个mac关联不超过2个imei
    3. 如果有2个imei,则这两个imei的品牌一致(双卡双待机型)
    4. 1个imei只关联到一个mac
  • 灰mac:随机mac,核心是识别随机mac
    1. 单imei有2个及以上的mac(已实现)
    2. 实人 + 设备nick粒度关联2个及以上的mac(已实现,可升级为账号 + 设备nick粒度)
    3. mac在短时间内有长距离移动(模型评估中)
  • 黑mac:串码、刷机修改、设备克隆、不合法

四、长期方案,探索中(N码转换)

扩充四码,加入新的设备标识符号,如IDFA(苹果专属)、OAID(国内厂商联合)、SSAID(谷歌框架)

基本上IDFA、OAID比较靠谱

img

对OAID的支持

厂商版本
小米MIUI10.2 及以上
vivoFuntouchOS 9 及以上
华为全版本
OPPOColor OS 7.0 及以上
LenovoZUI 11.4 及以上
华硕Android Q
场景imeimacutdidoaid数据变化规律
双卡双待主卡切换可能会变不变不变不变只会影响imei变化
wifi网络切换(MAC变化)不变可能会变不变不变wifi切换只会影响mac地址变化
一键换机场景可能会变可能会变可能会变可能会变首次启动不变,后续启动可能会变,卸载一定会变
应用卸载重装不变不变不变不变

五、要做的事

  1. 提升随机mac识别率
    1. 基于mac位置漂移,新增一批随机mac
  2. 建立与机型品牌的关联关系
    1. 引入更多数据,关联到机型和设备
    2. 新的账号设备粒度的位置域数据,
  3. 引入新的码值,如IDFA、OAID这类广告ID,建立六码关系

二、新方向-概率推荐

如果我们不做随机mac的区分,每一个mac进来,我们都为他做概率推荐。无非是0-100%的问题。比如一个正常mac,那它的信息就是干净的,我们理解为100%推荐此条信息。

最先想到的就是跟mac关联性很强的imei和账号。

仍然回到我们最初设定的问题来分情况讨论。

2.1 IMEI的情况

在一个mac能够关联到过个imei的情况下,计算各个imei对该mac的数据贡献度。或者换句话理解,就是关系程度。这里我定义为活跃度。

很自然能够联想到某imei与该mac出现关系的时间越接近当下,出现的频次越高,他们的关系越紧密,活跃度越高。

所以这里有两个概念:关系的新鲜和关系的稳定,简称为 新和常。但到底是新重要还是常重要,这里根据我们的倾向和需求可以有多种处理方式。

所以我们要定义一个公式,来描述活跃度与 新和常 两个因子之间的关系,并且需要分配权重。

这里抛砖引玉,丢个公式:
在这里插入图片描述
这里n为统计周期,可以取180天。这里Wi为新鲜度权重,越接近当下,权重越大,代表 新 这个影响因子;同时,出现的天数越多,求和项也越多,代表 常 这个因子。当然,这里权当举个例子,具体活跃度分值的计算等 模型 大佬再研究下。

2.1.1 轨迹不完整问题

  1. 如果只能关联到一个imei。则输出这个imei的全部轨迹,完毕
  2. 关联到多个imei,根据活跃度推荐前3个imei,提醒下游应用大概率是这几个设备,分别输出展示

2.1.2 轨迹碰撞问题

  1. 同上的第二条,推荐活跃度前3的imei的信息,分别输出展示

2.1.3 设备线索过多问题

  1. 同上

2.2 账号的情况

其实随机mac场景下,imei有很大一部分是取不到的。 Android 10 带来的影响总结下来就两句话:mac越来越脏,imei越来越少。

我们不得不得考虑,没有合适的设备id的情况下,用什么来代替mac去输出信息。

实际上最适合串联各方数据的,就是账号了。

三个经典问题不再分别展示,参考imei的情况

三、设计方案

核心在于建立一张mac粒度的维表,用于描述活跃度前几的其他信息。

大概可能长这样:

macimei_listid_listxx_list
mac1imei1:100,imie2:67,imei3:10id1:32,id2:11xx
mac2imei4:91,imei5:33id3:87yy
……………………

所有以mac为入口的需求,都先走一次维表(可以做成数据服务,对外提供快速查询),按照mac+imei或者mac+id的形式提供给下游应用。而且可以按照要求的严密度限制活跃度分数,筛选出高活跃度的,排除掉低活跃度的。减少下游应用的查询复杂度和可靠性。

结构上比较简单,不再绘图。

四、终极方案?

做自己的ID-Mapping。

说白了,我们最大的痛点在于缺少一个唯一代表一台设备的设备id。

基于这么多码值之间的关联关系,我们利用ID-Mapping,将各种各样的设备级id,系统级id,应用级id等等等码值聚类。利用无向图的联通分量(最大连通图),将大部分正常设备ID聚簇在一起,形成一个自然设备ID簇。其簇的成员包含了各种类型的id。一个id簇,我们就认为是一台设备。

附录:各种各样的ID

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/155284.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全网圣诞树最全完整源码下载合集【可下载】

文章目录一、全部源码打包下载:二、效果预览001-html版本 豪华动态圣诞树 抖音同款002-圣诞树灯光跟随音乐节拍一起呼吸点亮下雪动画效果代码003-圣诞树彩带飘动节日快乐效果代码004-圣诞树带音乐旋转拉伸动画效果005-python版本python取消延迟秒出图版 【全网最强无…

当FutureTask遇上DiscardPolicy,有坑

文章目录有啥坑呢?知识回顾问题触发条件问题复现问题分析问题修复扩展哈喽,你好,我是余数。今天来了解下当 FutureTask 遇上 DiscardPolicy 或 DiscardOldestPolicy 时容易掉的坑,然后分析分析问题产生的原因以及如何规避这类问题…

LVS+Keepalived+Nginx具体配置步骤

视频链接:4-6 搭建LVS-DR模式- 为两台RS配置虚拟IP_哔哩哔哩_bilibili 视频笔记链接:笔记 一、服务器与Ip约定 LVS DIP: 192.168.1.151 VIP: 192.168.1.150 Nginx1 RIP: 192.168.1.171 VIP: 192.168.1.150 Nginx2 RIP: 192.168.1.172 VIP: 192.168…

力扣 2283. 判断一个数的数字计数是否等于数位的值

题目 给你一个下标从 0 开始长度为 n 的字符串 num &#xff0c;它只包含数字。 如果对于 每个 0 < i < n 的下标 i &#xff0c;都满足数位 i 在 num 中出现了 num[i]次&#xff0c;那么请你返回 true &#xff0c;否则返回 false 。 示例 输入&#xff1a;num “1…

vue文件上传

vue文件上传 前言 今天写一篇关于文件上传的文章&#xff0c;其实对于真正工作的人来说&#xff0c;这不是很难的事&#xff0c;但对于新手来说无疑是个新技术 实现功能如下图 根据上传文件类型显示对应文件类型&#xff0c;图片直接显示&#xff0c;当然图片特可以做对应类型…

【NI Multisim 14.0原理图设计基础——参数属性设置】

目录 序言 &#x1f46c;一、参数属性设置 序言 NI Multisim最突出的特点之一就是用户界面友好。它可以使电路设计者方便、快捷地使用虚拟元器件和仪器、仪表进行电路设计和仿真。 首先启动NI Multisim 14.0&#xff0c;打开如图所示的启动界面&#xff0c;完成初始化后&…

初始C语言-分支与循环语句

目录 一、语句 1. 什么是语句&#xff1f; C语句可分为以下五类&#xff1a; 1. 表达式语句 2. 函数调用语句 3. 控制语句 4. 复合语句 5. 空语句 2. 控制语句&#xff1a; 1. 条件判断语句也叫分支语句&#xff1a;if语句、switch语句&#xff1b; 2. 循环执行语句…

extern “C“的作用以及c/c++代码互调

一、目的相信从事嵌入开发的小伙伴肯定遇到过使用第三库的情景&#xff0c;有时候可能是C中调用C库&#xff0c;有时候可能又是C中调用C库&#xff1b;如果你遇到过&#xff0c;那你肯定知道extern "C"的作用.本篇的目的就是给大家介绍C/C互相调用的原理和实践。二、…

RK3588平台开发系列讲解(内核调试篇)CPU Hotplug 调试

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、CPU Hotplug 介绍二、CPU Hotplug 内核开关三、sysfs调试沉淀、分享、成长,让自己和他人都能有所收获!😄 📢多核系统底层驱动提供了cpu的Plugin/Unplug接口,可以实现动态调整cpu使用运行。 一、CPU Hotplu…

在 Node JS 中实现微服务架构

&#x1f4cd;简介&#x1f642; 正如我们在之前的博客“单体与微服务&#xff1a;一种实用方法”中讨论的那样。但是今天我们要在 NodeJS 中实现微服务架构。&#x1f449; 您可以使用任何技术&#xff0c;如 Spring、Python 等。但我们将使用 NodeJS 进行演示。&#x1f4cd;…

PostgreSQL下载、安装和配置使用

1&#xff09;下载 PostgreSQL官网下载&#xff1a;https://www.enterprisedb.com/downloads/postgres-postgresql-downloads 2&#xff09;安装 双击运行安装包 选择安装目录&#xff0c;不推荐安装在C盘。 选择需要安装的服务&#xff0c;不明白是啥的全选就行&#xf…

内含JAVA简单概括和JAVA所需安装的软件和详细教程,想学习JAVA无从下手,这篇文章带你迈出第一步

本文大致概括了JAVA编程语言的简史和特点,主要介绍了JAVA开发环境安装,涉及JDK,Sublime Text IntelliJ IDEA三个软件的简单介绍,安装和使用,最后编写了第一个JAVA代码,保姆级教学,跟着文章一步步来,迈出你学习JAVA的第一步吧! 初识JAVA一.JAVA语言简介二.JAVA发展简史三.JAVA语…

通过模拟器实现APP抓包

本教程将跳过工具安装部分&#xff0c;请正确食用&#x1f609;我的环境&#xff1a;操作系统&#xff1a;win11模拟器版本&#xff1a;雷电安卓模拟器稳定版-安卓7.1(32位) V5.0.46抓包工具&#xff1a;Wireshark-Version 4.0.1抓包工具&#xff1a;charles-Version 4.6.3工具…

SpringMVC(十一):SpringMVC文件上传中要解决的问题

文章目录 SpringMVC文件上传中要解决的问题 一、中文文件名编码问题 二、文件位置存储问题

【YOLO系列】YOLOv8算法(尖端SOTA模型)

前言回顾 在这里粗略回顾一下YOLOv5&#xff0c;这里直接提供YOLOv5的整理的结构图吧 Backbone&#xff1a;CSPDarkNet结构&#xff0c;主要结构思想的体现在C3模块&#xff0c;这里也是梯度分流的主要思想所在的地方&#xff1b;PAN-FPN&#xff1a;双流的FPN&#xff0c;必…

Linux——常用命令1.

✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;linux &#x1f525;<3>创作者&#xff1a;我的代码爱吃辣 ☂️<4>开发环境&#xff1a;Visual Studio 2022 &#x1f4ac;<5>前言&#xff1a;Linux常用命令 目录 …

Centos7安装JDK1.8(OracleJDK8)

Linux安装JDK1.8 | OracleJDK8Linux安装JDK1.8(OracleJDK8)卸载openJDK官网下载OracleJDK8解压JDK到指定目录配置JDK变量查看jdk是否可用Linux安装JDK1.8(OracleJDK8) Hadoop官方的JDK要求https://cwiki.apache.org/confluence/display/HADOOP/HadoopJavaVersions JDK变量配置…

Java——》下载Hotspot 虚拟机源码

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 Java——》下载Hotspot 虚拟机源码一、官网下载压…

信息系统基础

目录 一、信息化概述 1.信息的定义 2.信息的特点 3.信息化的概念 4.信息对经济社会的意义 5.信息化对组织的意义 二、信息系统工程的总体规划 1.信息系统工程总体规划方法论 2.信息系统的生命周期和各阶段的目标 三.政府信息化与电子政务 1.电子政务的组成 2.电子政务…

mysql的binlog学习记录

文章目录什么是binlogbinlog格式StatementRowMixedbinlog使用什么是binlog MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件。简单的来说&#xff0c;binlog日志用于记录所有更新了数据或者以及潜在更新了数据&#xff08;例如&#xff0c;没有匹…