如果我知道图案,是否有一种通过adb解锁安卓手机的方法?

9

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

5个回答

10

这是一个老问题,但为了帮助任何发现这篇文章的人,请查看我的android-pattern-unlock shell脚本

它使用ADB的sendevent将已知的解锁图案绘制到锁屏界面。 对我有用,并允许我在屏幕损坏的情况下获取访问权限。


1
不得不将/bin/sh更改为/bin/bash,然后它就像魔法般地工作了!(Nexus 4,Android 5.1.1) - Murmel
你刚刚链接了一个脚本,但没有解释如何在ADB中使用它。我已经连接了ADB并且可以看到我的设备,但是我该如何使用这个脚本呢?脚本文件中的注释并没有提供太多帮助。谢谢! - Soundfx4
@Soundfx4 - 打开终端,切换到脚本所在的文件夹,然后运行注释中的命令:"chmod +x unlock.sh" 然后 "./unlock.sh"。请注意,该脚本旨在在Mac或Linux机器上运行,并且您需要设置adb。该脚本将为您运行adb命令。 - Matt Wilson
你有Windows的变体吗? - Richard Onslow Roper

6
我尝试使用Matt Wilson的android-pattern-unlock shell脚本在我的S4上操作,但是我需要做一些调整才能使它工作。 以下是我遵循的步骤:
  1. 使用ADB及adbcontrol(一个方便的代码片段)来查看您设备的屏幕。它允许您查看设备的屏幕和输入轻敲和滑动事件。无论您如何努力,您都无法使用此程序输入模式。
  2. 通过按顺序单击点来获取模式的坐标。使用adbcontrol的输出窗口查看坐标。现在你会有一组坐标{(x1, y1), (x2, y2), (x3, y3), (x4, y4)}(对于四点模式)。
  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。如果您的设备使用不同的文件,请将所有命令更改为发送到该文件的sendevents命令。您可以通过运行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输出来找到它们。


1
我的触摸屏底部坏了 - 我按照说明使用了 getevent 来获取解锁图案顶部的坐标,推断出底部的坐标,并使用您的脚本来解锁手机,然后删除解锁图案。真是救命稻草! - chris
我不得不更改Matt Wilson的脚本,以使我的Galaxy Note 4正常工作。而您的笔记很有帮助。谢谢。对于像我这样的人,链接 - neokim
这在我的S5上无法运行,似乎是因为sendevent命令失败了,因为我只看到“use:sendevent device type code value”。有任何想法发生了什么? - Marie
你可以使用 adb shell getevent -p 命令来查看触摸屏的 id,这样你就可以将命令中的 /dev/input/event3 更改为 /dev/input/event#,其中 # 是你触摸屏的 id。 - UNOPARATOR

3

有一个命令locksettings,您可以使用它来创建、更改或清除您的图案、PIN和密码。

 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" 这会将图案重新设置为旧密钥


2
似乎最简单的方法(对于我使用的Galaxy S4和JDC Optimized CM 13)是使用Vysior,一个 Chrome 扩展程序,它可以直接运行。
更准确地说,以下是我在 S4 屏幕失效后所做的事情:
1.按照这里的说明安装 Minimal ADB and Fastboot。在我的情况下,我已经激活了 ADB 调试,因此省去了很多麻烦。
2.基于这里的说明,我尝试了以下操作,但由于显然没有写入权限,所以它并没有起作用:
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.因此,根据此答案,我改为执行以下操作,并且这起作用了(我不再有写入访问错误):
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 应用程序,我在电脑屏幕上看到了我的锁屏,并能够输入图案进行解锁(甚至可以使用我的平板电脑触摸屏上的手指)。

你是如何在手机上启动Vysor应用程序的? - mahler

-9

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


我们可以发送 adb shell input keyevent <KEYCODE> 命令在设备上执行任何操作。 - Richard Onslow Roper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接