January 29, 2020

📱 Освободи свой Android

Некоторое время назад на Хабре вышла статья замечательной девушки fur_habr о проблемах безопасности, приватности и конфиденциальности мобильных коммуникаций и о путях решения этих проблем на платформе Android.

В момент выхода этой статьи я как-то не обратил на неё внимания — тема смартфонов и Андроида мне вообще не очень интересна. Потом, уже через несколько месяцев, я вновь случайно наткнулся на эту статью, вчитался, и проникся идеями, содержащимися в ней. Действительно, почему бы не стать хозяином своему собственному смартфону?

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

Предупреждение 1

В этой статье рассматривается только техническая часть проблемы и не затрагиваются концептуальные, идеологические и прочие её аспекты. Нужно вам это или нет — решать только вам самим.

Предупреждение 2

Вся информация в статье представлена исключительно в образовательных целях и если вы что-то делаете, то делаете это исключительно на свой страх и риск. Автор публикации не несёт ответственности за любые последствия ваших необдуманных действий.

Начинаем. Итак, мы прочитали статью, а затем вторую статью, прониклись идеями, заложенными в них, и готовы провести практический эксперимент по освобождению своего Андроида (на самом деле эксперимент по освобождению себя от Андроида). С чего же начать?

Кстати, вы заметили, что суть Андроида заложена в самом его названии — это Andro ID, то есть ваш универсальный (в смысле всех аспектов вашей жизни) идентификатор.

Начнём мы с выбора аппарата для экспериментов. Проблема в том, что LineageOS поддерживает очень небольшое количество устройств, причём в основном устаревших. В своей статье fur_habr рекомендует остановиться на Xiaomi Redmi 4(X), Xiaomi Redmi Note 4 или Xiaomi Mi A1. При попытке поинтересоваться у продавцов наличием в продаже этих моделей, я получил в ответ круглые глаза, заверения, что таких древностей у них нет. Интернет только подтвердил диагноз — купить новый аппарат этих моделей практически невозможно, есть какие-то сомнительные предложения (1-2 экземпляра) непонятного происхождения и не факт, что подходящих для наших частот связи. В общем, это не наш путь.

Хорошо, эти аппараты нам не подходят, можно ли найти в списке поддерживаемых LineageOS устройств что-то подходящее? После тщательного просмотра всего списка устройств я не нашёл ни одного (нового, не б/у) смартфона, который можно было бы просто купить в обычном магазине или хотя бы заказать через интернет с быстрой доставкой.

Всё, на этом эксперимент можно было завершать. Как говорится, хороша Маша, да не наша. Но меня уже охватил спортивный азарт и отказываться от Маши не хотелось, поэтому я ещё раз прошерстил список и где-то на четвёртой или пятой итерации обратил внимание на модель Motorola G7. По итогам, это практически единственный актуальный, доступный и подходящий нам аппарат из всего списка LineageOS.

Motorola G7

На тот момент мне было всё равно Motorola это или Rockola (смайл), аппарат выбирался для эксперимента и исключительно по двум критериям — он должен быть новым (зачем нам старый?), не б/у, и присутствовать в списке поддерживаемых LineageOS.

Но в случае с Motorola G7 звёзды прямо сошлись: это свежий (2019 года) аппарат, официально поставляется в Россию, поддерживается LineageOS и, как потом оказалось, он ещё и весьма приличный смартфон и при этом относительно недорого стоит.

Пара слов о цене. Motorola G7 стартовал в апреле 2019 года по цене 20 тыс. рублей, на момент написания статьи его можно свободно купить за 11 тыс. рублей, в интернете есть сообщения, что кому-то удавалось купить его по акции за 9, 8, и даже 6 тыс. рублей (что просто даром).

При этом он имеет на борту 4 ГБ оперативной и 64 ГБ встроенной памяти, NFC, отличный 2270х1080 дисплей 6.2", лоток на две SIM карты плюс microSD, 2 камеры, сканер отпечатка пальца, USB Type-C, быструю зарядку, 9-й, т. н. «чистый» Android и много чего ещё, см. официальную страницу производителя. Как говорил один известный персонаж, да это просто праздник какой-то!

Немного о модельном ряде. В линейке Moto G7 присутствуют четыре модели: G7 Play, G7 Power, просто G7 без индекса и G7 Plus. Из всех четырёх моделей нашего внимания достойны только две последние, причём G7 Plus более интересный вариант, практически за те же деньги, что и G7. Но в нашем случае критерием выбора является присутствие смартфона в списке поддерживаемых LineageOS, а это только один вариант — Motorola G7.

Покупка и первые впечатления

Ну что ж, цена вопроса 11 тыс. рублей, не сказать что очень мало, но чего не сделаешь из любви к науке. Сказано — сделано, покупаем смартфон, распечатываем коробку — всё классно, тонкий современный смартфон, выглядит отлично, работает так, как ему и положено, никаких замечаний у меня к нему нет.

На борту так называемый «практически чистый» 9-й Android с некоторыми фирменными добавлениями и «фишками» от Моторолы. Не знаю, что подразумевали авторы термина «чистый Андроид», но по сути это зонд, принадлежащий компаниям производителям железа и софта (но никак не вам, по крайней мере до тех пор, пока у вас не будет root прав на устройстве), который отправляет каждый ваш чих на их сервера, а через трекеры, встроенные в приложения, и на десятки серверов по всему миру неустановленному кругу третьих лиц (смотри подробности в статьях fur_habr).

Да, картина, прямо скажем, удручающая. Можно ли как-то исправить это положение? Попробуем разобраться и переходим к хирургическим методам. Пациент готов. Ассистент, скальпель!

Шаг 1. Разблокировка загрузчика

Смартфон поставляется с заблокированным загрузчиком. Это означает, что вы не сможете установить на него стороннюю прошивку. Для того, чтобы установить на него LineageOS, вам нужно сначала разблокировать загрузчик.

Компания Motorola имеет специальную страницу

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

Примечание: здесь и далее речь будет идти о Windows 7 64-bit, если у вас другая операционная система, то действия могут немного отличаться.

Прежде всего, у вас на компьютере должны быть установлены драйвера Motorola для связи через USB порт. Также вам нужно скачать и установить Android platform-tools с adb и fastboot. Если вы будете работать не из директории platform-tools, то вам нужно добавить путь к ней в настройках Windows (Компьютер — Свойства — Дополнительные параметры системы — Переменные среды — Path).

Затем нужно активировать показ меню разработчика на телефоне (Настройки — О телефоне — Номер сборки) и несколько раз подряд тапнуть по этому пункту, пока не появится надпись, что вы стали разработчиком.

В меню разработчика (Настройки — Система — Для разработчиков) активируем «Отладку по USB», а в меню Настройки — Система — Для разработчиков — Отладка Android активируем «Android Debug Bridge (ADB)». После этого подключаем смартфон к компьютеру, запускаем окно с командной строкой (cmd) и вводим первую команду:

>adb devices

Если всё сделано правильно, то в ответ система сообщит о найденном устройстве:

List of devices attached
AH418JDANZ      device

Затем вводим команду перезагрузки смартфона в режим бутлоадера:

>adb reboot bootloader

Далее проверяем видит ли компьютер подсоединённое устройство в этом режиме:

>fastboot devices
AH418JDANZ      fastboot

Если всё нормально, то вводим команду на запрос кода для разблокировки:

>fastboot oem get_unlock_data

В ответ смартфон должен выдать что-то вроде этого:

(bootloader) 93A1958E29857298#
(bootloader) 405685468A0468F59638571E31040158805403469#
(bootloader) 7035F204E85348570698340A620968E34029663206#
(bootloader) 54269720984560184604890000000000
OKAY [  0.020s]
Finished. Total time: 0.022s

Далее просто склеиваем эту последовательность цифр в одну строку (надписи bootloader, скобки и пробелы удаляем, знаки # оставляем) и получается такая строка:

93A1958E29857298#405685468A0468F59638571E31040158805403469#7035F204E85348570698340A620968E34029663206#54269720984560184604890000000000

На своей странице по разблокировке Motorola много раз предупреждает о последствиях разблокировки загрузчика (самое невинное из которых это потеря гарантии) — внимательно прочитайте эти предупреждения и ещё раз подумайте готовы ли вы взять на себя ответственность за возможные последствия ваших действий.

Если готовы, то смело вводим полученную последовательность и нажимаем кнопку отправки. В моём случае код разблокировки пришёл на почту практически сразу. Всё, теперь мы получили ключ от замка и всё зависит только от нас.

Фрагмент ответа из письма от сервиса разблокировки Motorola:

Bootloader Unlock<#>
Here is the unique code to unlock the bootloader of your Motorola phone.
Unlock Code: 42UKUKYULUYDTRETMDFG

Далее нам нужно в меню разработчика включить функцию разрешения разблокировки загрузчика «Allow OEM Unlock» и ещё раз перезагрузить телефон. Затем подключаемся к смартфону так, как это было описано выше, и вводим команду для разблокировки загрузчика:

>fastboot oem unlock 42UKUKYULUYDTRETMDFG

Получаем ответ в котором система предупреждает, что все ваши данные будут стёрты, соответственно, если у вас есть ценная информация, то вы должны прервать процесс и скопировать её в безопасное место (а лучше сделать это заранее):

(bootloader) WARNING: This command erases all user data.
(bootloader) Please re-run this command to continue.
OKAY [ 0.004s]
Finished. Total time: 0.006s

И ещё раз вводим ту же команду:

>fastboot oem unlock 42UKUKYULUYDTRETMDFG

И вот, наконец, сообщение об успешной разблокировке загрузчика:

(bootloader) Bootloader is unlocked! Rebooting phone
OKAY [ 0.680s]
Finished. Total time: 0.681s

На этом первый этап нашего эксперимента можно считать завершённым, перезагружаем смартфон и получаем сообщение о том, что загрузчик разблокирован и безопасность нашего телефона находится под угрозой (ага). Сообщение держится на экране 5 секунд и затем смартфон загружается обычным образом.

Шаг 2. Установка TWRP

Переходим ко второй части марлезонского балета. Для того, чтобы установить LineageOS на смартфон, сначала нужно установить т. н. «кастом рекавери» (custom recovery) для проведения операций по очистке разделов смартфона, загрузки файлов, самой прошивки LineageOS и прочих операций. С TWRP тоже не всё так просто. by @it_ha. Существует официальный сайт на котором присутствуют «официальные» сборки TWRP. Рекомендуется скачивать файлы именно с официального сайта, а не со сторонних ресурсов. Также не рекомендуется пользоваться сторонними сборками, поскольку они могут содержать в себе различные закладки.

В случае с Motorola G7 (о чудо!) существует свежее официальное TWRP, которое специально рассчитано на эту модель и устанавливается на телефон на раз-два, без каких-либо проблем. Значимость этого факта можно оценить, почитав форумы и стенания владельцев многих современных телефонов, например, популярного Samsung Galaxy A10 и всей линейки A20, A30, A40, A50… Этих моделей нет в официальном списке поддерживаемых устройств на сайте TWRP.

Переходим на страницу нашего (воистину) замечательного Motorola G7 и скачиваем последнюю на данный момент сборку TWRP twrp-3.3.1-2-river.img. В официальной инструкции по установке LineageOS рекомендуется на компьютерах с Windows дополнительно выполнить команду

fastboot set_active a

и принудительно сделать активным слот A. По их описанию это связано с ошибкой в реализации fastboot в Windows. И вообще, прежде чем что-то делать, настоятельно рекомендую внимательно ознакомиться с официальной инструкцией на этой странице — там всё написано правильно и очень подробно. Правда на английском, но настоящего любителя мобильных коммуникаций это вряд ли остановит (здесь опять запрещённый смайл).

Ответ Motorola G7 на эту команду:

Setting current slot to 'a'
(bootloader) Slot already set active
OKAY [  0.001s]
Finished. Total time: 0.004s

Всё, на этом шутки закончились и любое неправильное действие может привести к окирпичиванию вашего драгоценного телефона. Далее действуем очень внимательно и аккуратно.

Вводим команду записи TWRP на устройство:

>fastboot flash boot_a twrp-3.3.1-2-river.img

Система сообщает что файл не подписан, но процесс завершён успешно.

Sending 'boot_a' (27096 KB) 
OKAY [ 0.725s]
Writing 'boot_a'
(bootloader) Image not signed or corrupt
OKAY [ 0.145s]
Finished. Total time: 0.878s

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

Шаг 3. Установка LineageOS

Осталось совсем немного: сделать несколько настроек в TWRP и загрузить на телефон пару файлов, один из которых и есть прошивка LineageOS. Сначала скачиваем файлы:

copy-partitions.zip

На странице официальной инструкции по инсталляции LineageOS на Motorola G7 говорится о возможных проблемах с A/B слотами на некоторых устройствах и рекомендуется перед инсталляцией прошивки LineageOS установить файл copy-partitions.zip. Скачиваем файл и проверяем его целостность с помощью MD5.

Как проверить MD5 в Windows: запускаем командой cmd окно терминала и вводим команду certutil -hashfile copy-partitions.zip MD5. Затем сравниваем полученные значения с кодом на странице загрузки.

LineageOS

Затем с официальной страницы загрузки LineageOS скачиваем файл прошивки последней версии lineage-16.0-20200109-nightly-river-signed.zip. И проверяем значение хеша SHA-256.

Как проверить хеш SHA-256 в Windows: запускаем командой cmd окно терминала и вводим команду certutil -hashfile lineage-16.0-20200108-nightly-river-signed.zip SHA256. Затем сравниваем полученные значения с кодом на странице загрузки.

AddonSU

Если вы хотите получить root права в вашей будущей системе, то можете скачать ещё AddonSU. Из списка нужно выбрать вариант arm64 addonsu-16.0-arm64-signed.zip, скачать его и затем проверить SHA-256 хеш.

Google apps

Ещё вы можете скачать для установки Google apps, но, как справедливо заметила fur_habr в своей статье, тогда вся затея с LineageOS теряет всякий смысл. Поэтому Google apps мы скачивать не будем, а за подробностями я вас отсылаю к статье и комментариям к ней.

Операции в TWRP

Запускаем прописанное на устройство TWRP:

fastboot boot twrp-3.3.1-2-river.img

Запускается интерфейс нашего «кастом рекавери» и мы можем проводить заключительные действия по инсталляции LineageOS на наш смартфон Motorola G7.

В интерфейсе TWRP выбираем кнопку «Advanced» и далее «ADB Sideload», а на компьютере в командной строке набираем:

>adb sideload copy-partitions.zip

После успешной загрузки файла система ответит:

Total xfer: 1.00x

Затем в интерфейсе TWRP выбираем кнопку «Wipe» и далее «Format Data». После завершения процесса возвращаемся в предыдущее меню. Нажимаем на кнопку «Advanced Wipe» и выбираем «System» и «Cache».

Возвращаемся в главное меню и снова выбираем кнопку «Advanced» и далее «ADB Sideload», а на компьютере в командной вводим строке:

>adb sideload lineage-16.0-20200108-nightly-river-signed.zip

и загружаем прошивку LineageOS в смартфон. Ответ при успешном выполнении операции:

Total xfer: 1.00x

Если мы хотим установить root на устройство, то далее вводим команду:

adb reboot sideload

А затем:

>adb sideload addonsu-16.0-arm64-signed.zip

Ответ:

Total xfer: 2.08x

Вот теперь точно всё. Перезагружаем смартфон и нас встречает маленькое чудо — операционная система LineageOS.

Root

Если вы установили AddonSU, то в меню разработчика появится соответствующий пункт, в котором вы сможете выбрать режимы работы root на вашем устройстве.

LineageOS

Да… в упорстве нам не откажешь… И вот, после всех этих титанических усилий мы всё-таки добились своего — установили LineageOS на Motorola G7. И что же мы имеем в итоге?

Это всё тот же 9-й Android и внешне эта система мало чем отличается от того, что было на родной прошивке Motorola G7. Кнопки примерно на тех же местах, функции примерно те же, в общем после смены операционной системы я не испытывал никаких затруднений или неудобств в работе со смартфоном.

Что мы потеряли?

Поскольку мы не стали устанавливать Google сервисы, то мы потеряли все программы, которые зависят от этих сервисов, а также мы лишились уведомлений, которые работают через них (это касается не всех приложений, но многих). В оригинальной статье (https://habr.com/ru/post/465945/) подробно рассматривается этот вопрос и даются рекомендации по установке альтернативных программ для поддержки Google сервисов.

Мы потеряли также банковские приложения и оплату через NFC (не всегда и не во всех случаях, за подробностями снова отсылаю к оригинальной статье).

Что мы приобрели?

Мы просто вернули себе право управления своим собственным устройством и избавились ото всех (наивно думать, что ото всех, но по крайней мере от большинства) шпионских модулей. Теперь мы сами можем решать что и как должен делать наш смартфон (он ведь наш, верно?).

Немного технических подробностей. То, что мы имеем сейчас в лице LineageOS уже можно с натяжкой назвать «чистым Андроидом». Это хорошо заметно по логу фаервола. Если в родной, якобы «чистой» прошивке Motorola G7 фаервол просто раскалялся от паразитной активности приложений и сервисов Google и Motorola и десятков трекеров в приложениях, то на LineageOS внутренняя жизнь системы приобрела вменяемый характер.

Система больше не напоминает проходной двор где шарятся все кому не лень, начиная от китайских девелоперов и заканчивая индусскими программистами и маркетологами со всего мира (попутно скачивая ваши приватные данные и протоколируя каждый ваш тап по экрану). Лог фаервола почти пустой и найти в нём можно только те приложения и только по тем адресам и портам которые нужны непосредственно для их работы и которые одобрены мной, как хозяином (!) устройства.

Как это сказалось на расходе батареи и объёме платного трафика я думаю пояснять не нужно. Андроид просто перестал заниматься огромным количеством посторонних дел и растрачивать на это свои ресурсы (перестал обслуживать чужие, прямо противоречащие вашим, интересы).

Есть ли жизнь на LineageOS?

После установки LineageOS и посещения F-Droid я закрыл 95% своих потребностей в программах на Android. Есть набор стандартных «Simple» приложений (часы, калькулятор, блокнот, календарь, файловый менеджер и т. д.), есть проигрыватели аудио и видео (VLC), есть карты, читалки, есть отличный почтовый клиент (K-9), в репозитории F-Droid есть более 2000 приложений на любой вкус, есть даже версия Telegram, работающая без Google сервисов для поклонников этого мессенджера.

Для тех редких случаев когда нужная программа есть только в Google Play, можно воспользоваться альтернативными клиентами Yalp store или Aurora Store.

Телефон звонит, СМС-ки ходят, почта работает, интернет в полном объёме, доступны все сервисы при авторизации через браузер, есть свободное облако, при желании можно поставить Telegram и т. д. и т. п. В общем, на мой взгляд, LineageOS это вариант не для всех и не всегда, но во многих случаях это просто отличное решение.

Выводы

Очевидно, что для большинства «нормальных людей» которым нужно «передать файл по Ватсапу», «погонять птиц», посвайпить бесконечные ленты «друзей», установить кешбек-приложения от Спортмастера и Алиэкспресс и расплатиться на платной трассе через NFC — этот вариант не подходит.

Сама идея чистого и подконтрольного вам смартфона входит в противоречие с логикой и практикой жизни в современном обществе, где каждый продавец товаров или услуг имеет своё приложение, которое занимается сливом ваших данных, отслеживанием вашей активности и построением вашего цифрового профиля.

Что со всем этим делать предлагаю читателям решать самостоятельно.

Послесловие

В общем, я доволен проведённым экспериментом — за это время я узнал много интересного и, как гик, получил огромное удовольствие от тесного общения с классным аппаратом Motorola G7. В результате я получил «чистый» телефон, который просто приятно держать в руках, ощущая себя его хозяином и не опасаясь, что в этот момент он что-то куда-то сливает или делает фотографии.

Пока Motorola G7 остаётся полем для экспериментов и «вторым» телефоном, наряду с моим старым аппаратом, набитым всякой «шнягой» типа Google сервисов и Ватсапа и после использования которого хочется перекреститься и помыть руки (смайл).

И напоследок пара фотографий свободного Motorola G7 с установленной на нём LineageOS.

Автор статьи: smart_alex

by @it_ha