轉載:魅族系統截圖被附上全屏二維碼水印,其中包含設備信息

本文轉載已經作者授權。

原作者:Pandaria98

鏈接:魅族系統截圖被附上全屏二維碼水印,其中包含設備信息

原作者知乎鏈接:執夷 - 知乎

2017 年 5 月 17 日 11:23 更新

以下是我要求致歉的內容:

據目前情況可知:

該問題為內測防泄漏機制

但從去年十二月 Flyme6 正式發布,至今年五月中,在最新的穩定版中尚未修復

這其中六個月之長的時間,佔用戶群體大部分的穩定版用戶一直受到該問題影響

既然已承認這是「工作疏漏」

同時我不認為有人樂意在發表截圖時將自己的設備信息原原本本的公布出去

我認為魅族應當公開致歉。

另外,最好能在將發布的最新的穩定版的更新日誌中說明此事。

以下是魅族官方的答覆:

抱歉,這也是為什麼我認為應該電話溝通清楚而不是一言兩語來解釋的原因。

因為個人的理解與事實還是有偏差,我來解釋下。這件事情有個前提:今年年初我們已經決定調整固件發布節奏,並在3月7日正式發了公告——穩定版系統調整為季度發布,體驗版系統為雙周更新。

在這個前提之下,工程師在2月27號已經移除了相關代碼,在此之後的體驗版系統(beta版)不會出現這個「功能」。但為了保證穩定版系統的穩定,在外發前需要足夠時間測試,因此代碼凍結時間早於2月27號,所以該功能留在了穩定版。

可以理解為,我們早在2月份的體驗版上已經修復此問題,現在升級體驗版即可解決。

對話原文截圖已附於文末。

2017 年 5 月 16 日 22:22 更新

以下是截至目前的魅族官方答覆:

二維碼水印技術的採用是為了防止 Flyme6 的信息在去年 11 月的內測階段被泄露

二維碼中的信息只包含 IP 地址、IMEI 號、SIM 卡序列號、是否是量產機型、是否為移動用戶 的信息,不涉及用戶的電話號碼、Flyme 賬號的信息

1.內測版本存在的機制,為什麼會被延續到穩定版本的固件並且持續至今?

主要原因還是由於工作疏漏。內測版和穩定版使用同一套代碼,我們在內測結束後未及時移除該功能。但我們在最新體驗版中已經移除相關代碼。您現在可以到Flyme官網下載體驗版即可解決了。

2.加水印是如何防止內測版本的信息被泄露?是根據二維碼識別出來的設備,停止該設備的內測推送么?

水印包含有手機SN、IMEI等信息,對於參與內部測試人員,我們都有SN信息登記,如內測版本泄漏,我們可追溯到泄露者。

3.是所有的截圖都會被加上水印么?根據我的測試,只有顏色較深的圖片才會被加上水印,如果是為了防止泄露,為什麼不對所有的圖片加水印?

是所有截圖都會加上水印的。並不是因為顏色深而加上的水印,只是在特定圖片(例如像您遇到的這種場景)中會比較明顯。(水印做的隱蔽是為了防泄密的保護手段)

4.對於設備信息被泄露不會導致用戶信息被泄露的說法我無法信服

水印信息僅包含IMEI、SN、IMSI、IP地址和機型名稱——以上設備信息。並不涉及其他信息,不會導致用戶信息被泄露。

5.如果僅僅是為了識別用戶,為什麼要加入 IP 地址這個信息?

加入IP是為了區分泄漏機器處於公司內網還是外網。(內測階段的安全管理,原則上內部測試機器是不允許帶出公司的)

以上內容為與魅族官方人員溝通的原話,原文對話截圖附於文末

以下是文章原文:

本人在使用魅族手機(原生 Flyme 系統)的過程中,發現偶爾在一些網站上發布自己的手機截圖後,圖片會出現奇怪的色塊。同時,其他魅族手機發布的截圖中,也有類似的情況(為保護隱私,本文所有二維碼主體部分使用白色色塊遮擋,可從四角的二維碼定位點判斷出這確實是二維碼):

起初我以為這只是圖片在上傳過程中發生的壓縮導致的一些畫質損失,但最近在某消息的提醒下發現,實際上圖片上的色塊並不是畫質損失導致的,而是圖片實實在在的被打上全屏二維碼水印,將以上的圖片進行調色處理後,二維碼的圖像變得明顯(具體的還原步驟在文末):

反色之後,它就是一個實實在在的二維碼了:

識別結果是(為保護隱私,本文字元串中部分字元用「*」號代替):

#192#168#0#115#,460013*****8248#A10ABN****3H#m1metal

稍加分析,可以容易的判斷出:

  • 前四串字元是 IP 地址,這裡是一個內網 IP
  • 第五串字元是 IMSI 碼,類似 IMEI,用於標識 SIM 卡
  • 第六串字元是魅族設備的序列號
  • 最後一串字元是魅族設備的型號

關於 IMSI

我對於 IMSI 也是知之甚少,這裡將我通過搜索引擎的來的結果列於下方(不保證準確):

- IMSI 與 手機號碼 沒有必然的對應關係

- IMSI 在到達運營商的交換機才可知道與 手機號碼 相應的對應關係

- **可能**存在通過 IMSI 得到地域位置的演算法

另外,在探索過程中,在魅族社區找到了這樣一張圖:

經過同樣的步驟還原之後,得到了這樣一張二維碼:

識別結果是:

#---#---#---#---#460011*****2453#95AQACQ****M7#MX6#

結果完全類似,只是由於可能是斷網截圖,IP 信息被留空了。

那麼問題就來了,這種現象到底是不是個例呢?

不是,它是完全可以被複現的。

復現的方法非常簡單,只要截圖的背景顏色較深,就會出現二維碼水印。而淺色背景的截圖則不會出現二維碼。

下面是我在 JuiceSSH 中截圖以後得到的圖片:

在手機上打開,肉眼幾乎看不出上面有二維碼(但還是能看見),而在電腦上打開,由於圖片解碼庫不同的緣故,可能導致完全看不到二維碼,但是通過在網站上發布,經過服務端的壓縮之後,二維碼變得明顯:

同樣的步驟將二維碼還原:

識別的結果:

#---#---#---#---#460023*****9130,460009*****0563#80QBC***JFY#PRO6#

由於我的手機是雙卡,所以 IMSI 也有兩個。經過在 OSBuild 這個應用中查看發現,與手機實際的 IMSI 吻合。

而下面是用 fooView 第三方截圖獲得的圖片,沒有任何的二維碼水印。

還原步驟

  1. 使用魅族手機在 JuiceSSH 等背景顏色較深且為純色的應用內進行系統截圖,也可以對上方展示的沒有二維碼的圖進行截圖
  2. 此時用手機的圖庫查看圖片,仔細看可以看到輕微的二維碼
  3. 到酷安等發布圖片將遭到壓縮的網站上發布圖片,獲取壓縮後的圖片,如果直接用 Photo Editor 對原圖進行還原,可能根本看不到二維碼
  4. 使用 Photo Editor 調整
    • 打開圖片,選擇「色階」,調整上方三個滑塊至靠近波峰處,二維碼將變得明顯,點擊右上角的勾保存操作(保存操作這一步下同)
    • 選擇「特效」-「自動對比度」,保存
    • 選擇「特效」-「負片」,保存
    • 點擊右上角的藍色保存按鈕,保存圖片到指定的路徑
  5. 識別你獲得的二維碼圖片

本文只講述事實,不作過多評價。

只是希望各位不要再用魅族的系統截圖。

推薦使用第三方截圖。

順便一提,與本文章相關的知乎問題在此處:

如何評價魅族為系統截圖添加水印的行為? - 知乎

對於評論區的疑問,補充了發現此問題的系統版本截圖:

直到今天(2017年/5月/16日)為止此版本依舊是魅族官方最新的穩定版。

以下是目前為止與魅族官方人員對話的截圖:


推薦閱讀:

史上最全的惡意軟體地址集合
靜態庫的管理與文件格式分析
【入門篇】靜態混淆與動態混淆
PKG安裝包的管理與文件格式分析
將一個指針 free 兩次之後會發生什麼?

TAG:魅族科技 | 软件安全 | 水印 |