- 原作者:Pandaria98 - 简书
- 原文链接(发表于简书):魅族系统截图被附上全屏二维码水印,其中包含设备信息
- 原作者 · 知乎:执夷 - 知乎
- 原作者 · MAT BBS:Pandaria - MAT BBS
特殊注明:本文著作权和解释权由简书作者 Pandaria 所有,原作者保留一切权利,本博客仅在接受授权后予以完整转载,并无二次演绎。本文不受本博客 CC BY-NC-SA 3.0 Unported 协议的限制。
本人在使用魅族手机(原生 Flyme 系统)的过程中,发现偶尔在一些网站上发布自己的手机截图后,图片会出现奇怪的色块。同时,其他魅族手机发布的截图中,也有类似的情况( 为保护隐私,本文所有二维码主体部分使用白色色块遮挡,可从四角的二维码定位点判断出这确实是二维码):

起初我以为这只是图片在上传过程中发生的压缩导致的一些画质损失,但最近在某消息的提醒下发现,实际上图片上的色块并不是画质损失导致的,而是图片实实在在的被打上 全屏二维码水印,将以上的图片进行调色处理后,二维码的图像变得明显(具体的还原步骤在文末):

在反色之后,它就是一个实实在在的二维码了:

识别结果是(为保护隐私,本文字符串中部分字符用「*」号代替):
1 | #192#168#0#115#,460013*****8248#A10ABN****3H#m1metal |
稍加分析,可以容易的判断出:
- 前四串字符是 IP 地址,这里是一个内网 IP
- 第五串字符是 IMSI 码,类似 IMEI,用于标识 SIM 卡
- 第六串字符是魅族设备的序列号
- 最后一串字符是魅族设备的型号
- 关于 IMSI
我对于 IMSI 也是知之甚少,这里将我通过搜索引擎的来的结果列于下方(不保证准确):
- IMSI 与 手机号码 没有必然的对应关系
- IMSI 在到达运营商的交换机才可知道与 手机号码 相应的对应关系
- 可能存在通过 IMSI 得到地域位置的算法
另外,在探索过程中,在魅族社区找到了这样一张图:

经过同样的步骤还原之后,得到了这样一张二维码:

识别结果是:
1 | #---#---#---#---#460011*****2453#95AQACQ****M7#MX6# |
结果完全类似,只是由于可能是断网截图,IP 信息被留空了。
那么问题就来了,这种现象到底是不是个例呢?
不是,它是完全可以被复现的。
复现的方法非常简单,只要截图的背景颜色较深,就会出现二维码水印。而浅色背景的截图则不会出现二维码。
注:以下测试基于本人自己的手机
- 机型:魅族 PRO 6
- 固件版本:Flyme 6.0.2.0A
- 这是截至本文发布,魅族官网上 PRO 6 的稳定版固件的最新版本:
下面是我在 JuiceSSH 中截图以后得到的图片:

在手机上打开,肉眼几乎看不出上面有二维码(但还是能看见),而在电脑上打开,由于图片解码库不同的缘故,可能导致完全看不到二维码,但是通过在网站上发布,经过服务端的压缩之后,二维码变得明显:

同样的步骤将二维码还原:

识别的结果:
1 | #---#---#---#---#460023*****9130,460009*****0563#80QBC***JFY#PRO6# |
由于我的手机是双卡,所以 IMSI 也有两个。经过在 OSBuild 这个应用中查看发现,与手机实际的 IMSI 吻合。
而下面是用 fooView 第三方截图获得的图片,没有任何的二维码水印。

还原步骤
- 使用魅族手机在 JuiceSSH 等背景颜色较深且为纯色的应用内进行系统截图,也可以对上方展示的没有二维码的图进行截图
- 此时用手机的图库查看图片,仔细看可以看到轻微的二维码
- 到酷安等发布图片将遭到压缩的网站上发布图片,获取压缩后的图片,如果直接用 Photo Editor 对原图进行还原,可能根本看不到二维码
- 使用 Photo Editor 调整
- 打开图片,选择「色阶」,调整上方三个滑块至靠近波峰处,二维码将变得明显,点击右上角的勾保存操作(保存操作这一步下同)
- 选择「特效」-「自动对比度」,保存
- 选择「特效」-「负片」,保存
- 点击右上角的蓝色保存按钮,保存图片到指定的路径
- 识别你获得的二维码图片
本文只讲述事实,不作过多评价。
只是希望各位不要再用魅族的系统截图。
推荐使用第三方截图。
以下是目前为止与魅族官方人员对话的截图:
- 原作者授权 RockyLo 转载的知乎专栏:转载:魅族系统截图被附上全屏二维码水印,其中包含设备信息 - 知乎专栏
- 与本文章相关的知乎问题在此处:如何评价魅族为系统截图添加水印的行为? - 知乎
- 对于位于知乎专栏和原文简书评论区的疑问,原作者补充了发现此问题的系统版本截图:

直到
2017年/5月/16日
为止此版本依旧是魅族官方最新的稳定版。