Разблокировать зашифрованный Android из ADB

У меня следующая проблема: Как-то сегодня вечером сломался тачскрин моего Sony Xperia Z. У меня две тонкие трещины на дисплее и все что с правой стороны трещины не реагирует. У меня есть резервные телефоны, но я хотел вернуть хотя бы свои фотографии. Мое устройство зашифровано парольной фразой, но я не могу ее ввести. Моя идея заключалась в том, чтобы разблокировать его из adb, чтобы я мог сделать резервную копию своих данных. Я запускаю SlimKat (SlimRom) с TeamWin Recovery.

Когда я вхожу в режим восстановления, я вижу свой телефон:

$ adb devices
List of devices attached 
CB5A1PN2WU  recovery

Но никакие команды не работают:

$ adb shell
- exec '/system/bin/sh' failed: No such file or directory (2) -

Как я могу получить свои данные? Могу ли я удаленно управлять своей клавиатурой? К сожалению, все сохраняется на внутренней флэш-памяти.

Добро пожаловать на сайт, Стрикс. Варианты этого вопроса уже задавались ранее, вы можете попробовать выполнить поиск по «разблокировать с помощью adb», хотя я не нашел для вас очевидного решения. В этом посте также есть подробный ответ, который может быть вам полезен.
Я читал это раньше. Проблема в следующем: для всех этих решений мне нужен работающий тачскрин или работающий телефон. Мой телефон зашифрован и выключен. У меня не работает ни touch, ни adb shell...

Ответы (2)

Xperia Z поддерживает USB-на ходу, поэтому с адаптером USB-OTG и USB-клавиатурой вы сможете ввести кодовую фразу шифрования для загрузки устройства.

Спасибо, это здорово! Работал как шарм, и получение всех моих данных за 6$ стоило того!

Хотя покупка кабеля OTG должна работать нормально, на самом деле есть способ разблокировать ваше устройство только через ADB. Обнаружил это на собственном горьком опыте, когда я включил в свой пароль символ, который нельзя было набрать на виртуальной клавиатуре, а кабель OTG не работал по причинам, в которые я не буду вдаваться.

Есть две команды ADB, с помощью которых вы можете запускать события клавиатуры. Я протестировал их, и они оба работают на экране ввода ключа расшифровки диска. Эти команды:

  • adb shell input text 'mytext'эмулирует набор текста mytextна клавиатуре. Обратите внимание, что он не принимает произвольный текст: в основном вы можете использовать его для отправки гласных, согласных и цифр ASCII на клавиатуру таким образом. Специальные символы (например ', #, , ;), включая пробел, с помощью этой команды либо требуют специального синтаксиса, либо не принимаются.
  • adb shell inputevent <event_number>эмулирует событие нажатия определенной клавиши. Это можно использовать для ввода определенных специальных символов. Полный список ключевых событий можно увидеть в документации для разработчиков Android . Хотя поддерживаемые ключевые события различаются в зависимости от версии Android, все ключевые события, которые вы будете использовать для ввода пароля, поддерживаются, начиная с Android 3.0 (уровень API 11).

См. этот ответ о переполнении стека для получения дополнительной информации.