Купил я как-то 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, но тут надо не порушить файл базы данных и разбираться в его структуре.
Автор: lazoukov