Helpix в соцсетях:
10

Nokia 8110 4G - Matrix: Revolutions

Everything that has a beginning, has an end.
The Oracle, "Matrix: Revolutions"

Приветствую читателей Helpix и любителей жанра сотового киберпанка. Настало наконец время поставить точку в той истории, которая уж почти год как настолько динамично развивается, что с каждым откладыванием этого рассказа "на потом" приходилось впоследствии добавлять какие-то новые подробности. Ибо ситуация с тем движением, в котором мне довелось не только участвовать, но и возглавлять на некоторых его стадиях, напомнила мне вступление к песне Bodyshock - Riot and Rise. Там было что-то наподобие "сначала нас было мало и нас все считали маргинальными бунтарями, но затем к нам присоединялись всё больше и больше людей, и наше движение перестали недооценивать". Но для начала - краткий экскурс в историю.

С чего всё началось

That's how it is with people - nobody cares how it works as long as it works.
Councillor Hamann, "Matrix: Reloaded"

А началось всё именно отсюда, с Хэлпикса, с моего прошлого отзыва. На 4PDA весть о том, что взлом бананофона кто-то довёл до логического конца, вызвала некислый такой резонанс (читать тот тред, впрочем, не советую во избежание нарушения целостности мозга). Посыпались различные патчи, исправления локализации и т.д., но с портированием приложений оказался небольшой затык, ибо у желающих не было понимания, а у понимающих не было возможности. Поэтому вскоре была создана гугл-группа рассылки BananaHackers, она же comp.mobile.nokia.8110, и брошен клич на Reddit и ещё не помню, каких ресурсах. Группа наполнялась, а мне пришлось как раз отойти ненадолго от этих дел. Ну как ненадолго - на полгода примерно, да.

Но когда вернулся и стал использовать 8110 №2... Друзья мои, я обомлел. Более 160 портированных приложений, из которых около 60 вполне себе юзабельны. Два альтернативных магазина (JBStore и KaiUS). Более 100 участников (если считать по подписчикам нашей группы + по Discord-каналу группы из Реддита), и это только на тот момент. Также была найдена более стабильная альтернатива WebIDE. Ну а самое интересное - к нам в качестве консультанта присоединился один из разработчиков Firefox OS в прошлом и архитекторов KaiOS в настоящем. Так что то, что движуха не затихла, а только продолжает набирать обороты, стало очевидным.

Завязка

Ballard: You're asking for one of us to disobey a direct order.
Morpheus: That's right, I am. But we all well know that the reason that most of us are here is because of our affinity for disobedience.
"Matrix: Reloaded"

Разумеется, с такими масштабами уже можно было надеяться на то, что в HMD нас услышат и как-то наконец отреагируют на просьбы пользователей. И они услышали и отреагировали... сменой ключей подписи обновлений, начиная с 13-й прошивки. Вместо диалога мы встретили яростное сопротивление неизбежному. И WhatsApp в официальном магазине, который медленно, но уверенно наполняется, мы так и не дождались на тот момент (забегая наперёд - ждать в итоге пришлось до самого начала мая 2019 года).

Потому, немного офигев от такого расклада, объединённые силы Реддита и Bananahackers при помощи добровольцев из Индии раскопали и представили публике залоченный под индусов же дистрибутив WhatsApp, портирование которого под 8110 с прошивкой версии 13 (джейлбрейк под которую остался сугубо в "мягкой" форме, см. ближе к концу рассказа) мне удалось довести до конца 28 декабря 2018 года, а на следующий день превратить его как в региональные (блоками по 11 стран), так и в полностью глобальную версию, так что мы это сделали раньше любых официалов. Повторную модификацию пришлось проводить ещё и 30 января уже сего года, а также ещё несколько раз опосля, когда на серверах меняли протокол. Но о январских событиях речь пойдёт позже.

Однако и эти действия, несмотря на огласку от Малайзии до Канады, были встречены полным игнором со стороны производителя. Тогда мы под самый-самый Новый Год решили написать открытое письмо турецкому султану компании HMD Global. Оно было помещено на официальный форум Nokia и растиражировано по другим ресурсам (имеется даже копия на вьетнамском языке!), а ссылки на него были отправлены непосредственно Сарвикасу и по официальным контактам компании.

Ну а чтобы окончательно показать, что мы не лыком шиты, параллельно с коллективным сбором подписей для письма мною был инициирован процесс портирования под KaiOS заброшенного эмулятора J2ME под старые версии Firefox OS, известного как JS2ME или JayMe. Как только мне удалось допилить оный до версии, позволяющей выбрать жарник и запустить хоть что-нибудь (Asteroids.jar и g2048.jar - одни из первых вещей, которые удалось запустить), тут же был создан репозиторий и тоже аккурат под Новый Год было публично объявлено о начале процесса разработки. Поскольку "благодаря" крайне странной политике официалов скорость появления новых приложений, которые могут дойти до среднестатистического нуба, крайне мала, то народ хочет иметь возможность хотя бы использовать то, что уже есть, хоть и разработано оно было чёрт знает когда. Дендяшные ведь и геймбоевские игры от своей давности хуже не становятся...

Кстати, насчёт геймбоевских игр. Их оказалось почему-то сэмулировать легче NES-овских. И если все джаваскриптовские NES-движки под 8110 издевательски тормозили, то первый попавшийся эмулятор Геймбоя удалось удачно портировать за несколько часов (ищите анонс в группе по ключевому слову KaiBoy). Проект развивается, а под современные реалии, в общем-то, только звуковой движок адаптировать осталось. А то всё-таки подлагивает немного.

Как бы там ни было, все рекавери-патчи внезапно остались не у дел. Джейлбрейк стал существовать только в "мягкой" своей форме:

1. Набираем *#*#debug#*#* (*#*#33284#*#*).
2. Качаем архив с OmniSD.
3. Подключаем WebIDE (по инструкции отсюда) или xpcshell (по инструкции отсюда).
4. Ставим пакет с OmniSD через одну из этих тулзов.
5. Запускаем OmniSD и жмём решётку, чтобы запустить ресет в привилегированный режим. Всем пользовательским данным кирдык, разумеется, кроме находящихся в карте памяти. Подтверждаем выбор.
6. Дожидаемся ресета. Снова набираем *#*#debug#*#* и ставим OmniSD.
7. Всё, можно ставить сторонние пакеты! Кидаем в папку /apps в корне карты памяти. Также в настройках появляются меню разработчика.

Джейлбрейк такого рода откатывается обычным ресетом из меню настроек. И это единственное, что работает на 13-й версии.

Остальные обнаруженные коды были также выпилены. Остались вот только *#06#, *#0000# и *#*#debug#*#*, ну ещё ###adbg# для включения квалкоммовского диагностического порта и *#*#0lri#*#* для включения LogManager. Казалось бы - ну и фиг с ними, всё равно всё, что можно было предпринять, уже предпринято...

...Но оказалось, что всё это было только началом.

Кульминация

Neo: I just haven't been able to sleep much.
Councillor Hamann: It's a good sign.
Neo: Of what?
Councillor Hamann: That you are, in fact, still human.
"Matrix: Reloaded"

7-8 января 2019 года можно смело считать переломным и, не побоюсь этого слова, историческим моментом для всего сообщества активных пользователей 8110.

7 января произошло рождественское боевое крещение "проекта Batty": первый успешный международный SIP-звонок (Украина - Италия) с 8110 на 8110. Пикантности и значимости этому событию добавляет тот факт, что VoIP-приложения на платформе KaiOS пока официально запрещены, так что даже WhatsApp там без голосовых вызовов, только с голосовыми сообщениями. Также 7 января нокиевские слоупоки наконец-то одобрили модерацию нашего письма на форуме. Трижды. Хотя дубликаты поста удалили довольно быстро. Но с тем, что произошло 8 января, вообще ничто до этого совершенно ни в какое сравнение не идёт.

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

Откатившись для чистоты эксперимента на полностью стоковую 13-ю версию (без привилегированного режима и без OmniSD) и создав элементарную тестовую веб-страницу, я зашёл на неё с браузера телефона. Команды работали. Более того, после кода *#*#debug#*#* рутовую консоль тоже можно получить до перезагрузки путём запуска через эти объекты команды busybox telnetd -l /system/bin/sh -b 127.0.0.1 и последующего запуска на ПК команды adb shell busybox telnet localhost. Да, 8 числа был получен полный рут на якобы невзламываемой 13-й прошивке в заводском состоянии без внесения каких-либо изменений в системные разделы. Стоит ли говорить, что после этого у меня снова началась бессонница...

О своей находке я сообщил ровно одному человеку (у которого тоже начались бессонница и культурный шок), и мы решили до поры до времени не разглашать детали уязвимости. Это как найти заброшенный бункер с двумя тоннами плутония - его можно использовать во благо (для реакторов), а можно и во зло. Здесь точно та же ситуация: мы эту уязвимость можем использовать для слива полного образа всех разделов системы, разблокирования загрузчика и последующего создания куда более защищённого кастома (в том числе и рекавери), но если детали этого бага станут известны публике, то наверняка найдутся злоумышленники, которые смогут легко внедрить разную вирусню или разрушить ОС до незагружаемого состояния. Поэтому я быстро и решительно отсёк все угрызения совести касательно тех юзеров, которые просили нас найти джейлбрейк/рут, выполняемый без помощи ПК: ребята, он есть, но лучше вам его не знать для вашей же безопасности.

И в этот момент стало ясно, что на какие-либо договорённости надеяться не следует. Компромисса и дружбы не получится. Ни с теми, ни с другими. HMD спрятали голову в песок, а KaiOS Tech представляет Фабрис, который со своей манией величия не увидел серьёзнейшего прокола в защите, да ещё и на HMD "стрелки перевёл", мол, "в изначальной кодовой базе этого модуля вообще не было, это один из подрядчиков HMD накосячил". Более того, даже если этот баг починили бы, остальные участники группы обнаружили более мелкие, но не менее характерные косяки вроде передачи пары ваших IMEI+IMSI в строке GET-параметров при запросе на сервер обновлений. Короче, на конфиденциальность наших данных KaiOS Tech на пару с HMD Global просто положили, что бы они там ни заявляли. Так что в этот день мы окончательно постановили: кастому быть.

Развязка

Hope. It is the quintessential human delusion, simultaneously the source of your greatest strength and your greatest weakness.
The Architect, "Matrix: Reloaded"

Дальнейшее издевательство я уже проводил над 8110 №1. Если что, её не жалко. В первую очередь поменял один бит в разделе devinfo. Работает (правда, определить, что именно изменилось в поведении, не представилось возможным). Затем залил рекавери от Micromax Bharat 1. ADB работает, но белый экран и система не грузится. Так что в рамках того же ADB вернул рекавери взад и стал работать над стоковым. И в течение двух недель выкристаллизовалась не только модификация рекавери, которая давала рутовый доступ и установку пакетов из-под тестовых ключей, но и остальная базовая система со следующими ключевыми моментами:

  • выпилены все игры, а также гугловские и кайосные фирменные приложения, включая магазин и Google Assistant;
  • выпилена штатная обновлялка и по максимуму убраны все связанные с обновлениями вещи;
  • запилены файловый менеджер и интегрированный с ним установщик пакетов (надо же что-нибудь вместо KaiStore!);
  • запилена возможность сворачивать приложения (телефонии и браузера пока не касается - они перехватывают всё) нажатием кнопки включения при полностью открытой слайд-крышке и делать скриншоты при приоткрытой (разумеется, эта логика работает только тогда, когда экран включен);
  • режим запуска системы по умолчанию переключен в девелоперский;
  • поисковик в браузере по умолчанию переключен с Google на DuckDuckGo;
  • ADB-доступ через *#*#debug#*#* и меню разработчика сделан рутовым;
  • устранены лишние экраны при первом запуске системы, а также дурацкий HMD Feedback;
  • изменены загрузочные заставки;
  • добавлена блокировка рекламы на системном уровне по обновляемым при каждой сборке спискам;
  • ну и, разумеется, исправлен вышеуказанный прокол в безопасности.

    Полученный коктейль был назван GerdaOS (ибо миссией проекта является освободить сердце Кая от засевшего в нём зла) и представлен публике в виде альфа-версии 27 января 2019 года. По состоянию на эту дату было реализовано всё вышеперечисленное и кое-что ещё по мелочи. Также был создан соответствующий сайт, где можно и установочные пакеты скачать, и инструкции по установке почитать. На данный момент находится в открытой разработке, присоединиться может любой желающий.

    А в последующих альфа-сборках были добавлены такие "незначительные" вещи, как доступ ко скрытому в системе переключателю окон (зажатие кнопки включения при открытой слайд-крышке из рабочего стола), защита от стелс-SMS (на данный момент осталось лишь сделать уведомление пользователя о попытках отследить статус телефона через оные), эмодзи, оверклок-патч (многие отмечают улучшенное быстродействие), встроенный эмулятор платформы CHIP-8 (в качестве пасхалки) и... инструмент для изменения IMEI обоих слотов и TTL при раздаче трафика.

    Командировка моя немного притормозила процесс, однако позволила реализовать и потестировать ещё одну существенную штукенцию - разблокировку LTE-диапазонов. Да, поскольку манипуляции над EFS уже стали возможны в автономном режиме, ничто не мешало включить все возможные биты в её базовых полях (NV items) по номерам 6828 и 6829. Оставалось лишь проверить, умеет ли передатчик работать на этих частотах физически. И вот уже 16 мая мне такая возможность представилась. Умеет. Видимо, Qualcomm выгоднее клепать универсальные радиомодули и огораживать их программно, чем делать разную схемотехнику в зависимости от региона. Как бы там ни было, настоящий worldphone получился и из 8110 4G.

    Дальнейшие планы развития включают в себя как минимум VPN-клиент и возможность смены системного браузерного агента, дабы можно было выдавать себя не только за Firefox и вообще KaiOS. Ну и многое другое в том же направлении, равно как и допиливание SIP-клиента. Не говоря уж о возможном переходе на новую базовую версию KaiOS, соответствующую прошивке версии 16 от HMD. Кстати, именно в этой версии (а для азиатов - в 15-й) уязвимость в браузере была оными устранена. Это не значит, что рут исчез, но стоковая система стала куда безопаснее - давление сообщества наконец-то дало свои плоды. И даже к нам сей аппарат снова стали завозить, чего лично я никак не ожидал.

    "Но зачем?", или Вместо заключения

    Agent Smith: Why, Mr. Anderson? Why, why, why? Why do you do it? Why get up? Why keep fighting? Do you believe you're fighting for something? For more than your survival? Can you tell me what it is? Do you even know? Is it freedom? Or truth? Perhaps peace? Could it be for love? Illusions, Mr. Anderson. Vagaries of perception. Temporary constructs of a feeble human intellect trying desperately to justify an existence that is without meaning or purpose. And all of them as artificial as the Matrix itself, although only a human mind could invent something as insipid as love. You must be able to see it, Mr. Anderson. You must know it by now. You can't win. It's pointless to keep fighting. Why, Mr. Anderson? Why? Why do you persist?
    Neo: Because I choose to.
    "Matrix: Revolutions"

    В течение всего этого времени мне неоднократно приходилось сталкиваться с вопросами, мол, не проще ли за такие деньги прикупить самый бюджетный, но проверенный смарт вроде тех же Redmi Go или Nokia 1 и не париться. Может, и проще (у меня, кстати, теперь есть и то, и другое), и кому-то я бы именно так сделать и посоветовал...

    ...Вот только в плане "цифрового поводка" что флагманы вроде Mi 8 Pro или Nokia 9, что бюджетники вроде Redmi Go или Nokia 1 мало чем отличаются. Ни возможности защититься от стелс-SMS, ни возможности изменить браузерную строку агента и другие параметры сетевого фингерпринта, ни даже возможности очистить кэш уведомлений от голосовой почты без заводского сброса, даже если на самом деле оные не поступали... И это я только за обычные андроиды говорю, где без гуглосервисов вполне можно, хоть и с трудом, прожить, а об уровне шпионажа со стороны огрызков, мерзософтов и прочих тындексов вообще даже упоминать не буду - любому здравомыслящему человеку это более чем очевидно.

    Небольшой экскурс в историю. Был у меня году так в шестнадцатом эпичный мини-дровокол - Алканавт 4009D (двухсимочная модификация Pixi 3 3.5"). Отзыв здесь, кстати, о нём оставлял. И был у меня под него проект альтернативы тормозному мракобесному стоку. Назывался он FreePixi (и вроде на него, кроме KISS Launcher по дефолту, даже особо не жаловались, хоть за пределы 4PDA он по понятным причинам не разошёлся). Однако проделанные над ним манипуляции были настолько поверхностными, что я об этом проекте предпочитаю вообще не вспоминать. Ибо даже самый элементарный по своей структуре андроид требует дофигища трудозатрат для действительно глубокой кастомизации с целью устранения хотя бы половины вышеуказанных косяков. А вот о чём я тогда действительно жалел - так это о том, что версии этого самого Pixi 3 на базе Firefox OS (4022X и 4022D) до нас так и не добрались.

    Почему? Потому что Firefox OS - это свобода. Это скриптовая основа в том числе и большинства системных вещей. Это открытые стандарты кода и конфигурации. Это возможность перепиливать систему под себя простыми и понятными средствами (HTML, CSS, JS). В общем, эта система должна была стать клондайком для всех небезразличных к собственной информационной безопасности пользователей. Но что-то, как всегда, пошло не так, и Мозилла, убеждённая в коммерческом провале изначально некоммерческой платформы, "выкинула Васю на мороз". "Спасибо" грёбаным ZTE, как всегда. Но это уже другая история.

    И честь и хвала Фабрису (тому самому выходцу из той самой Мозиллы, которого я не упускаю возможности регулярно потроллить), что он и вся его команда вытащили этот проект из развалин. Да, мне крайне не нравится их политика касательно приложений (насколько кардинально они огородили изначально открытую платформу B2G) и касательно слива пар IMEI+IMSI через официальный магазин. Да, мне не нравятся дыры безопасности в стоке, к которым, возможно, действительно руку приложили не столько сами кайосники, сколько подрядчики, работающие на HMD и TCL. Но именно эти дыры позволили сделать сначала не слишком безопасный джейлбрейк, исследовать систему в достаточной степени для того, чтобы сделать безопасный джейлбрейк и рут и начать полноценную разработку кастома, устраняющего не только эти самые дыры, но и множество других. Кайосники вернули FFOS к жизни, моя же цель - вернуть её сообществу. Чтобы юзер мог почувствовать себя полноценным хозяином устройства, купленного за свои кровные, а не интуристом в КНДР, ходящим только по разрешённому маршруту. И да, этого сложно добиться на 100% даже в целенаправленных на эту тему разработках вроде PostmarketOS или Replicant, чего уж говорить о кастомах вроде Герды, которые пилят полтора анонимуса на базе слитых дампов без возможности восстановления по QDL?

    Как бы там ни было, ничего более открытого (среди более-менее доступного для нас с вами) на данный момент не наблюдается. И особенно смешно на этом фоне выглядят надуманные претензии по поводу отсутствия попсовой шпионящей проприетарщины вроде скайпа с вайбером. Хочется таким сказать: ребята, вы айфон потеряли? Если такие претензии, платформа явно не для вас. Да и "контрабандой" индийского вацапа занимался только потому, что официальный международный релиз до последнего откладывали, индусы с Jio-донорами были, а патчить больше некому. Так-то мне он триста лет не нужен, хоть с голосом, хоть без.

    В общем, свои бабки этот аппарат для меня явно отбил хотя бы в силу того, что из него получается слепить хотя бы чу-у-у-уточку более безопасное устройство, чем все эти пальцетыкательные трендовые плитки. Ибо мораль сей басни сформулирована уже давно: когда между хлебом и свободой выбирают хлеб, обычно в итоге теряют и то, и другое.

    10 из 10.

  • Поделиться:
    Конкурс! Расскажи о гаджете (смартфон, планшете и т.д.) или софтинке и выиграй Samsung Galaxy M20!
    Рейтинг@Mail.ru