繁体   English   中英

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

[英]Is there a way to unlock android phone via adb, if I KNOW the pattern

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

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

它使用 ADB 的 sendevent 将已知的解锁图案绘制到锁定屏幕中。 为我工作并允许我通过破碎的屏幕访问。

我在我的 S4 上尝试了 Matt Wilson 的android-pattern-unlock shell 脚本,但我必须做一些调整才能让它工作。 以下是我遵循的步骤:

  1. 使用 ADB 通过这个方便的代码 (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/event3 getevent输出来弄清楚它们。

似乎最简单的(以及在我的带有 JDC Optimized CM 13 的 Galaxy S4 上对我有用的东西)是Vysior ,它是一个 Chrome 扩展,它“开箱即用”对我有用

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

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

有一个命令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]

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

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"这将再次将模式设置为旧密钥

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM