- Где хранятся настройки Android?
- 4 ответа
- Настройки
- Сброс графического ключа / пароля. Редактирование settings.db через sqlite3.
- О забытом пароле
- Подключение по ADB
- Получение доступа без отладки по USB
- Снятие блокировки в базе данных
- Data android providers settings databases
- Что можно сделать с системой с помощью прав root в SqLite?
- Содержание статьи
- WARNING
- Работа с базами
- accounts.db
- Xakep #197. Социальная инженерия
- mmssms.db
- contacts2.db
- msgstore.db
- settings.db
- Выводы
- Блок-врезка: Остальные базы
Где хранятся настройки Android?
Мне нужно настроить 50+ плюс телефоны для моей компании, и мне разрешено создавать телефоны. Каждый телефон должен иметь одинаковые SSID /пароли WIFI, настройки учетной записи /конфиденциальности, яркость, методы ввода и т. Д. Повторение точной ручной настройки 50 раз кажется немного утомительным.
Где хранятся настройки телефона? Могу ли я просто adb нажимать настройки на каждое устройство? Телефоны Samsung Galaxy Pockets.
4 ответа
Как оказалось, нет волшебного файла или каталога, содержащего все настройки. Они хранятся в разных местах и в значительной степени зависят от того, как производитель решает настроить ситуацию. Я в первую очередь работаю с телефонами Samsung, поэтому информация здесь будет в основном ориентирована на Samsung. Кроме того, обратите внимание, что для всех нижеприведенных требований необходим root-доступ. Если у кого-то есть что добавить /исправить, не стесняйтесь комментировать.
Во-первых, я обнаружил, что «настройки копирования» — это не всегда лучший способ. Вы можете сделать резервное копирование и восстановление nandroid , которое в значительной степени клонирует один телефон к другой. Если вы достаточно техничны, и вы используете Samsung, то создайте свой собственный odin изображение может быть даже лучшим вариантом, так как оно не зависит от вас или от кого-либо, кто создал поддержку nandroid /recovery.
Настройки
Общие настройки:
Настройки в основном хранятся в подкаталоге /data . Если вы ищете что-то конкретное, начните там.
Встроенные приложения:
Встроенные приложения обычно сохраняют свои настройки в /data/data/com.android.* и /data/data/com.google.android.*
Например:
Контакты: /data/data/com.android.contacts
Учетные записи электронной почты: /data/data/com.android.email
MMS: /data/data/com.android.mms
Wi-Fi:
Расположение настроек Wi-Fi зависит от производителя, но, как правило, предсказуемо. Samsung Galaxy Pocket, S2, S3: /data/misc/wifi/wpa_supplicant.conf
Вкладка Samsung: /data/wifi/bcm_supp.conf
HTC Desire: /data/misc/wifi/wpa_supplicant.conf
Dell Streak: /data/misc/wifi/wpa.conf
Oneplus 2, 3: /data/misc/wifi/networkHistory.txt
Конфигурации клавиатуры:
Мне пришлось отключить аппаратные клавиши, перенастроить макеты или изменить поведение клавиатуры. Точное имя файла имеет тенденцию отличаться на каждом телефоне, но я нашел файлы конфигурации всегда в /system/usr/keylayout/ . Будьте осторожны, так как это может привести к повреждению вашего телефона.
Разное:
Большинство различных настроек, таких как информация о продукте, звуки загрузки и включение /выключение экранной панели навигации, хранятся в /system/build.prop . Нарушение этого конфигурационного файла может привести к загрузке вашего устройства.
Если я найду дополнительную информацию, я добавлю позже.
Источник
Сброс графического ключа / пароля. Редактирование settings.db через sqlite3.
Данная заметка рассматривает способы сброса графического ключа (или пароля) на системах Android (планшеты и смартфоны). В т.ч. без пароля от аккаунта Google. И даже изначально root прав на устройстве и режима отладки USB, на примере планшета на чипе Allwinner A10.
О забытом пароле
Вчера на работе принесли мне коллеги планшет с просьбой помочь. Это был некий TeXeT (модель не важна) на чипе Allwinner A10. Структура прошивок A10 и его возможности уже хорошо известны (мне в том числе), поэтому возможностей к решению различных проблем много.
В данном случае проблема была в том, что на планшет поставили графический ключ, который успешно забыли. Что в этом случае в первую очередь советует поиск? К сожалению в начале попадаются только банальные решения — ввести неправильно пароль 5 раз, и после этого вам предложат ввести данные от аккаунта Google. Которые к сожалению тоже забыли.
Конечно не все такие беспечные. И если ключ забывается часто, то пароль от Google аккаунта даже если и не сразу вспомнить, то обычно можно восстановить на сайте Google (конечно если были введены корректные данные). Но что делать, если его нет и восстановить не удается?
Подключение по ADB
Первым делом надо попробовать подключить устройство к компьютеру по USB. Если у вас ранее был включен режим отладки по USB (который нужен при любой «махинации» с устройством — получение root прав, скрипты, установка кастомных прошивок и т.д.), то устройство должно будет «увидеться» в режиме ADB. Далее, если у вас еще не было root прав, то нужно их получить. Как это делается я тут рассказывать не буду, зависит это от конкретного устройства. Но нужен способ, работающий с компьютера (т.к. самим устройством пользоваться мы не можем). Несмотря на блокировку, действия через скрипты будут обрабатываться и доступ через ADB к планшету имеется. Смысл в том, что при наличии root доступа к консоле устройства через ADB, можно будет снять блокировку и исправить многие другие проблемы.
Получение доступа без отладки по USB
Но на моем планшете к сожалению отладка по USB была отключена полностью. Что делать? Можно конечно просто перепрошить или сделать wipe/сброс. Но тогда потеряются все данные. Я ищу более «гуманные» способы. И для устройства на A10 я нашел следующее решение. Получить доступ с root правами из консоли можно через кастомный recovery! Т.е. например CWM. Если он уже стоит — замечательно. Загружаемся в него и правим.
Но у меня его не было. Как поставить рекавери без доступа к планшету и его настройкам? У Allwinner A10 есть замечательная возможность загрузиться со своим образом с microSD карты. Для моего варианта подошла эта инструкция. Подготовив флэшку и загрузившись с неё, я попал в меню CWM Recovery. Отлично! Запускаем ADB и видим доступ в консоль с правами рута. Из меню (или из консоли с помощью команды ‘mount /dev/nandd /data’) CWM монтируем раздел /data.
Снятие блокировки в базе данных
Далее из ADB нужно сделать определенные действия. Я нашел такую инструкцию на форуме 4pda. Сразу попробовал способ 2, т.е. удалил файл gesture.key:
adb shell rm /data/system/gesture.key
Мне к сожалению не помогло. Дальше пошел по 1му способу и сделал:
adb shell
cd /data/data/com.android.providers.settings/databases
sqlite3 settings.db
update system set value=0 where name=’lock_pattern_autolock’;
update system set value=0 where name=’lockscreen.lockedoutpermanently’;
.quit
Точнее у меня в рекавери не было sqlite3, поэтому я забрал файл settings.db через ‘adb pull /data/data/com.android.providers.settings/databases/settings.db’ к себе на компьютер и уже там его редактировал через SQLite3. К сожалению именно эта рекомендация не помогла. Стал разбираться.
В файле /data/data/com.android.providers.settings/databases/settings.db хранятся настройки системы, в т.ч. блокировки. По сути это база данных формата sqlite3, которую через него и можно редактировать. Я смог посмотреть все настройки которые там были и по ним нашел то, что данные параметры у меня были не в таблице system, а в таблице secure. Видимо место хранения и значения разнятся от версии Android’а. Далее нашел еще некоторые настройки, которые надо исправить. Посему полный список команд после sqlite3 settings.db будет выглядеть так:
update secure set value=0 where name=’lockscreen.password_salt’;
update secure set value=0 where name=’lockscreen.password_type’;
update secure set value=0 where name=’lockscreen.lockoutattemptdeadline’;
update secure set value=0 where name=’lock_pattern_visible_pattern’;
update system set value=0 where name=’lockscreen.lockexchange.enable’;
После этого измененный файл settings.db я «залил» назад на планшет, вместо старого. Извлекаем флэшку с рекавери и перезагружаемся. И планшет замечательно загружается без блокировки и со всеми пользовательскими данными.
Надеюсь и вам помогут эти рекомендации, если вы окажетесь в подобной ситуации. А вообще не забывайте свой пароль на аккаунт Google.
Источник
Data android providers settings databases
Отказ от ответсвенности: этот мануал предоставлен только для ознакомительных целей, вы не должны использовать эту возможность на чужих телефонах без разрешения владельца ни при каких обстоятельствах. Ни автор, ни переводчик не отвечают за различные случаи применения этого хака.
От переводчика (автора темы): не знаю, может эти способы уже обсуждались на форуме, но поиском ничего не нашел, поэтому решил выложить, так как часто встречаются проблемы с экраном блокировки.
Не так давно я у меня была проблема с девайсом на андроиде, который был заблокирован с помощью графического ключа и мне удалось разблокировать его через adb. Это мануал по тому, как вам справиться с этим, если когда-нибудь и вы столкнетесь с этой проблемой.
На устройстве необходимо чтобы было включен usb debugging, если он не включен, но у вас имеется cwm, вы можете выполнить теже инструкции через cwm, рут не обязателен (хотя лучше если устройство будет рутовано).
Этот методы был протестирован на Gingerbread, Ice Cream Sandwich и Jelly Bean.
Обо способа работают через adb.
Вы можете попробовать оба способа, вот пример того, как я действовал, чтобы удалить блокировку:
- Воспользовался способом 1.
- Перезагрузился.
- Воспользовался способом 2.
- Перезагрузился.
Если после второй перезагрузки изменений не произошло, тогда попробуйте:
И снова перезагрузиться.
Примечания:
- В первом способе каждая строка это различная команда, так что нажимайте Enter после набора каждой строки.
- Во втором способе наберите полностью команду, затем нажмите Enter.
- После применения обох способов и перезагрузки вы можете увидеть экран блокировки, но это не значит, что он работает, просто попробуйте ввести любой ключ и он разблокируется, затем удалите экран блокировки в настройках.
- Эти спобобы могут работать, а могут не работать на различных устройствах, так что все что вы можете это попытаться, но я не гарантирую работу.
P.S. я (автор темы), не являюсь автором мануала, я просто привел на 4pda вольный перевод этой инструкции: http://forum.xda-developers.com/showthread.php?t=1800799
Сообщение отредактировал vaalf — 16.01.17, 19:37
Источник
Что можно сделать с системой с помощью прав root в SqLite?
Содержание статьи
SQLite — очень популярное решение хранения данных, и операционная система Android не исключение. Сама система и многие программы используют для хранения информации базы данных — файлы с расширением db. Какие именно данные содержатся в базах, как их посмотреть, что с ними можно сделать и чем это грозит устройству с правами суперпользователя — обо всем этом я расскажу в статье.
WARNING
Работа с базами
Для работы с базами существует немало различного софта как для компа, так и для Android-устройств. Базы приложений обычно находятся по пути /data/data/НАЗВАНИЕПАКЕТАПРИЛОЖЕНИЯ/databases. Узнать название пакета интересующего приложения можно зайдя в «Настройки -> Приложения -> Все» и выбрав нужное (откроется вкладка «О приложении»), или в адресной строке браузера на странице приложения в Play Market.
Чтобы попасть в сам каталог /data/data, необходимы права суперпользователя, а с просмотром содержимого отлично справится Root Explorer. Для более удобной работы, а также для редактирования баз на устройстве можно использовать, например, SQLite Debugger, а на компе — DB Browser for SQLite. Для работы с базами также необходим установленный BusyBox с апплетом sqlite3. Все манипуляции в статье проводятся на Nexus 5 с прошивкой 5.1. Доступные для просмотра и редактирования базы, разбитые по соответствующим программам, на устройстве можно посмотреть в той же программе SQLite Debugger, нажав на главном экране меню App. Так чем же могут быть полезны базы в первую очередь тебе и что может украсть злоумышленник? Попробуем разобраться.
accounts.db
Находится в /data/system/ или /data/system/users/0 в зависимости от версии прошивки и содержит данные обо всех аккаунтах, зарегистрированных на устройстве. Как видно на скриншоте «Структура accounts.db» в таблице accounts, к моему устройству привязано пятнадцать аккаунтов различных программ. Почти для всех указаны логины, для части есть пароли (на рисунке часть удалена) в зашифрованном виде.
Структура accounts.db
Xakep #197. Социальная инженерия
В таблице authtokens содержатся токены авторизации от приложений, всех сервисов Google, GMS и других приложений. На вкладке extras — дополнительные ключи и значения, такие как GoogleUserId и список подключенных приложений/сервисов. У меня их около пятидесяти, включая Talk, YouTube, URL shortener, Wallet и другие.
Токены авторизации в accounts.db
Не скажу, может ли злоумышленник расшифровать пароли из базы, но получить доступ к сервисам можно, просто подкинув базу на другое устройство. Попробуем провести такой эксперимент. Возьмем базу со смартфона Nexus 5 и планшет Nexus 7 с чистой системой (свежеустановленная 5.1 через flash-all.bat с ключом -w, затем root). После загрузки чистой системы нажимаем «Пропустить» при запросе добавления аккаунта, далее устанавливаем весь софт, прописанный в accounts.db (WhatsApp официально не поддерживает работу на планшетах, поэтому качаем APK с варезников или 1mobile.com). Далее скидываем базу со смартфона, помещаем в каталог /data/system/users/0 на планшете и перезагружаемся.
После загрузки видим, что на вкладке «Настройки -> Аккаунты» появился наш аккаунт Google и дал нам полный доступ ко всем связанным программам. Почта, с помощью которой можно поменять пароль от аккаунта, все контакты с номерами телефонов, Google+, фотографии, файлы Google Drive, заметки, сохраненные авторизации в мобильном Хроме и так далее. Единственный неприятный момент — нерабочий Play Market, который выдает: «Ошибка при получении данных с сервера rpc:s-7:aec-7». Погуглив текст ошибки, можно легко его реанимировать.
Остальные приложения вели себя по-разному:
- Viber — базы ему недостаточно, открывается на странице ввода телефона;
- Facebook — показал логин на экране авторизации, но пароль оказался пустым;
- WhatsApp — также предлагает ввести номер телефона;
- ICQ — подставляет номер телефона, после чего отсылает код на телефон;
- LinkedIn и ВКонтакте — открывают стартовую страницу с запросом на авторизацию;
- Pebble — после коннекта с часами автоматом зацепил аккаунт и добавил в локер все установленные программы;
- Dropbox — нормально заработал и показал все файлы;
- Яндекс.Почта — загрузилась и показала все письма. К слову, это был корпоративный ящик, хостящийся у Яндекса.
Вывод: к последним трем программам легко получить доступ, если увести данные из accounts.db или саму базу.
mmssms.db
А вот и вся наша СМС-переписка. Находится она по пути /data/data/com.android.providers.telephony/databases/. Попробуем что-либо поменять. Для примера возьмем СМС с номера 900 — это информатор Сбербанка. На скриншоте «СМС от Сбербанка до и после вмешательства в mmssms.db» слева, последнее сообщение: «ECMC6844 02.05.15 12:49 покупка 450р 210009 KARI Баланс: 3281.16р». Поменяем его на более интересное сообщение, показанное справа. Для этого открываем базу на устройстве в SQLite Debugger. Нас интересует таблица sms. Выделим необходимые поля запросом:
Программа имеет тач-ориентированный интерфейс, и сами команды можно не писать вручную. Они подставляются автоматически после вызова меню долгим тапом на значении или после нажатия на соответствующее слово в верхней строке. Команды показаны для удобства использования в дальнейшем (например, при работе с консолью или вызове скриптов Таскером).
Изменяем значения в базе mmssms.db
Итак, нажав на SELECT и отметив галочками нужные поля, получим таблицу, содержащую номер записи, номер ветки разговора, номер отправителя, дату в UNIX time и собственно текст СМС (см. скриншот «Изменяем значения в базе mmssms.db»). Долгий тап на последней записи. Программа предлагает на выбор действия. Выбираем Update value. Вводим необходимый нам текст. По аналогии с предыдущими СМС сделаем себе зачисление денег через банкомат. Изменим текст на «ECMC6844 05.05.15 10:18 зачисление 1000000р ATM 367700 Баланс: 1003731.16р». Сам запрос будет выглядеть так:
Нажав на треугольник в правом верхнем углу, внесем изменение в строку. Подгоним время из текста СМС (05.05.15 10:18) в поле date. Можно использовать любой UNIX time конвертер, например Онлайн калькулятор unix time stamp. Соответствующая дата будет 1430810300. Добавим в конец три произвольных цифры для миллисекунд и вставим полученное значение в поле date.
Две команды можно объединить в одну, вписав редактируемые поля с данными через запятую. Нажимаем в правом нижнем углу кнопку Commit и вносим изменения в базу. Смотрим, что получилось. На том же скриншоте «СМС от Сбербанка до и после вмешательства в mmssms.db» справа видно, что теперь мы богатые люди и на счету у нас больше миллиона. Иногда требуется очистить данные приложения, обрабатывающего СМС, чтобы изменения вступили в силу.
СМС от Сбербанка до и после вмешательства в mmssms.db
Попробуем добавить в базу новую СМС. Для этого нам понадобятся две таблицы в базе: threads, которая хранит порядковый номер и заголовок (последнее сообщение) разговора/нити, и sms, которая хранит всю оставшуюся информацию. Вариантов событий тут два.
Вариант 1: добавляем СМС в существующий разговор. Для этого ищем в таблице sms номер ветки разговора — thread_id, соответствующий номеру отправителя. Как видно на скриншоте «Изменяем значения в базе mmssms.db», для информатора Сбербанка это цифра 7. Добавим новую строку в разговор, показанный на предыдущем скриншоте. Заполняем следующие поля: thread_id — ветка/нить разговора; address — номер отправителя; person — если отправитель есть в списке контактов; date — время прихода СМС; read — 1 для прочитанного сообщения, 0 для непрочитанного; type — 1 входящее, 2 исходящее (есть еще 0 — отправляемое и 4 — черновик); body — текст сообщения. Для добавления новой строки в таблицу необходимо выполнить следующую команду:
Значение strftime(‘%s’, ‘now’)*1000 используется для вставки текущего времени. Для вставки конкретной даты и времени необходимо использовать UNIX time с тринадцатью цифрами. Результат можно увидеть на скриншоте «Добавляем новую СМС в существующий разговор».
Добавляем новую СМС в существующий разговор
Вариант 2: добавляем новую СМС и создаем новую ветку разговора. Если по аналогии добавить строку с новым номером +7123456789, которого нет в записной книге и с которым ранее не было переписки, то в отправителях будет значиться «Неизвестный отправитель» без указания номера (см. скриншот «Добавляем новую СМС и создаем новую ветку» слева). Чтобы этого избежать, необходимо увязать еще таблицы threads и canonical_addresses. Сначала добавляем строку с номером в canonical_addresses, попутно проверяя наличие этого номера в таблице:
Затем создаем новый разговор/нить в таблице threads. В этой таблице recipient_ids соответствует порядковому номеру _id, а также номеру в таблице canonical_addresses, который создали предыдущей командой.
Далее добавляем само сообщение с уже созданным thread_id равным recipient_ids, который получили увеличением последнего номера recipient_ids в threads на 1 (MAX(_id)+1).
После этой вставки сработают триггеры и обновят информацию в ячейках всех таблиц базы. Результат можно увидеть на скриншоте «Добавляем новую СМС и создаем новую ветку» справа.
Добавляем новую СМС и создаем новую ветку
Для удобства все указанные команды можно вводить через консоль с компа, эмулятор терминала на устройстве или вызывать из Таскера. Proof of concept для Таскера:
- Создаем сцену с полями для ввода данных или действия Variable Querry для каждой переменной.
- Присваиваем переменным вводимые данные: номер отправителя/получателя, тип сообщения — входящее/исходящее (1/2), точное время сообщения.
- После нажатия кнопки «Добавить» в сцене или ввода последней переменной проверяется наличие введенного номера в таблице canonical_addresses. При его отсутствии добавляется новая строка с номером. Введенное время переводится в UNIX time. При отсутствии данных в переменной %Time или если введен 0 подставляется текущее время.
- Срабатывает скрипт, вносящий остальные данные в базу.
Само действие изменения базы для примера из скриншота «Добавляем новую СМС в существующий разговор» будет выполняться через Script — Run Shell с чекбоксом Root:
contacts2.db
Находится в /data/data/com.android.providers.contacts/databases/ и содержит всю записную книжку и логи звонков. В базе находятся все контакты, для аккаунтов которых в разделе «Настройка -> Аккаунты» включена синхронизация. Указаны они в таблице accounts (например, facebook, vk, whatsapp). Посмотрим, что можно выжать из этой базы.
Изменяем время и длительность звонка
Предположим, что мы позвонили кому-то и не дозвонились. Можно найти в истории звонков любой номер, но для удобства сделаем дозвон и скинем звонок. Заглянем в историю звонков и увидим сделанный звонок с датой (на момент написания статьи) — 6 мая 2015 года, временем 10:23 и длительностью 0 мин 0 с (см. скриншот «История звонков до и после изменений в contacts2.db» слева).
Откроем в базе таблицу calls и увидим, что в конце есть строка (в моем случае 364) с номером, датой, длительностью, типом и так далее. Дата традиционно в UNIX time, длительность в секундах, тип 2 соответствует исходящему звонку. Поменяем дату на вчерашнюю и поправим длительность. Для этого введем команду (см. скриншот «Изменяем время и длительность звонка»):
Заглядываем в историю звонков (см. скриншот «История звонков до и после изменений в contacts2.db» справа) и показываем начальнику, что мы вчера очень мило поболтали с заказчиком и за двадцать пять минут утрясли все рабочие моменты (каждый подставит свою историю). Можно также добавить новый звонок с произвольного номера. Для этого добавим в таблицу новую строку:
Добавляем новый звонок
Заглядываем в историю (см. скриншот «Добавляем новый звонок») и видим, что нам только что звонили. Можем смело показывать звонок заинтересованным и ссылаться на срочный вызов, чтобы покинуть текущее место. Для того чтобы номер вписывался в текущий вид (остальные незнакомые номера показаны с пробелами и дефисами), нужно заполнять больше ячеек и увязывать эту базу с dialer.db.
К слову сказать, после некоторых экспериментов с добавлением строк, из диалера пропали все сведения, включая историю звонков и избранные контакты, а сама база стала весить в четыре раза меньше. Поэтому пришлось восстанавливать сохраненную копию базы.
История звонков до и после изменений в contacts2.db
msgstore.db
База сообщений WhatsApp, которая находится по пути /data/data/com.whatsapp/databases. В таблице chat_list содержатся ветки разговоров, по аналогии с таблицей threads в СМС-переписке. Сами сообщения находятся в таблице messages в столбце data. Отдельно контакты приложения лежат в базе wa.db. Попробуем поменять сообщение, которое видно на скриншоте «Редактируем сообщения WhatsApp» слева. Для этого в таблице messages найдем нужное нам сообщение и выполним следующую SQL-команду:
Результат показан на скриншоте «Редактируем сообщения WhatsApp» справа. Как видно, сообщения отлично редактируются.
Редактируем сообщения WhatsApp
settings.db
Расположена в /data/data/com.android.providers.settings/databases и хранит все настройки системы, включая некоторые недоступные пользователю из меню. Для разных моделей устройств содержит разные настройки. Забрать данные в этой базе легко, а вот менять настройки напрямую крайне не рекомендуется. Это может вызвать как неработающие переключатели, так и бутлуп. Содержит три основные таблицы: global, system и secure. Остановлюсь на самых интересных записях.
- adb_enabled — включение отладки по USB.
- airplane_mode_radios — перечисленные через запятую модули, которые подлежат выключению в режиме самолета.
- always_finish_activities — при выставленной единице агрессивно завершает процессы (activities), как только они перестают быть нужны.
- usb_mass_storage_enabled — возможность подключения USB-накопителя.
- wifi_sleep_policy — политика поведения Wi-Fi при засыпании (отключение или перевод в спящий режим).
- wifi_watchdog_on — включает/выключает сервис Wi-Fi Watchdog (автоматический выбор точки доступа с выходом в интернет).
- bluetooth_discoverability_timeout — длительность обнаружения устройства по Bluetooth в секундах.
- end_button_behavior — поведение физической кнопки «Закончить разговор», не во время разговора.
- font_scale — масштаб шрифта.
- setup_wizard_has_run — был или нет запущен менеджер первоначальной настройки после прошивки/сброса до заводских настроек.
- android_id — уникальный идентификатор устройства, 64-битное число (hex-строка), которая рандомно генерируется при первичной настройке и остается постоянной на протяжении всего жизненного цикла устройства.
- location_mode — режим определения местоположения пользователя.
- skip_first_use_hints — если значение равно 1, Android запустит режим ознакомления пользователя с функциями при первом запуске приложения.
- status_bar_show_battery_percent — отображение процента заряда батареи.
- audio_safe_volume_state — уровень безопасной громкости в наушниках.
- bugreport_in_power_menu — кнопка отправки баг-репорта в меню выключения.
Полный список значений зависит от версии прошивки устройства (версии API) и доступен на developer.android.com. Для изменения значений рекомендуется использовать утилиты settings и content. На примере последней, включение отображения процентов у значка батареи из консоли будет выглядеть так (буквы s и i здесь означают тип значения — строка или число соответственно):
Причем сработает эта команда даже без наличия прав суперпользователя на устройстве c прошивкой 4.4+. Именно это делает программа из маркета «Батарея с процентом». Для работы с данной базой необходимо точно знать структуру таблиц, так как, кроме вариантов 1 — включено, 0 — выключено, могут встречаться другие цифры и наборы букв и параметров через запятую.
Полезной для нас база также может быть, если необходимо сбросить пин-код/пароль для разблокирования экрана. Подробнее можно найти в многочисленных инструкциях в инете по запросам lockscreen.password_type и lock_pattern_autolock. В зависимости от версии прошивки пароль может находиться в /data/system/locksettings.db.
Выводы
Как видно на примерах выше, многие базы «уязвимы» и позволяют с легкостью доставать и менять данные. Пин-код, графический ключ, разблокировка по лицу, сканер отпечатков пальцев — все это недостаточный способ сохранения конфиденциальных данных. Знающий и заинтересованный человек, имея провод, комп и нужную прогу, за небольшой промежуток времени может легко увести всю интересующую его информацию. С момента подключения устройства к компу/ноуту процесс, включающий в себя разблокировку загрузчика (для многих устройств с прошивкой ниже 5.0 можно это сделать без потери данных), установку кастомного рекавери, перезагрузку в рекавери, поиск и вытягивание всех баз с помощью команды adb pull, установку стокового рекавери и блокировку загрузчика, может занять минут 15–20. Да и дав права суперпользователя с виду безобидному приложению, можно никогда не узнать, что еще оно делает в фоне, кроме заявленных функций.
Блок-врезка: Остальные базы
Приведу еще несколько баз, заслуживающих внимания. Их можно использовать, например, в Таскере, доставая информацию SQLite-запросами.
Источник