忘記手機繪圖怎樣解鎖 手機忘記解鎖圖案怎么辦

手機忘記解鎖圖案(忘記如何解鎖手機圖)怎么辦
安卓手機的圖形鎖(九宮格)是一個3×3的點陣,為了實現鎖/解鎖的功能,把幾個點連接起來 。最少需要連接4個點,最多可以連接9個點 。網上還有一種暴力刪除手機圖形鎖的方法,就是直接殺死圖形鎖功能 。但如果你想訪問別人的手機,但又不想引起別人的警覺……可以參考這篇文章 。
前提條件:手機需要root,調試模式開啟 。一般來說,如果你用過“豌豆莢手機助手”、“360手機助手”等軟件,都會被要求開啟調試模式 。如果要刪除手機內置軟件,需要設置手機root 。
原理分析
首先來說說安卓手機是如何標注這九點的 。通過閱讀Android系統的源代碼,我們可以看到每個點都有它的編號,組成一個3×3的矩陣,其形狀如下:
00 01 02
03 04 05
06 07 08
如果解鎖圖形設置為“L”形,如圖所示:
那么這些點的順序如下:00 03 06 07 08 。系統記下這串數字,然后用SHA1對這串數字(十六進制)進行加密,保存在手機中的/data/system/gesture.key文件中 。我們用一根數據線連接手機和電腦,然后ADB連接手機下載文件到電腦(命令:ADB pull/data/system/gesture . key gesture . key),如圖:
用WinHex等十六進制編輯程序打開gesture.key,會發現文件中含有SHA1加密字符串:c 8 c 0 b 24 a 15 DC 8 bbfd 411427973574695230458 f 0,如圖:
下次解鎖時,系統會比對你抽的圖案,看對應的數字串是不是0003060708對應的加密結果 。如果是,解鎖;不,繼續鎖著 。那么,如果你窮盡所有的數字串,會有幾個?聯想到高中的階乘,如果用四個點來解鎖圖形,就是9x8x7x6=3024種可能性,即五個點是15120,六個點是60480,七個點是181440,八個點是362880,九個點是362880 ??偣灿?85,824種可能(但這種計算并不嚴謹,因為同一直線上的點只能與其鄰點相連) 。
最多只有不到985824種可能性 。乍一看很龐大,但是在電腦面前,用不了幾秒鐘就能把這些東西窮盡 。
裂化法
知道了原理,就從手寫程序開始吧 。這里使用Python來完成任務 。主要使用了hashlib模塊(針對字符串的SHA1加密)和itertools模塊(Python內置,生成00-09的排列組合) 。
主要流程是:
1.ADB連接移動電話并獲得手勢.鍵文件 。
2.讀取密鑰文件并存儲字符串str _ a 。
【忘記手機繪圖怎樣解鎖 手機忘記解鎖圖案怎么辦】3.生成所有可能的數字串 。
4.加密這些數字字符串,得到字符串str _ b 。
5.比較字符串str_A和str _ b 。
6.如果字符串A和B相同,則表示數字字符串num是所需的解鎖順序 。
7.打印出數字字符串num
以下是程序:
摘要
從程序本身來說,得到解鎖密碼后,要跳出循環,終止程序 。然而Python并沒有跳出多重循環的語句 。如果要跳出多重循環,只能設置標志位,繼續判斷 。為了運行速度,省略了“跳出循環”這一步 。(有沒有更好的跳出多重循環的方法?)另外省略了很多容錯語句 。
以破解為目的,如果只是忘記了手機的圖形鎖密碼,可以用更簡單的方法:ADB連接手機,然后“adb rm /data/system/gesture.key”刪除gesture.key文件 。這時候圖形鎖就失效了,你可以隨意畫來解鎖 。但本文開頭假設的是“為了不被察覺地進入別人的手機”,所以本文應運而生 。
最后一點安全建議:如果手機已經root,需要使用XX手機助手,并且想在手機的“設置”選項中設置圖形鎖定,有一個“鎖定狀態下取消USB調試模式”(手機不同名稱不同,有的手機有此選項,有的沒有),開啟此功能后,可以在手機鎖定狀態下防止此類攻擊 。這篇文章的技術原理很簡單,希望能大大教你一些Python編程技巧 。

    推薦閱讀