Затирание IMEI и правильный способ решения проблемы, или что такое NVRAM – Прошивка смартфона Lenovo – Торренты – megasoft-portal

Почему мне иногда нужно делать сброс к заводским настройкам по умолчанию?

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

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

Что такое nvram?

NVRAM – энергонезависимая память с произвольным доступом. Это небольшая часть флэш-памяти маршрутизатора, размер которой обычно составляет от 32 КБ до 128 КБ (в зависимости от модели маршрутизатора) содержащая все текущие настройки маршрутизатора (некоторые низкоуровневые настройки, настройки служб, пароли и все что вы когда либо настраивали)

Factory NVRAM – энергонезависимая память с ограниченным доступом для чтения, где хранится заводская конфигурация устройства. Размер которой обычно составляет до 16 КБ содержащая только основные настройки маршрутизатора, номер модели, серийный номер, порядок радиомодулей, калибровки и настройки, региональные ограничения и многое другое.

Что произойдет, если у меня закончится место для nvram?

Тут несколько вариантов

  • Невозможно сохранить все изменения
  • Содержимое NVRAM будет повреждено, что приведет к сбою в работе

Как определить, что проблема именно в nvram

Потеря NVRAM часто становится следствием неправильного отката настроек через сторонние программы, частичной или полной прошивке, также сделанной неправильно. Признаки, по которым можно судить о потере файла:

  • Если включить на смартфоне Wi-Fi, появляется сеть с названием «NVRAM warning err=0×10»;
  • После ввода USSD-команды *#06# в ответном сообщении не приходит кодов IMEI, т.к. они хранятся в NVRAM.

В некоторых случаях телефон не может обнаружить сеть сим-карты.

Затирание imei и правильный способ решения проблемы, или что такое nvram – прошивка смартфона lenovo – торренты – megasoft-portal

Затирание IMEI и правильный способ решения проблемы, или что такое NVRAM.

IMEI на наших устройствах слетает при форматировании, а иногда и при прошивке FlashTool-ом.
Чтобы понять природу этого явления, необходимо окунуться в недра EMMC. Там есть раздел /dev/nvram. В нем находятся IMEI, SN, MAC адреса сетевых интерфейсов и др. 
Если открыть скаттер то можно обнаружить в 16-й строке __NODL_NVRAM 0xe00000. Начало строки __NODL_ заставляет флэштул игнорировать этот пункт. Почему же, несмотря на это, он его иногда затирает – мне неизвестно. Именно это и является причиной исчезновения IMEI после прошивки, и как понятно из предыдущего, не только ИМЕЙ. То есть, мы удаляем раздел не давая взамен ничего!
Итак, /dev/nvram прошивается на заводе и все дальнейшие официальные апдейты и прошивки даже думать не смеют его трогать. Как бы не менялась программная часть, он остается неизменным. В редких случаях, производитель вносит изменения в него, и выпускает прошивки для сервис центров, включая в нее и этот раздел.

В рабочей системе IMEI находятся по пути /data/nvram. Точнее /data/nvram/md/NVRAM/NVD_IMEI/. Директория /data/nvram создается при первом запуске устройства, путем копирования в нее содержимого /dev/nvram. Распространена рекомендация сохранять папку /data/nvram для восстановления имей в будущем. Это, конечно, справедливо, как и призывы к бэкапу в принципе. Калибровки с имеями вы восстановите, но эта директория бесполезна при восстановлении раздела /dev/nvram. 

Что необходимо предпринять дабы избежать проблем в будущем?
Во первых нужно создать полный дамп памяти устройства. Рекомендую это сделать сразу после покупки устройства, до начала поиска лучшей в мире прошивки. В зависимости от метода дампа, среди прочих файлов должен быть файл nvram.img. Именно img размером 5242880. Это и есть образ необходимого раздела. Всякие nvram.tar и прочие ext4 это копии /data/nvram и интереса не представляют. 
Для создания только образа раздела /dev/nvram можно воспользоваться командой:
dd if=/dev/nvram of=/sdcard/nvram.img bs=5242880 count=1
5242880 это размер раздела для устройств на платформах 6577-6589. В результате по пути sdcard будет создан файл nvram.img. Сохраняем его в надежное место.

Как восстановить затертый раздел /dev/nvram?
Самый простой способ , скопировать сохраненный ранее файл его в память устройства набрать команду:
dd if=/sdcard/nvram.img of=/dev/nvram
Результатом успешной отработки команды послужат строчки
10240 0 records in
10240 0 records out
5242880 bytes transfered in…..
Для прошивки этого раздела ФлэшТулом находим в скатере строчку __NODL_NVRAM…. и удаляем в ней __NODL_, после чего в окне программы выбираем наш nvram.img. Именно выбираем. Хоть он и станет доступен в окне программы, но ФлэшТул его сам не подхватит.
Иногда флэштул не хочет шить отдельно этот раздел. В этом случае необходимо скачать прошивку для флэштула, открыть правленый скатер и отметить кроме прочего и nvram.img

Для того чтобы прошить ФлэшТулом методом Upgrate, который требует включения всех пунктов, только необходимые на момент разделы, делаем следующее:

Открываем scatter в любом текстовом редакторе. Дописываем в начало строки раздела который хотим исключить __NODL_. Например __NODL_PRELOADER 0x0. Сохраняем, открываем скаттер ФлэшТулом  и шьем только те разделы которые остались не закомментированы, тк ФлэшТул их не увидит.

Данный трюк позволяет как скрывать, так и открывать закрытые пункты скаттера. Таким образом, можно выборочно шить необходимые разделы через Upgrate, например nvram.
Как восстановить раздел, в случае отсутствия резервной копии?

Uefi-загрузчик наносит ответный удар

Эта атака тоже весьма не новая, о ней еще в 2022 году был

тов.

Восстановление из резервной копии

Для этого необходимы Root права на телефоне. Восстановление возможно только в том случае, если владелец сделал полную резервную копию перед прошивкой. Рекомендуется сохранять файл резервной копии на ПК, чтобы не потерять его при записи новой ОС на смартфоне. Восстановление NVRAM из сделанной резервной копии:

  1. Запустить приложение восстановления на телефоне;
  2. Подключить смартфон к ПК через USB;
  3. Включить доступ Root на смартфоне;
  4. Нажать кнопку Restore/Восстановить;
  5. Следовать указаниям системы на устройстве.

Внешний вид меню и действия пользователя могут незначительно изменяться на разных устройствах и операционных системах.

Господа забывчивые 2

Т.к. для хранения NV-переменных используется микросхема SPI, то для функционирования NVRAM необходима запись в нее во время работы ОС, что сразу ставит крест на защите при помощи

RO

-микросхемы или

PR

-регистров. Тем не менее, очень многие производители систем все равно используют PR-регистры, настраивая их таким образом, чтобы NVRAM попадал в незащищенную от записи область, но при этом умудряются начисто позабыть, что этой области требуется отдельная защита при помощи SMM-драйвера для NVRAM и установки бита SMM_BWP/SpiRomProtect.

Результат забывчивости — полный доступ ко всем NV-переменным невзирая на атрибуты, в том числе к требующим аутентификации переменным SecureBoot (что сразу делает всю технологию полностью бесполезной) и к Setup (что позволяет иногда отключить и защиту остальных частей прошивки и после перезагрузки получить уже полный доступ ко всему содержимому микросхемы SPI), не говоря уже о банальном DoS.

Еще одни пример забывчивости — поставить для отладки RT на какую-ту важную переменную, вроде Setup, а затем забыть этот самый аттрибут убрать. Результат — можно менять настройки прямо из ОС, очень удобно, только вот опять весь SecureBoot коту под хвост.

Если резервной копии нет

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

Идея на минус миллион

Честно признаться, я не знаю, кому именно в голову пришла идея переноса хранилища настроек из CMOS SRAM, где оно находилось испокон веков, на основную микросхему, но на сегодняшний момент можно констатировать, что это было той еще медвежьей услугой и производителям железа, и разработчиком прошивок, и конечным пользователям. Видимо, у Intel были на то какие-то свои причины, и потому интерфейс к NVRAM, в лице четверки Runtime-сервисов

GetVariableGetNextVariableNameQueryVariableInfoSetVariable

, стал частью самого первого опубликованного Intel (которая до организации UEFI Forum работала над ним практически единолично) стандарта EFI 1.10, прародителя всех нынешних реализаций UEFI.

Как мне восстановить заводские настройки по умолчанию?

Есть несколько способов сделать это, в зависимости от вашей конкретной ситуации.

Как устроен nvram

Логически NVRAM (согласно спецификации UEFI) — это набор переменных, каждая из которых имеет GUID (не обязательно уникальный), имя (в кодировке UCS2), атрибуты (о которых ниже) и данные, которые в этой самой переменной и хранятся.

По типу переменные делятся на обычные (хранятся в RAM, при перезагрузке значений не сохраняют),

NV

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

HR

(хранятся в микросхеме SPI, но отдельно от NV, используются ОС с поддержкой UEFI для того, чтобы сообщить прошивке об обнаруженных ошибках аппаратуры).


По уровню доступа переменные изначально делились на два типа —

BS

(недоступные после начала загрузки ОС) и

RT

(доступные всегда), но с внедрением в стандарте UEFI 2.3.1C технологии SecureBoot к обычным RT-переменным добавились еще 2 подвида —

AW

(для записи требуется аутентификация) и

TA

(то же самое, только еще с временной меткой для защиты от replay-атак).

Тип переменной определяется ее атрибутами, т.е. NV BS RT — хранящаяся в микросхеме SPI переменная, доступная на чтение и запись как по время загрузки, так и из ОС. Стандарт также определяет правила обращения с переменным, к примеру, наличие атрибута RT автоматически влечет наличие и BS, а запись в переменные без атрибута NV невозможна из ОС (все такие переменные становятся Read-only после возникновения события

ExitBS

, которым завершается работа UEFI-загрузчика).

Все было бы хорошо, если бы описанный выше интерфейс был единственным, и для доступа к переменным использовался бы только он. К сожалению, это не совсем так, и некоторыми NV-переменными практически в обход драйвера NVRAM пользуется драйвер HII, предоставляющий пользователю меню BIOS Setup, поэтому формат хранения NV-переменных тоже пришлось стандартизировать, и теперь хранить NVRAM не в микросхеме SPI, а где-то еще — довольно непросто.


Самая известная такая переменная «двойного доступа» —

Setup

, в которой хранятся почти 100% (за исключением паролей и еще пары вещей) настроек, доступных для изменения из BIOS Setup. Формат ее уникален для практически для каждой версии и каждой системы, но т.к. драйвер HII точно знает, по какому смещению какая настройка находится, и это знание достаточно просто извлекается при наличии образа прошивки с помощью пары утилит с открытым кодом, то это открывает атакующему некоторые потенциально опасные возможности.

Когда мне нужно выполнить сброс к заводским настройкам по умолчанию?

  • Между большими обновлениями например ранее была прошивка 384, а вы обновляете устройство до 386, в данном случае выполнять такую процедуру обязательно
  • Если вы не выполняли сброс более 3-5 обновлений (в зависимости от частоты выхода обновления)
  • Возникают проблемы или ошибки после обновления

Лучшая защита

Может прозвучать парадоксально, но лучшая защита от всех возможных проблем с NVRAM разом — удаление из нее NV, т.е. перенос всех лежащих на микросхеме SPI переменных в RAM и установка защиты от записи в область с ними при помощи PR-регистров сразу после BIOS Setup (если делать до — настройки перестанут сохранятся).

Единственная современная ОС, которая хоть как-то пользуется записью в NVRAM — MacOS X, но у них там свой лунапарк без SMM и SecureBoot, так что про них разговор отдельный. Windows и Linux великолепно переживают тот факт, что переменные NV RT больше не сохраняются, проблемы могут быть только у инсталяторов (пишем свои загрузчики в BootXXXX, а они не сохраняются, печаль) и какого-то очень специфического софта (которому кровь из носа такие переменные нужны, но я ни разу такого софта не видел).

Могу ли я просто восстановить свои сохраненные настройки после восстановления заводских настроек по умолчанию?

Нет. Идея восстановления заводских настроек по умолчанию состоит в том, чтобы ваш маршрутизатор начал использовать НОВЫЕ значения по умолчанию. Если вы восстановите свои сохраненные настройки, вы перезапишете эти новые значения старыми, и вы вернетесь к исходному состоянию.

Это похоже на использование ПК с поврежденной установкой Windows. Если вы переформатируете и сразу после восстановления резервной копии Ghost / TrueImage / Clonezilla поверх переформатированной Windows, вы вернетесь туда, где вы были до того, как сделали всю эту работу.

Настройки по умолчанию

При первой загрузке маршрутизатор запускается с копирования различных настроек по умолчанию

  • CFE загрузчика, платформа Broadcom (актуально для старых моделей)
  • Facroy NVRAM (в новых моделях HDN и новее)
  • Прошивки

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

При помощи adb

Небольшая утилита скачивается и устанавливается на компьютер. Архив с ADB можно найти тут.

Алгоритм работы с утилитой ADB схож с предыдущими вариантами. Необходимо подключить смартфон к ПК, указать путь к файлу NVRAM и нажать кнопку Root.

Для работы с утилитой на телефоне должны быть установлены Root права.

Сброс к заводским настройкам: до или после перепрошивки?

Основная цель состоит в том, чтобы использовать НОВЫЕ значения по умолчанию, которые включены в НОВУЮ прошивку, сброс к заводским настройкам по умолчанию должен быть выполнен, когда НОВАЯ прошивка уже установлена. Если вы сделаете это перед обновлением, у вас останутся СТАРЫЕ значения по умолчанию.

Социалисты-удалисты

Напоследок, самая безобидная NVRAM-related атака, которую может совершить на ваш ничего не подозревающий BIOS штатная Linux’овая утилита

efibootmgr

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

После этого процентов примерно 30 реализаций UEFI авторства Phoenix или Insyde впадают в полный ступор — еще бы, фаза BDS закончилась, а загружаться больше не с чего. При этом все возможности выйти из ступора, вроде BIOS Setup, тоже были среди тех самых BootXXXX, и пользователь вынужден либо воспользоваться подсистемой Crisis Recovery (это если он может в RTFM) или нести систему в сервис.

Способы восстановления

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

Через край

Еще одна атака, старая как мир и простая как мычание — пишем в NVRAM большие переменные, маленькие переменные, много переменных, сто раз одну и ту же переменную, и так далее и тому подобное, пушистый

AFL

вам в помощь. Затем перезагружаемся и смотрим на реакцию. Правильная реализация NVRAM с честью ответит на все лишние запросы EFI_OUT_OF_RESOURCES и после перезагрузки все будет работать, но не счесть примеров и иного исхода, когда NVRAM просто разваливается и система встает колом, не имея возможности продолжить загрузку. Чаще всего из этого получается DoS, но если атакующему сильно-сильно захочется — смотрите выше.

Заключение

Цикл понемногу подходит к концу, осталось рассказать про пару исторических атак на SecureBoot, про опасность неподписанных Option ROM’ов, и про выдающихся джентельменов (и леди), благодаря которым и была обнаружена большая часть описываемых проблем. Еще на пару частей хватит.

Спасибо читателям за внимание, удачных вам прошивок, и помните — NVRAM нужно беречь смолоду.

Оцените статью
Huawei Devices
Добавить комментарий