[英]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 脚本,但我必须做一些调整才能让它工作。 以下是我遵循的步骤:
`
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 的屏幕解散后所做的。
根据此处的说明,我尝试了以下操作,但没有奏效,因为显然我没有写权限:
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
因此,基于此答案,我改为执行以下操作,并且有效(从某种意义上说,我没有写入访问错误):
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
但是应该发生的魔法(即我的手机屏幕出现在我的 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.