绘制图案解锁所有图案

| 日语等级考试 |

【www.guakaob.com--日语等级考试】

绘制图案解锁所有图案篇一
《如何破解安卓手机图案解锁》

新技能Get!如何破解安卓手机图案解锁

安卓手机的图形锁(九宫格)是3×3的点阵,按次序连接数个点从而达到锁定/解锁的功能。最少需要连接4个点,最多能连接9个点。网上也有暴力删除手机图形锁的方法,即直接干掉图形锁功能。但假如你想进入别人的手机,但又不想引起其警觉的话……你可以参考一下本文。

前提条件:手机需要root,而且打开调试模式。一般来讲,如果用过诸如“豌豆荚手机助手”、

“360手机助手”一类的软件,都会被要求打开调试模式的。如果要删除手机内置软件,则需要将手机root。

原理分析

首先科普一下,安卓手机是如何标记这9个点的。通过阅读安卓系统源码可知,每个点都有其编号,组成了一个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加密过的字符串:c8c0b24a15dc8bbfd411427973574695230458f0,如图:

当你下次解锁的时候,系统就对比你画的图案,看对应的数字串是不是0003060708

对应的

加密结果。如果是,就解锁;不是就继续保持锁定。那么,如果穷举所有的数字串排列,会有多少呢?联想到高中的阶乘,如果用4个点做解锁图形的话,就是9x8x7x6=3024种可能性,那5个点就是15120,6个点的话60480,7个点181440,8个点362880,9个点362880。总共是985824种可能性(但这么计算并不严密,因为同一条直线上的点只能和他们相邻的点相连)。

满打满算,也不到985824种可能性。乍一看很大,但在计算机面前,穷举出来这些东西用不了几秒钟。

破解过程

知道了原理,就着手写程序来实现吧。这里使用了Python来完成任务。主要应用了hashlib模块(对字符串进行SHA1加密)和itertools模块(Python内置,生成00-09的排列组合)。 主要流程为:

1、ADB连接手机,获取gesture.key文件

2、读取key文件,存入字符串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编程技巧。

绘制图案解锁所有图案篇二
《忘记锁屏密码锁屏图案,教你彻底解决,保留全部数据!》

注意:前提是USB调试一直是打开的,如果没有打开那就不要再看下去了。只能WINPE咯。

adb.zip(278.88 KB, 下载次数:

38) 2012-6-4 10:08:09 上传 下载次数: 38

【1】手机连接电脑,充电模式

【2】在电脑上解压adb.zip后,把adb文件放在电脑C盘根目录下。

【3】打开adb文件夹里面的cmd.exe

2012-6-4 09:41:11 上传

下载附件 (49.13 KB)

【4】输入adb shell

2012-6-4 09:38:33 上传

下载附件 (54.19 KB)

【5】然后再输入cd data/system

2012-6-4 09:38:34 上传

下载附件 (58.25 KB)

【6】输入ls查看data/system里面的文件,可以看到有一个

password.key的文件,就是密码的文件,删除之!

2012-6-4 09:38:35 上传

下载附件 (61.74 KB)

【7】输入rm password.key进行删除

2012-6-4 09:49:36 上传

下载附件 (63.25 KB)

【8】输入reboot或手动重启手机生效。

此方法测试能破解密码锁,pin锁是SIM卡的,就肯定不能的了,PIN锁就去找移动吧。。。

原来,图案锁也可以破解了

图案锁,也是按照上面的步骤,到第【7】步的时候,不是删除

password.key

删除那个:gesture.key ; 输入rm gesture.key 既可把它删除!

绘制图案解锁所有图案篇三
《三星手机忘记解锁图案》

三星手机忘记解锁图案

1、你要把手机彻底关机 2、同时按住手机中央的HOME键、电源键,当出现有三星开机画面时也不松开,然后就可以进到初始画手机界面。

用音量键选择到第三个选项 wipe data/factory reset (这个就是恢复出厂设置),按home键确认,接着转到另一个屏幕,有no(有很多个no选项,不管)和yes -- delete all user(只有一个yes -- delete all user选项,就是这个)英文选项,用音量键选择yes -- delete all user,按home确认第三部,第二步按home

确认后,屏幕会转到原来第一步操作时看到的选项,用音量键选择到第四个选项 wipe cache partition ( 这个是清除缓存的意思 ),之后你又会转到原来第一步操作时看到的选项。接着下面第四步:第四步: 用音量键选择到第一选 reboot system now (就是重启系统的意思),这时候手机就会自动重启

音量上+HOME+电源键同时按,出现字幕后松开电源键知道进入recovery,音量上下键选wipe data,清除数据,不过酱紫手机上啥都没了。如果再wipe factory··就恢复出厂设置,应用也没了。不过,没办法呀谁让你忘记图案

绘制图案解锁所有图案篇四
《Android图案解锁code》

Main_Acitivity.java

package com.example.lackpatternview;

import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

import android.widget.RelativeLayout;

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

RelativeLayout relativelayout = new RelativeLayout(this);

lackparrternview lackparrtern=new lackparrternview(this);

relativelayout.setBackgroundColor(TRIM_MEMORY_BACKGROUND); relativelayout.addView(lackparrtern);

setContentView(relativelayout);/*实例化*/

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

Lackparrternview.java

package com.example.lackpatternview;

import java.util.ArrayList;

import java.util.List;

import android.annotation.SuppressLint;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Canvas;

import android.graphics.Matrix;

import android.graphics.Paint;

import android.util.AttributeSet;

import android.view.MotionEvent;

import android.view.View;

public class lackparrternview extends View{

/**

* 图案解锁

* */

//选中点的数量

private static final int POINT_SIZE=5;

//矩阵

private Matrix matrix=new Matrix();

//画笔

Paint paint =new Paint(Paint.ANTI_ALIAS_FLAG);

//9个点 private Point[][] points=new Point[3][3]; private float height,width,offsetX = 0,offsetY=0,bitmapR,movingX,movingY; private Bitmap pointnormal,pointpressed,pointerror,linepressed,lineerror; private boolean isInit,isSelect,isFinish,movingNopoint; //点的集合 private List<Point> Pointlist=new ArrayList<Point>(); public lackparrternview(Context context) { super(context); // TODO 自动生成的构造函数存根 }//构造函数 public lackparrternview(Context context, AttributeSet attrs) {

super(context, attrs); // TODO 自动生成的构造函数存根 }//构造函数 public lackparrternview(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO 自动生成的构造函数存根 }//构造函数 @Override protected void onDraw(Canvas canvas){ if(!isInit){ InitPoints(); } //画点 points2Cancas(canvas); } //画线 if(Pointlist.size()>0){ Point a=Pointlist.get(0); for(int i=0;i<Pointlist.size();i++){ Point b=Pointlist.get(i); line2canvas(canvas,a,b); a=b; } } //绘制鼠标坐标点 if(movingNopoint){ line2canvas(canvas,a,new Point(movingX,movingY)); }

//将点绘制到画布上

private void points2Cancas(Canvas canvas){

for(int i=0;i<points.length;i++){

for(int j=0;j<points[i].length;j++){

Point point=points[i][j];

if(point.state==Point.STATE_ERROR){

canvas.drawBitmap(pointerror, point.x-bitmapR, point.y-bitmapR, paint); }

else if(point.state==Point.STATE_NORMAL){

canvas.drawBitmap(pointnormal, point.x-bitmapR, point.y-bitmapR, paint);

paint); } }

/**

} } else{ canvas.drawBitmap(pointpressed,point.x-bitmapR, } point.y-bitmapR, * 画线 * @param canvas 画布 * * */ private void line2canvas(Canvas canvas,Point a,Point b){ float linelength=(float) Point.distance(a, b); float degrees=getdegrees(a,b); canvas.rotate(degrees,a.x,a.y); if(a.state==Point.STATE_PRESSED){ matrix.setScale(linelength/linepressed.getWidth(), 1); matrix.postTranslate(a.x-linepressed.getWidth()/2, a.y-linepressed.getHeight()/2); canvas.drawBitmap(linepressed, matrix, paint); } else{ matrix.setScale(linelength/lineerror.getWidth(), 1); matrix.postTranslate(a.x-lineerror.getWidth()/2, a.y-lineerror.getHeight()/2); canvas.drawBitmap(lineerror, matrix, paint); } canvas.rotate(-degrees,a.x,a.y); } //初始化9个点 private void InitPoints(){ //1.获取布局宽高 width=getWidth(); height=getHeight(); //2.获取偏移量 //横屏 if(width>height){ offsetX=(width-height)/2; width=height; } //竖屏 else{

offsetY=(height-width)/2; height=width; } //3.图片资源 pointerror=BitmapFactory.decodeResource(getResources(),R.drawable.point_error); pointnormal=BitmapFactory.decodeResource(getResources(),R.drawable.point_normal); pointpressed=BitmapFactory.decodeResource(getResources(),R.drawable.point_pressed); linepressed=BitmapFactory.decodeResource(getResources(),R.drawable.line_pressed); lineerror =BitmapFactory.decodeResource(getResources(),R.drawable.line_error); //4.点的坐标 points[0][0]=new Point(offsetX + width/4,offsetY + width/4); points[0][1]=new Point(offsetX + width/2,offsetY + width/4); points[0][2]=new Point(offsetX + width - width/4,offsetY + width/4); points[1][0]=new Point(offsetX + width/4,offsetY + width/2); points[1][1]=new Point(offsetX + width/2,offsetY + width/2); points[1][2]=new Point(offsetX + width - width/4,offsetY + width/2); points[2][0]=new Point(offsetX + width/4,offsetY + width - width/4); points[2][1]=new Point(offsetX + width/2,offsetY + width - width/4); points[2][2]=new Point(offsetX + width - width/4,offsetY + width - width/4); //5.图片资源半径 bitmapR=pointnormal.getWidth()/2; //6.初始化完成 isInit=true; } public boolean onTouchEvent(MotionEvent event){ movingX = event.getX(); movingY = event.getY(); movingNopoint=false;//此点不可用 isFinish=false; Point point =null; switch(event.getAction()){ case MotionEvent.ACTION_DOWN: resetPoint(); point=checkSelectPoint();

绘制图案解锁所有图案篇五
《手机解锁图案大全》

手机解锁图案大全

绘制图案解锁所有图案篇六
《三种方法教你破解手机解锁图案》

图案解锁方式在Android系统手机当中比较常见,但是随着大量入门用户接触到这类智能手机并且使用这种解锁方式时,由于操控不当就出现了不少问题,最常见的情况就是忘记了设定的解锁图案,结果导致手机无法解锁使用。

这个问题在Android系统手机当中比较常见,图案解锁方式就是被它给带动流行起来的。现在依旧有不少人偏爱这种图案解锁方式,毕竟这样的操控既新颖而且确实比数字密码解锁有乐趣的多了。但是随着大量入门用户接触到这类智能手机并且使用这种解锁方式时,由于操控不当就出现了不少问题,最常见的情况就是忘记了设定的解锁图案,结果导致手机无法解锁使用。今天就为大家解决这个问题!

方法/步骤

1. 方法一:

比较常见的就是Google账号解锁,当你使用手机之前就注册了Google账号并且在手机当中进行了账户添加登陆,就算你忘记了解锁图案也可以通过输入Google账号来解决此问题。不过由于大量的入门用户才接触智能手机,虽然Android系统火热但是用户对它还不太了解,很多人都没有Google账号,所以这个方法的普及程度并不是很理想。

2. 方法二:

还有一个比较直接的方法,在关机情况下通过特殊按键组合进入工程模式(比如HTC手机同时按下音量减和电源键,三星手机同时按下音量+电源+HOME三个按键),然后选择wipe进行清空,这样相当于重新恢复手机出厂设置,再次开机之后就没有解锁这一步直接就能进入手机界面。不过并不是所有手机都适用此方法,因为有的

Android手机不一定自带有可以wipe的Recovery,还有一些手机即便是双wipe了,图案解锁还是存在依旧跳不过去解锁的这一步骤。

3. 方法三:

当然如果你实在是搞不明白弄不清楚,那么直接在网上下载相应的软件,然后按照教程步骤点击几下鼠标就可以清除手机图案进行解锁了,这也不失为是一个傻

瓜式的便捷办法。

4. 忘记手机解锁图案,第三方软件可以轻松搞定。

绘制图案解锁所有图案篇七
《三十种手机解锁图案》

~

.

.

本文来源:http://www.guakaob.com/xiaoyuzhong/207143.html