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.db
和 access_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就來填坑了