1. 程式人生 > 實用技巧 >MIUI 鎖屏密碼破解

MIUI 鎖屏密碼破解

背景

MI 8, 已解 Bootloader 鎖

前幾天刷開發版同時更新到 Android 10, 大約刷後兩天發現螢幕無法解鎖, 懷疑是系統本身 / 密碼驗證過程中存在 Bug. 售後表示只能清除全部資料以解鎖. 於是自己搞一搞 >_<

這是嘗試過程和一種(很)可能的思路. 然鵝由於實在不會 Java 沒有進行下去.

由於twrp不提供截圖功能, 所以手機截圖略......

刷 Twrp

注意各個 Android 大版本的 Twrp 不能通用, 需下載對應的 (例如我的是 Android 10).

網上有大量的 Twrp 教程, 例如這個: http://bbs.ydss.cn/thread-1481180-1-1.html

會下載一個壓縮包, 點選 recovery-twrp一鍵刷入工具.bat 之後幾乎是傻瓜式的操作, 跟隨指引即可~

刷後在關機狀態下 音量上 + 電源鍵 長按進入 Twrp.

檢視檔案

進入 Twrp 後會要求解鎖 Data 分割槽, 跳過.

進入高階功能 -> 檔案管理, 發現:

/data/data 目錄和 /sdcard 目錄已被加密, 檔名顯示為字母串;
其他目錄保持正常.

看起來MIUI會強制對使用者資料加密... (我說怎麼開機要五分鐘) 這對保護使用者資料是很好的設計, 但是對於蜜汁無法解鎖的手機就相當不友好.

點選掛載 -> 解鎖 Data 分割槽, 發現加密的金鑰就是鎖屏的九宮格密碼. (回到了原點:P)

暴力破解

然鵝 MIUI 並沒有加密其他的目錄. 我們知道密碼儲存在 /data/system 目錄下的 locksettings.dbaccess_control.key 中.

利用 adb pull 獲取這兩個檔案.

之後可以看這裡: https://www.cnblogs.com/tlbb/p/7197371.html

鎖屏密碼的演算法大約是: 把九宮格轉換為陣列, 加 salt, sha1, 再儲存起來. 應該就是 access_control.key 中的內容.

sqlite expert 檢視 locksetting.db 可以獲取 salt; 再列舉九宮格的密碼 (只有 $ \sum_{i=3}^{9} i! $ 個), 利用該演算法算出sha1值, 與 access_control.key

對比即可.

但是不會寫 Java

這提供了一種破解的思路, 主要原理是: 刷入recovery後, 系統相當於已經被扒下了底褲 (狗頭), 做什麼都可以.

說不定哪天學會了java就來填坑了