Есть ли способ разблокировки телефона Android через ADB, если я ЗНАЮ шаблон
По сути, идея заключается в том, чтобы добавить скрипт разблокировки в скрипт, работающий на компьютере, подключенном к телефону через adb. Итак, что-то вроде входных событий оболочки adb. Шаблон известен, без взлома.
5 ответов
Это старый вопрос, но в интересах помочь любому, кто найдет этот пост, проверьте мой скрипт оболочки android-pattern-unlock.
Он использует отправитель ADB для рисования известного шаблона разблокировки на экране блокировки. Работал на меня и позволил мне получить доступ с разбитым экраном.
Я попробовал сценарий оболочки Мэтта Уилсона для android-pattern-unlock на моем S4, но мне пришлось внести некоторые коррективы, чтобы он заработал. Вот шаги, за которыми я следовал:
- Используйте ADB для просмотра экрана вашего устройства с этим удобным фрагментом кода (adbcontrol). Это позволяет вам просматривать экран вашего устройства и вводить события касания и смахивания. Вы не сможете ввести свой шаблон с помощью этой программы, как бы вы ни старались.
- Получить координаты вашего шаблона, нажав на точки по порядку. Используйте окно вывода из adbcontrol, чтобы увидеть координаты. Теперь у вас будет набор координат {(x1, y1), (x2, y2), (x3, y3), (x4, y4)} (для шаблона из 4 точек).
- Скопируйте следующие команды в свой терминал, заменив 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, похоже, код Мэтта Уилсона написан для 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
Я не уверен, но я думаю, что первая команда указывает событие нажатия пальцем на сенсорном экране, а вторая команда - событие подъема пальца на сенсорном экране. Я понял их, посмотрев на getevent
выход для /dev/input/event3
на другом S4.
Есть команда 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"
Это снова установит шаблон на старый ключ
То, что кажется самым простым (и что работало для меня на моем Galaxy S4 с JDC Optimized CM 13), это Vysior, расширение Chrome, которое просто работало для меня "из коробки".
Чтобы быть более точным, вот что я сделал после того, как экран моего S4 перестал существовать.
- Установите Minimal ADB и Fastboot, как описано здесь. В моем случае у меня уже была активирована отладка ADB, что избавило меня от многих проблем.
Основываясь на инструкциях здесь, я попробовал следующее, но это не сработало, потому что, очевидно, у меня не было доступа для записи:
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
Итак, основываясь на этом ответе, я вместо этого сделал следующее, и это сработало (в том смысле, что у меня не было ошибок доступа к записи nore):
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
Но волшебство, которое должно было произойти (т.е. экран моего телефона появился на экране моего компьютера), не произошло. Я подумал, что мой шаблон блокировки экрана должен предотвращать происходящее. Это когда я устанавливаю Vysor и примерно через минуту, в течение которого он установил приложение Vysor на телефоне, я увидел свой экран блокировки на экране моего компьютера и смог ввести шаблон для разблокировки (он даже работал, когда мой палец сенсорный экран моего планшетного ПК!).
Я думаю - Нет. Потому что вы не можете смоделировать сенсорные события (особенно, если блокировка представляет собой комбинацию или число пролистывания)