Пользователь
0,0
рейтинг
21 июля 2014 в 11:53

Разработка → Разблокировка телефона Lenovo глубинными методами из песочницы

Купил я как-то Lenovo A706 — и был я им доволен, и доволен весьма. Нашлась, правда, пара связанных с самостоятельностью экрана глючков, хотя в целом — вполне годный аппарат. Но однажды, в одну темную-темную ночь на даче приключилась с ним беда. Лежал он себе и заряжался. Перед этим пропадал свет, и я специально на ночь отключил передачу данных, чтобы сберечь батарейку, если свет опять погаснет. И оставил я его лежать мордой вниз...

Утром кто-то позвонил из прекрасного далека, я трубку снять не успел, телефон сам себе набрал на экране неправильный узор пятнадцать раз (тот самый глючок!) и жалобно попросился в Гугл для разблокировки… Связанная с телефоном учетка Гугла при этом есть, но добраться я до нее не могу: передача данных, как мы помним, выключена — и сотовая, и Wi-Fi. Что делать? Сбрасывать смартфон в дефолт — жалко, есть несинхронизированные рабочие контакты в записной книге и заметки, да и неспортивно это. Решил бороться. Да! Отладка по USB тоже была выключена, конечно же. А в Lenovo почему-то не подумали, что спрашивать учетную запись при потушенных каналах связи с интернетом смысла не имеет…

После вдумчивого поиска и беглого изучения тематических сообществ в интернете были найдены многие способы разблокировок — от задокументированного сброса в дефолт до заливок каких-то мудрых программ в режиме Recovery как через ADB, так и непосредственно. Cпособы привели к тому, что я в результате (как впоследствии выяснилось) повредил немного конфигурацию устройства, но разблокировать его так и не смог, неизменно получая настойчивое, но совершенно невыполнимое требование войти в Гугл:



Один из предложенных коллективным разумом способов разблокировки предполагал прямое управление базой данных телефона через ADB Shell с использованием инструкций SQL — я не мог им воспользоваться, ибо отладка по USB была выключена, а в режиме Recovery база данных недоступна. Я подумал — а отчего бы не поправить сами файлы с базой данных? В меню Recovery (смартфоны Lenovo вводятся в него держанием кнопок Volume+ и Volume- в процессе включения) есть четыре необходимых для этого действия:

1. Backup. Здесь делается копия телефона. Надо запастись терпением, на это потребуется время. После завершения процесса копия будет лежать на флеш-карте телефона в каталоге /backup в формате ZIP-архива.

2. Mount. Следует разрешить монтирование флеш-карты компьютеру и подключить телефон по USB. Компьютер увидит накопитель телефона, и можно будет скачать сформированный backup-архив, равно как и положить на место модифицированный.

3. Restore. Указать на архив с модифицированной базой данных, подождать, когда телефон восстановит себя из архива.

4. Reboot. Перезагрузить телефон с наконец-то включенным Wi-Fi, после чего ввести данные учетной записи Гугла и больше не делать таких глупостей.

Итак, архив получен и скачан на жесткий диск компьютера. Присмотримся к нему внимательно и сделаем на всякий случай резервную копию, так как содержимое архива мы будем менять. Он имеет формат ZIP и содержит в себе все из основной памяти телефона, в том числе базы данных, которые управляют конфигурацией устройства. Операционная система Android имеет встроенную базу данных SQLite3, где и хранит почти всю свою информацию. Приступим же.

В архиве мы видим каталог и файл:
/backup
backup_info.txt

В файле ничего интересного — полное оглавление архива и права доступа к файлам. Заходим в каталог /data/data/

Здесь мы видим подкаталоги с базами данных в формате XML и SQLite, которые хранят и используют в работе различные приложения и активности операционной системы. Нас интересует вполне определенный подкаталог: /data/data/com.android.providers.settings/databases/, где мы находим файл settings.db и в компании его журнала (файлы settings.db-*) бережно извлекаем из архива. Слава всевышнему, тут Гугл не стал писать ничего собственного и использует стандартный формат! Я использовал программу SQLite Database Browser, ссылку на которую мне любезно предоставил находящийся под иностранным влиянием Яндекс: sqlitebrowser.org. Скачиваем подходящий дистрибутив и устанавливаем программу, затем открываем ею наш файл. В нем мы находим несколько таблиц; нас интересует таблица secure, где в поле [name] будут значения, связанные с WiFi:



Меняем для записей wifi_on и wifi_saved_state значения в поле [value] на единичку и сохраняем изменения. При этом, т.к. закрытие файла базы данных было корректным, SQLite Database Browser потрет файлы журналов и оставит только голый файл settings.db — этого не следует пугаться. Упаковываем этот файл в архив на старое место, не забыв при этом удалить из архива файлы журнала нашей базы данных, потертые SQLite Database Browser'ом! В архиве в каталоге /data/data/com.android.providers.settings/databases/ должен остаться один-единственный файл settings.db. Заливаем архив в телефон, в режиме Recovery требуем Restore, с нетерпением ждем окончания процесса и перезагружаем телефон.

О чудо — у нас включен Wi-Fi! Цепляемся к известной телефону сети, вводим данные учетной записи Гугла и получаем вожделенный доступ к устройству. Разумеется, данный способ будет работать с любым Android устройством, которое способно войти в режим Recovery, сформировать backup-архив и уметь из него восстановиться. Желающие предаться ностальгии вместо SQLite Database Browser могут использовать старый добрый HIEW, но тут надо не порушить файл базы данных и разбираться в его структуре.
Daniil @lazoukov
карма
4,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (32)

  • +1
    А разве в стандартном рекавери есть: Backup,Mount,Restore?
    • +1
      Видимо, нестандартный.
      Кстати, в recovery обычно есть adb, так что. базу можно было слить/залить им.
      • 0
        Не цеплялся, стабильно выдавая ошибку о невозможности доступа к shell'у.
        • 0
          А adb push/pull?
          • 0
            М-м-м… попробую.
            • 0
              Попробуйте. Но может конечно и не работать, если adb там только ради sideload.
      • +1
        Погуглил, похоже что на некоторых моделях Lenovo действительно есть backup/restore (по крайней мере народ пишет stock recovery), с mount все же не нашел, но как то это неправильно. Если все так, то получается есть доступная и легкая в реализации возможность слить пользовательские файлы, даже с устройства на котором стоит ключ блокировки. Вроде как этого быть не должно (например он без разблокировки MTP не должен поднимать и разрешать ADB для не доверенных устройств, в более менее свежих версиях Android), например другие производители при разблокировке загрузчика затирают всю память, чтобы нельзя было получить доступ к данным устройства через модификацию прошивки или recovery, а тут вроде ключ блокировки есть, нужны личные данные? Да не вопрос. История в посте кажется немного не полной, либо нужно срочно писать в lenovo и требовать исправления этой дыры.
        • +1
          История полная, доступ к загрузчику я получил просто перезапуском телефона.

          Здесь я опустил все прочие способы разблокировки, которые пробовал.
          • +1
            Ну значит нужно писать в Lenovo жалобу, потому что это уязвимость.
    • 0
      У меня родная прошивка телефона — но Lenovo много чего дописывал сам.
  • 0
    да, есть. у меня была похожая ситуация, только инет был включен на телефоне. а вообще у Ленов если стандартная прошивка есть фишка — он запоминает wi-fi сети, и при нахождении рядом с сетью, дает запрос на включение. или по настройке — подключается автоматически.
    • 0
      Дома была известная сеть, телефон к ней не зацепился за неделю разборок с ним ни разу.
    • +1
      По-моему, это не фишка Lenovo, а стандартная функция Android.
      • 0
        у меня было достаточно устройств на android, но при Выключенном Wi-Fi просился подключиться только Леново.
        • 0
          При выключенном? Тогда да.
          Только не понимаю, в чем тогда смысл отключения.
          • 0
            Экономия заряда. Очень удобно. Приходишь в офис или домой, он спрашивает — подключаться нет. Тут либо да, если нужно обновиться/скачать, или отключить. Больше напоминать в этот день не будет, до следующего прихода.
            • 0
              В чем смысл экономии, если питание на WiFi все равно подается?
              • 0
                питание не подается как раз, если выключено. он спрашивает, включать питание вайфай или нет
                • 0
                  Если питание не подается, то как тогда определяется наличие сети? Или по геолокации?
                  • –1
                    Да так же как карты работают — по wi-fi сетям ориентируется.
                    • +2
                      А как ориентироваться по Wi-Fi сетям, если Wi-Fi отключен? :)
                      Подозреваю, что эта фишка требует включенной опции «Scanning always available» (у меня английский язык) в настройка Wi-Fi. Таким образом в действительности Wi-Fi физически не отключается.
                      • 0
                        Скорее, отключается на передачу, сохраняя прием.
                      • +1
                        adarian ошибается, но такая фишка действительно есть. Работает по идентификатору сотовой сети. Типа, если телефон обнаружил, что вы подключились к домашней сотовой вышке, то он предлагает включить вайфай, чтобы подключиться к домашней вайфай точке.
                        • 0
                          Видимо, не на всех телефонах это есть.
            • 0
              Ни разу такого не видел на своих аппаратах. Если уж WiFi выключен, так уж выключен…
              • 0
                Это надстройка оболочка Леновы. У коллеги на работе А800, у него всё точно так же работает, включает вайфай в офисе и дома. в остальных местах выходит сообщение — вы отошли от точки доступа, отключить да/нет?
                • 0
                  Не нашел в настройках такого.
        • 0
          Какая модель? Штаная прошивка, не MIUI какая-нибудь?
          • 0
            Штатная прошивка. p780_row_8G_s124_140403
  • 0
    Очень странно, у меня Р780, он цепляется везде — и в офисе, и дома. Может с настройками что-то не так?
    • 0
      Отключите в настройках WiFi — куда вы зацепитесь потом?
      • 0
        На P780 есть такой сервис. Вечером если интересно скажу название. Там что-то связано с оптимизацией. Нужно типа включить обучение на пару дней и он вам будет потом включать/отключать вафлю в зависимости от вашего расположения по id базовых станций.
        Отключил его у своей половины. Аналог LLama из Гугло магазина.
  • 0
    Был и у меня такой случай. Решилось *барабанная дробь* восстановлением бэкапа из рекавери. Вроде и странно, что дожили до того, что телефон нужно вручную раз в месяц бэкапить, но с другой стороны — очень удобная ведь штука! Кучу раз уже от кривых рук спасала.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.