如果我知道这个模式,有没有办法通过adb解锁android手机

时间:2014-05-07 22:17:16

标签: android adb unlock

基本上,想法是在脚本中添加模式解锁,在计算机上运行,​​通过adb连接到手机。所以,像adb shell输入事件。模式是已知的,没有黑客攻击。

4 个答案:

答案 0 :(得分:5)

我在我的S4上试过了Matt Wilson的android-pattern-unlock shell script,但我不得不做一些调整才能让它发挥作用。 以下是我遵循的步骤:

  1. 使用ADB以this代码位(adbcontrol)查看设备的屏幕。它允许您查看设备的屏幕并输入点击和滑动事件。无论你怎么努力,你都无法使用这个程序输入你的模式。
  2. 按顺序点击点来获取图案的坐标。使用adbcontrol的输出窗口查看坐标。现在你将拥有一组坐标{(x1,y1),(x2,y2),(x3,y3),(x4,y4)}(对于4点模式)。
  3. 将以下命令复制到终端中,用坐标替换xi和yi。
  4. `

    adb shell input keyevent 26
    adb shell sendevent /dev/input/event3 3 57 14
    
    adb shell sendevent /dev/input/event3 1 330 1
    
    adb shell sendevent /dev/input/event3 3 53 x1
    adb shell sendevent /dev/input/event3 3 54 y1
    adb shell sendevent /dev/input/event3 3 58 57
    adb shell sendevent /dev/input/event3 0 0 0
    
    adb shell sendevent /dev/input/event3 3 53 x2
    adb shell sendevent /dev/input/event3 3 54 y2
    adb shell sendevent /dev/input/event3 3 58 57
    adb shell sendevent /dev/input/event3 0 0 0
    
    adb shell sendevent /dev/input/event3 3 53 x3
    adb shell sendevent /dev/input/event3 3 54 y3
    adb shell sendevent /dev/input/event3 3 58 57
    adb shell sendevent /dev/input/event3 0 0 0
    

    ...

    adb shell sendevent /dev/input/event3 3 53 xn
    adb shell sendevent /dev/input/event3 3 54 yn
    adb shell sendevent /dev/input/event3 3 58 57
    adb shell sendevent /dev/input/event3 0 0 0
    
    adb shell sendevent /dev/input/event3 3 57 4294967295
    adb shell sendevent /dev/input/event3 1 330 0
    adb shell sendevent /dev/input/event3 0 0 0
    

    `

    这些步骤适用于Galaxy S4,看起来Matt Wilson的代码是为Nexus 4编写的。

    注意:

    - 我使用/dev/input/event3作为触摸屏设备,看起来Nexus 4使用/dev/input/event2。如果您的设备使用其他文件,请将所有命令更改为该文件的sendevents。您可以通过运行adb shell getevent

    来查看设备列表

    - 我必须添加一些命令才能在S4上运行,特别是:

    adb shell sendevent /dev/input/event3 1 330 1
    

    adb shell sendevent /dev/input/event3 1 330 0
    

    我不确定,但我认为第一个命令指示触摸屏上的手指按压事件,第二个命令指示触摸屏上的手指抬起事件。我通过在另一个S4上查看getevent的{​​{1}}输出来找出它们。

答案 1 :(得分:2)

似乎最简单的(以及在我的Galaxy S4上使用JDC Optimized CM 13对我有用的东西)是Vysior,这是一个Chrome扩展程序,它适合我和#34;开箱即用&#34 ;。

更确切地说,这是我在S4的屏幕失效后所做的事情。

  1. 按照here的说明安装最小的ADB和Fastboot。就我而言,我已经激活了ADB调试,这样就省去了很多麻烦。
  2. 根据说明here,我尝试了以下操作,但它没有用,因为显然我没有写访问权限:

    adb shell echo "persist.service.adb.enable=1" >>/system/build.prop echo "persist.service.debuggable=1" >>/system/build.prop echo "persist.sys.usb.config=mass_storage,adb" >>/system/build.prop reboot

  3. 所以,基于this answer,我做了以下工作,这样做有效(从某种意义上说我没有写入访问错误):

    adb remount adb shell echo "persist.service.adb.enable=1" >>/system/build.prop echo "persist.service.debuggable=1" >>/system/build.prop echo "persist.sys.usb.config=mass_storage,adb" >>/system/build.prop reboot

  4. 但是应该发生的魔法(即我手机的屏幕显示在我的电脑屏幕上)并没有发生。我认为我的模式锁屏必须防止事情发生。这是我安装Vysor的时候,大约一分钟后,它在手机上安装了Vysor应用程序,我在计算机屏幕上看到了我的锁屏,并且能够进入模式解锁(它甚至用我的手指在我的平板电脑的触摸屏!)。

答案 2 :(得分:0)

有一个locksettings命令,您可以在其中创建,更改或清除图案,密码和密码

 locksettings set-pattern [--old OLD_CREDENTIAL] NEW_PATTERN
 locksettings set-pin [--old OLD_CREDENTIAL] NEW_PIN
 locksettings set-password [--old OLD_CREDENTIAL] NEW_PASSWORD
 locksettings clear [--old OLD_CREDENTIAL]

是的,您可以从命令行更改或创建模式,用法是

  

locksettings set-pattern:       模式由索引单元格的非分隔数字列表指定       在模式上以从左到右和从上到下的顺序从1开始       即左上角的单元格索引为1,而右下角的单元格       索引为9。例如:1234

因此,要简单地解锁手机以清除图案,请打开手机,然后再次设置图案

代码

adb shell "locksettings clear --old XXXX" 这将清除您的图案。

adb shell "input keyevent 26" 这将按下电源按钮以唤醒屏幕。

adb shell "input swipe 300 1000 300 300" 这将在屏幕上滑动。现在您的手机已明显解锁。

adb shell "locksettings set-pattern XXXX" 这将再次将模式设置为旧键

答案 3 :(得分:-8)

我认为 - 不会。因为您无法模拟触摸事件(特别是如果锁是滑动组合或数字)