忘记手机解锁模式怎么办(忘记怎么解锁手机图)
Android手机的图形锁(九宫格)是一个3×3的点阵,将几个点连接起来,以实现锁定/解锁的功能。最少需要连接4个点,最多可以连接9个点。网上也有暴力删除手机图锁的方式,就是直接杀死图锁功能。但如果你想接入别人的手机,但又不想引起他们的警觉……可以参考这篇文章。
先决条件:手机需要root,调试模式开启。一般来说,如果你用过“豌豆荚手机助手”、“360手机助手”等软件,都会被要求开启调试模式。如果要删除手机内置软件,需要root手机。
原理分析
首先,学习一下安卓手机是如何标注这9点的。通过阅读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种可能(但这种计算并不严谨,因为同一条线上的点只能与其邻点相连)。
最多只有不到985,824种可能性。乍一看很大,但是在电脑面前,列举这些东西只需要几秒钟。
裂化法
知道了原理,我们先从一个手写的程序来实现。这里使用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。
以下是程序:
摘要
从程序本身来说,得到解锁密码后,要用break跳出循环,终止程序。但是,Python并没有跳出多重循环的语句。如果要跳出多重循环,只能设置标志位,继续做决定。为了运行速度,省略了“跳出循环”这一步。有没有更好的方法走出多重循环?)另外省略了很多容错语句。
对于破解的目的,如果只是忘记了手机图形锁的密码,可以用更简单的方法:ADB连接手机,然后“adb rm /data/system/gesture.key”删除gesture.key文件。这时候图形锁就失效了,你可以随意画来解锁。但本文开头的假设是“进入别人手机不被发现”,于是就有了这篇文章。
最后一个安全建议:如果你的手机是root,你还需要使用XX手机助手并且你想设置图形锁定在手机的设置选项中,有一个“在锁定状态下取消USB调试模式”(这个名称因手机而异,有的手机有这个选项,有的没有)。开启该功能后,可以在手机锁定时防止此类攻击。这篇文章的技术原理很简单,希望能教你一些高级的Python编程技巧。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 ZLME@xxxxxxxx@hotmail.com 举报,一经查实,立刻删除。