九宫格密码破解

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

猜你喜欢

转载自blog.csdn.net/mengtongxch/article/details/82959155