基本上,这个想法是在通过adb连接的手机上,在运行脚本的计算机中添加一个图案解锁。 因此,类似于adb shell输入事件。 图案已知,没有黑客攻击。
这是一个老问题,但为了帮助任何发现这篇文章的人,请查看我的android-pattern-unlock shell脚本。
它使用ADB的sendevent将已知的解锁图案绘制到锁屏界面。 对我有用,并允许我在屏幕损坏的情况下获取访问权限。
`
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/event3
的getevent
输出来找到它们。
getevent
来获取解锁图案顶部的坐标,推断出底部的坐标,并使用您的脚本来解锁手机,然后删除解锁图案。真是救命稻草! - chrisadb shell getevent -p
命令来查看触摸屏的 id,这样你就可以将命令中的 /dev/input/event3
更改为 /dev/input/event#
,其中 # 是你触摸屏的 id。 - UNOPARATOR有一个命令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"
这会将图案重新设置为旧密钥
我认为不行。因为你无法模拟触摸事件(特别是如果锁是滑动组合或数字)
adb shell input keyevent <KEYCODE>
命令在设备上执行任何操作。 - Richard Onslow Roper