Что переживает factory reset: разделы модема, persist, FRP и почему ваши файлы всё равно не восстановить

Опубликовано
Что переживает factory reset: разделы модема, persist, FRP и почему ваши файлы всё равно не восстановить

Когда я писал свой сервер rmtfs для модема Snapdragon 855, я впервые увидел, как модем пользуется диском планшета: открывает разделы modemst1 и modemst2, читает заголовки, пишет сектора. Эти разделы лежат на том же UFS, что и ваши фотографии, и сброс к заводским настройкам их не касается. С этого началось любопытство: что ещё переживает factory reset, что стирается по‑настоящему, и что из этого важно, если вы продаёте устройство.

Коротко. Ваши данные на современном Android после сброса из настроек восстановить нельзя: ключ шифрования уничтожается, а без него содержимое userdata это шум. Но кроме userdata на диске лежит ещё десяток разделов, которые сброс не трогает by design, и там живут идентификаторы устройства, калибровки, файловая система модема и привязка к аккаунту. Плюс eSIM и SD‑карта, про которые легко забыть. Разбираю по порядку.

Что я увидел сам

Модем и его файлы на вашем диске

Разделы modemst1/2 с точки зрения хоста, который их обслуживает.

Модем на Snapdragon не имеет собственного накопителя. Его постоянная память, EFS (Embedded File System), лежит в разделах modemst1 и modemst2 на общем диске, а читать и писать их он может только через хост: ОС обязана запустить сервер rmtfs, который по запросу модема переносит сектора между разделом и общим буфером в RAM. В Android этот сервер стартует из init, и вы его никогда не видите.

В моей ОС этот сервер написан с нуля, и он ведёт журнал каждого запроса. Так выглядит начало типичной сессии (сокращено):

> ipc.hosts
mss (qrtr node 0)
  rmtfs  OPEN /boot/modem_fs1     ok   size 3 MiB
  rmtfs  RW_IOVEC read  fs1  sectors 0..1        (header)
  rmtfs  RW_IOVEC read  fs1  sectors 8..263
  rmtfs  RW_IOVEC write fs1  sectors 264..271    -> shadow only
  rmtfs  OPEN /boot/modem_fs2     ok   size 3 MiB
  ...

Модем читает заголовок, выбирает рабочую копию, читает свои файлы, время от времени пишет. Что именно лежит в этих секторах, я не разбирал и не утверждаю: формат закрытый. Известно из документации Qualcomm и из опыта ремонтников: калибровки радиотракта, параметры сети оператора, IMEI, а также журналы, которые модем ведёт для себя. Именно поэтому потеря modemst в народе называется «слетел IMEI», и ремонт стоит денег.

Factory reset форматирует userdata и не прикасается к этим разделам. Переустановка прошивки через Odin или fastboot тоже, если только не прошивать их отдельно. Это правильно с точки зрения инженера: без калибровок модем не заработает. И это стоит понимать с точки зрения владельца: часть состояния устройства живёт вне зоны, на которую распространяется слово «сброс».

У себя я решил это иначе: мой rmtfs отдаёт модему тень в RAM, записи в неё не доходят до диска. Цена: без персистентного EFS часть функций сотовой связи не работает. Для планшета без SIM я на это согласен. Для телефона так делать нельзя.

Полная картина

Что ещё переживает сброс

Одна таблица по разделам.

Snapdragon‑устройство на Android 10 и новее. Имена разделов у вендоров различаются, роли те же.
РазделЧто тамПереживает сброс из настроекКто пишет
userdataВсе ваши файлы, приложения, аккаунтыНет: ключ шифрования уничтожаетсяВы
modemst1, modemst2EFS: файловая система модема. Калибровки радио, настройки сети оператора, IMEI, журналы модемаДаПрошивка модема, через сервер rmtfs на хосте
fsg, fsc«Золотая копия» EFS и её контрольные данныеДаЗавод; модем читает
persistКалибровки сенсоров и камеры, ключи DRM (Widevine), Wi‑Fi/BT MAC, у некоторых вендоров данные их сервисовДаВендор; частично система
frpФлаг Factory Reset Protection: привязка к аккаунту GoogleДа, специальноСистема, при добавлении аккаунта
efs / sec_efs (Samsung)IMEI, серийник, данные Knox, счётчик прошивокДаSamsung
misc, metadataКоманды загрузчику, метаданные шифрованияЧастичноСистема
eUICC (eSIM)Профили операторовТолько если отметить «Стереть eSIM»Оператор, по воздуху
SD‑картаЧто угодноНе трогается, если не отметитьВы
ОблакоРезервные копии, Find My Device, привязкиНе имеет отношения к устройствуВы и Google

Несколько комментариев к таблице.

persist на многих устройствах интереснее, чем кажется. Кроме калибровок там лежат ключи Widevine (без них не будет HD в стриминговых сервисах, поэтому ремонтники их берегут) и MAC‑адреса Wi‑Fi и Bluetooth. У некоторых вендоров туда же складывают данные собственных сервисов; читается это только с root, и что именно там у вашей модели, стоит проверить самому.

frp переживает сброс намеренно. Factory Reset Protection придуман против воров: после сброса устройство спросит аккаунт Google, который был на нём раньше. Для продавца это означает обратное: если не выйти из аккаунта до сброса, покупатель получит кирпич, а вы получите звонок. Это самая частая ошибка при продаже.

eSIM живёт в отдельной микросхеме eUICC со своей ОС и своими профилями. В диалоге сброса у Android есть галочка «Стереть eSIM», по умолчанию она бывает снята. Без неё профиль оператора остаётся у покупателя. Профиль без вашей учётной записи почти бесполезен, но перевыпускать его придётся вам.

Что стирается

Почему userdata восстановить нельзя

Крипто‑стирание вместо перезаписи.

Здесь хорошие новости. С Android 6 шифрование раздела userdata обязательно, с Android 10 это шифрование на уровне файлов (FBE). Сброс не перезаписывает диск, это заняло бы минуты и износило бы флеш. Он уничтожает ключ, а точнее ключи, которые хранятся в защищённом хранилище (Keymaster, TEE, у новых устройств отдельный чип).

Без ключа сектора userdata неотличимы от случайного шума, даже если физически они всё ещё на месте.

Почему я делаю на этом акцент. В 2015 году Лоран Симон и Росс Андерсон из Кембриджа купили 21 подержанный Android‑телефон после factory reset и восстановили с них данные, включая токены Google, у большинства устройств.

Это были Android 2.3–4.3 без обязательного шифрования, и сброс там был обычным форматированием, которое из‑за особенностей флеш‑памяти оставляло блоки на месте. С тех пор архитектура изменилась именно из‑за таких работ. Если у вас устройство на Android 10 и новее и сброс сделан из настроек, эта атака не работает.

Оговорка про recovery. Если делать wipe из recovery на разблокированном загрузчике, часть шагов (уничтожение ключей в TEE, стирание eSIM) может не выполниться. Сброс из настроек безопаснее.

iPhone и ноутбук

Как это устроено у других

Коротко, для сравнения.

На iPhone «Стереть контент и настройки» уничтожает ключи класса в Effaceable Storage, и данные становятся недоступны мгновенно; так работает с iPhone 3GS. Baseband со своей энергонезависимой памятью там тоже есть, и калибровки тоже переживают стирание. Пользовательских данных в них нет. Activation Lock играет роль FRP: не выйдя из iCloud, вы отдаёте покупателю кирпич.

На Windows‑ноутбуке «Вернуть компьютер в исходное состояние» с опцией «Удалить всё» и «Очистить диск» перезаписывает раздел. Если включён BitLocker, ключ уничтожается тем же способом, что и на телефоне. Прошивка UEFI, переменные NVRAM (в том числе ключи Secure Boot и, у некоторых вендоров, серийник и метки владельца) не трогаются. TPM обычно сбрасывается отдельным пунктом в UEFI; сброс Windows этого не делает.

Что делать

Перед продажей устройства

Порядок имеет значение.

  1. Выйти из аккаунта Google (или Apple ID) в настройках устройства. Именно выйти, а не просто сбросить: это снимает FRP и Activation Lock.
  2. Снять блокировку экрана, если производитель просит это перед сбросом; отвязать устройство от Find My Device и от банковских приложений с привязкой к устройству.
  3. Вынуть SD‑карту и физическую SIM. В диалоге сброса отметить «Стереть eSIM», если она есть.
  4. Сделать сброс из настроек, а не из recovery.
  5. После перезагрузки дойти до экрана приветствия и убедиться, что устройство не просит предыдущий аккаунт.
  6. Принять, что modemst, persist и efs остались. Пользовательских данных там нет; там идентификаторы устройства, которые покупателю и так достанутся вместе с коробкой.

Отдельный совет для тех, кто отвечает за парк устройств: «сброс перед выдачей следующему сотруднику» не равен «чистое устройство», и в политике это стоит написать явно. Что переживает сброс на конкретной модели, проверяется одной командой из recovery: ls -l /dev/block/by-name.

Итоги

Коротко

Три предложения.

Данные пользователя после сброса из настроек на современном Android недоступны, и это надёжно. Вне userdata живут разделы модема, калибровки, ключи DRM и FRP, и сброс их не трогает намеренно. Реальные риски при продаже это забытый аккаунт, eSIM и SD‑карта, а не остатки файлов.

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

Чужой компьютер: почему ваш телефон вам не принадлежит — и что с этим делать

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

Кто ещё исполняется в вашем Android: семь команд adb без root и что означает их вывод

Семь команд через обычный adb shell без root: сколько прошивок грузится вместе с Android, какой у модема патч безопасности и насколько он отстаёт от системного, пишет ли Wi‑Fi‑прошивка в память напрямую, что переживает factory reset и есть ли канал от SIM‑карты. С расшифровкой каждой строки и просьбой прислать результаты.

23 миллисекунды, чтобы солгать

Модем попросил раздел, которого на планшете нет. Честный отказ «no such partition» убил его за 23 мс; пустой раздел из нулей — нет. Почему прошивка проверяет хоста на каждом шаге и почему изоляция должна быть прозрачной: правильной по форме, пустой по сути.

securityandroidprivacyhardwarehow-to
Попробовать