九宫格密码破解

本文介绍了九宫格密码的实验原理,包括不同数量点的口令可能性,以及如何通过adb命令提取和分析加密后的SHA1数据。通过编程遍历所有可能的九宫格组合,与gesture.key文件中的加密值对比,最终找到匹配的密码位置。文章还讨论了LockPatternUtils.java中的算法,并提供了构造手势数据的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.实验原理

九宫格的九个点可分别对应1-9这九个数字,分布样式为:

1        2      3

 4       5      6

 7       8      9

将数字之间的连接路径转换为这9个数字,并按9个数字的16进制对其进行SHA1加密,并存储到gesture.key文件中。

Android九宫格默认至少得有 4个数的口令:

4个数的输入口令可能个数为9*8*7*6=3024

5个数的输入口令可能个数为9*8*7*6*5=15120

6个数的输入口令可能个数为9*8*7*6*5*4=60480

7个数的输入口令可能个数为9*8*7*6*5*4*3=181440

8个数的输入口令可能个数为9*8*7*6*5*3*2*1=362880

9个数的输入口令可能个数为9*8*7*6*5*4*3*2*1=362880

一共有985824个可能的输入口令。

2.设置密码,查看效果

3.破解九宫格

使用adb命令来连接模拟器,提取加密过后的SHA1数据,用命令行进入到adb目录下可查看其用法:

用adb shell连接模拟器,对九宫格图案进行提取分析

图片存储在/data/system/gesture.key文件中:

用adp   pull将改文件复制出进行分析

用winhex打开文件gesture.key

通过编程的方法遍历九宫格的所有情况,然后和这个文件的加密值一一比较,找出相同情况

本实验通过(java代码实现)

得到密码位置为1258

九宫格密码破解算法分析:

由pin密码破解可得,代码依然在LockPatternUtils.java中

九宫格图案转化成字节数组,然后在SHA1加密即可,

关于九宫格不再多说了,从0开始顺时针计数到8,类似如下:

这里看代码,有行和列之分,所以比如L形状的手势密码应该是:00 03 06 07 08,这样组成的五个长度的字节。这里为了验证手势密码是否正确

然后在/data/system目录下生成一个密码文件:/data/system/gesture.key,然后用winhex查看一下该文件

根据原始代码构造出一个手势数据

(源码)

(构造的手势代码)

手势点应该是:00 01 02 05 08,打印看看结果:

总结:

将九宫格手势密码中的点数据转化成对应的字节数组,然后直接SHA1加密即可。最终加密信息保存到本地目录中:/data/system/gesture.key中

详细参考网址:https://blog.csdn.net/qq_36946260/article/details/75232263

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值