忘记手机绘图怎样解锁 手机忘记解锁图案怎么办

手机忘记解锁图案(忘记如何解锁手机图)怎么办
安卓手机的图形锁(九宫格)是一个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 。总共有985,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编程技巧 。

    推荐阅读