【移动安全实战篇】————5、Android屏幕解锁图案破解

摘要:
安卓手机上有一个屏幕解锁应用程序,大家都很熟悉。在Android设备上,用户可以通过将锁定模式设置为密码来锁定设备用户界面。锁界面如下图所示。通常,安卓手机的锁界面由九个点组成,设计应满足三个要求:至少四个点;最多9分;无重复点。这种看似复杂的解锁方法在Android存储中明文转换后以哈希模式存储。

Android手机上有一个屏幕解锁的应用相信大家都不陌生,在 Android 设备上,用户可以通过设置锁定图案作为密码对设备用户界面进行锁定,锁定界面如下图所示。

【移动安全实战篇】————5、Android屏幕解锁图案破解第1张

一般的Android手机的锁定界面由九个点构成,设定图案需满足三个要求:

  • 至少四个点;
  • 最多九个点;
  • 无重复点。

这种看似复杂的解锁方式在 Android 存储时使用的是明文转换后采用散列方式存储。Android 设备图案锁定的加密存储过程:

【移动安全实战篇】————5、Android屏幕解锁图案破解第2张

下面设置一个图形加密锁测试一下:
第一步:图形输入。

【移动安全实战篇】————5、Android屏幕解锁图案破解第3张

输入上图一样的图案(看上去是个“2”,使用了九个点。)

第二步:明文加密。

这一步是系统自动完成的,首先是九个点的数据含义,含义是这样的:从左上角起编号为 00,至右下角止编号为 08。那么上图中“2”的编码应该是000102050403060708。使用SHA1算法对上述十六进制编码进行计算后得到密文“333d9f31c209ce1217bc165c5baa7307b06bbf87”。这一步系统会自动将图案转换成编码,在将编码算出密文的。因此我们是看不到的。

第三步:密文存储。

计算好密文后,系统会将密文存储在/DATA/SYSTEM/GESTURE.KEY文件中,我们可以使用“adb pull /data/system/gesture.key gesture.key”将这个密码文件系在到本地,得到密码文件后,用记事本打开是乱码的,要用十六进制编辑器打开才可以看到密文。

【移动安全实战篇】————5、Android屏幕解锁图案破解第4张

可以看到密文和上一步我们计算出来的是一样的。
对上面算法总结一下规律。从密码明文的编码来看,各单数位数字为零,双数位数字不重复地排列,并将这个排列进行单次SHA1运算。那么也就是说,通过数学计算可知,由于单数位确定,双数位不重复,则根据 Android 图案锁定规则可以设置的锁定图案总数是固定的,4个数的密码个数为9*8*7*6=3024。5个数的密码个数为15120个。6个数的密码个数为60480个。7个数的密码个数为181440个。8个数和9个数的密码个数都是36288个。也就是说一共密码的可能个数为985824个。由于密码复杂程度不高,破解相对容易。只要做一个字典进行暴力猜解就可以将正确密码解出来且速度很快。生成的字典50多m,暴力破解速度基本是秒破的。

【移动安全实战篇】————5、Android屏幕解锁图案破解第5张

当然如果只是为了搞定这个密码,还有更简单的方法,就是直接adb shell到设备上,然后执行“rm /data/system/gesture.key”命令将密码文件删掉就可以了,删除后相当于没有设备图案锁。
破解android屏幕解锁图案就是这么简单,希望大家喜欢。

转自:https://bbs.pediy.com/thread-166933.htm

免责声明:文章转载自《【移动安全实战篇】————5、Android屏幕解锁图案破解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇杂记1:不安装Oracle客户端远程连接Oracle的方法BAT文件编写基础知识下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

分享一个单机软件试用期计时思路

1.首次启动软件时,先获取自己软件写入的注册表项,如果已经存在了,再获取记录的时钟周期数,如果不存在的话,获取主机自cpu上电以来的时钟周期数,已纳秒为单位,然后把这个数保存到电脑自己的注册项里。 2.以后每次启动软件,都获取自cpu上电以来的时钟周期数,然后再去读取首次写入的那个数值。 3.两两相减,计算出的时间差就是软件再这台主机上存在的天数的纳秒值。...

python3.6安装教程

文章目录 Windows安装python3.6教程 1.下载安装包 2.安装 3.运行python 4.配置环境变量 Windows安装python3.6教程 Python代码要运行,必须要有Python解释器。 目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的。 Python3.x的版本是没有什...

WPF学习笔记——概述

如果你选择WPF,多半原因是因为折服于它那震撼性的用户体验。纵观WPF整个知识体系,其内容并不复杂,但却比较细碎,不易理清。以下内容是对WPF部分内容的简单概括,希望读者能够对WPF框架有个大体认识。 一 常用类型与继承树   WPF的常用类型如下: 二 分辨率无关性   WPF使用设备无关单位度量。一个设备无关单位被定义为1/96英寸。WPF使用下面的...

Winform打包Exe Inno Setup

9.下载安装Inno Setup 下载地址:https://pc.qq.com/detail/13/detail_1313.html 安装完成以后打开Inno Setup客户端 a. file->new,新建脚本 b.填写应用程序信息,黑体为必填项 Application name: 应用名称; Application version:应用版本;...

java 通过 SmbFile 类操作共享文件夹

添加依赖 在pom.xml文件夹中添加如下的依赖就可以引用SmbFile类的jar包。 <dependency> <groupId>jcifs</groupId> <artifactId>jcifs</artifactId> <version>...

第九章Admin后台系统

第九章 Admin后台系统 默认启用的Admin后台系统'django.contrib.admin', 创建账户密码之前,确保项目已执行数据迁移,在数据库中创建相应的数据表 中文显示后台 把该中间件位于settings.py中的第三个中间件的位置'django.middleware.locale.LocaleMiddleware', 注册模型到后台的两种方...