【问题标题】:Is there a way to unlock android phone via adb, if I KNOW the pattern如果我知道模式,有没有办法通过 adb 解锁安卓手机
【发布时间】:2014-06-25 02:50:54
【问题描述】:

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

【问题讨论】:

    标签: android adb unlock


    【解决方案1】:

    这是一个老问题,但为了帮助找到此帖子的任何人,请查看 my android-pattern-unlock shell script

    它使用 ADB 的 sendevent 将已知的解锁模式绘制到锁定屏幕中。为我工作并允许我在屏幕损坏的情况下获得访问权限。

    【讨论】:

    • 不得不将 /bin/sh 更改为 /bin/bash,它的工作原理就像一个魅力! (Nexus 4,Android 5.1.1)
    • 您只是链接到一个脚本,但没有解释如何将它与 ADB 一起使用。我有 ADB 坐在这里,我可以看到我的设备,但是如何使用脚本?不,脚本文件中的 cmets 没有多大帮助。谢谢!
    • @Soundfx4 - 打开终端,cd 到包含脚本的文件夹,然后在 cmets 中运行命令:“chmod +x unlock.sh”然后“./unlock.sh”。请注意,该脚本设计为在 Mac 或 Linux 机器上运行,您需要设置 adb。该脚本将为您运行 adb 命令。
    • 您有适用于 Windows 的变体吗?
    【解决方案2】:

    我在我的 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 替换为您的坐标。

    `

    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 编写的。

    注意事项:

    -我的 S4 使用/dev/input/event3 作为触摸屏设备,看起来 Nexus 4 使用/dev/input/event2。如果您的设备使用不同的文件,请将所有命令更改为将事件发送到该文件。你可以通过运行adb shell getevent查看设备列表

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

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

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

    我不确定,但我认为第一个命令表示触摸屏上的手指按下事件,第二个命令表示触摸屏上的手指抬起事件。我通过在不同的 S4 上查看 /dev/input/event3getevent 输出发现了它们。

    【讨论】:

    • 我的触摸屏的底部坏了 - 我使用getevent 来获取我的解锁图案上半部分的坐标,推断出下半部分的坐标,并使用您的脚本解锁手机,然后删除解锁图案。救命稻草!
    • 我必须更改 Matt Wilson 的脚本才能让我的 Galaxy Note 4 正常工作。你的笔记帮助很大。谢谢。对于像我这样的人,link
    • 这在我的 S5 上不起作用,看来 sendevent 命令失败了,因为我看到的只是“使用:sendevent 设备类型代码值”。知道发生了什么吗?
    • 您可以使用adb shell getevent -pcommand查看触摸屏的id,这样您就可以将命令的/dev/inpux/event3更改为/dev/input/event#其中#是您的id触摸屏。
    【解决方案3】:

    有一个命令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" 这将再次将模式设置为旧键

    【讨论】:

      【解决方案4】:

      Vysior 似乎是最简单的(并且在我的带有 JDC 优化 CM 13 的 Galaxy S4 上对我有用)是一个“开箱即用”的 Chrome 扩展程序。

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

      1. 按照here 的说明安装 Minimal 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. 但是本应发生的魔法(即我的手机屏幕出现在我的 PC 屏幕上)并没有发生。我想我的图案锁屏一定是在阻止事情发生。这是我安装 Vysor 的时候,大约一分钟后,它在手机上安装了 Vysor 应用程序,我在电脑屏幕上看到了我的锁屏,并且能够输入解锁模式(它甚至可以用我的手指在我的平板电脑的触摸屏!)。

      【讨论】:

      • 您是如何在手机上启动 Vysor 应用程序的?
      【解决方案5】:

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

      【讨论】:

      • 我们可以发送 `adb shell input keyevent 在设备上执行任何操作。
      猜你喜欢
      • 2015-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多