Городская лента

Энтузиаст получил root и постоянный SSH на колонке Xiaomi с Марусей

· 5

Владелец Xiaomi Mi Smart Speaker с Марусей смог получить root и постоянный SSH на устройстве и собрал для повторения утилиту SpeakerLab 1.0 с графическим окном, командной строкой, исходниками и тестами. Инструмент рассчитан на конкретную плату AS09A VER0201, а не на все колонки с таким корпусом.

Установка опирается на особенность загрузчика: Secure Boot на изученной плате включён, но после успешной проверки штатного boot-образа загрузчик позволяет работать с оперативной памятью. В этот промежуток утилита запускает временный установщик, а постоянные файлы SSH хранит в /data. Загрузчик и ядро на NAND при этом не перепрошиваются.

Для подключения нужен короткий USB-доступ при холодном включении: устройство ненадолго определяется как 1b8e:c003, после чего дополнительно проверяется ответ identify. Перед операцией компьютер готовят к захвату USB, ждут сообщения «Ожидание USB» и только затем полностью выключают и включают штатное питание. Обычная программная перезагрузка нужного окна не даёт.

Перед установкой утилита делает физическую копию NAND со служебной областью OOB: 131 072 страницы по 2048 байт данных и 128 байт OOB, всего 285 212 672 байта, или 272 МиБ. Отдельная проверка сверяет не только SHA256 файла, но и непрерывное покрытие страниц. Копия содержит персональные данные — настройки сети, ключи и идентификаторы, поэтому полный дамп в публичный архив не включён.

После проверки SHA256 кода BL33 и собственного backup утилита подменяет initramfs на временный с установщиком и публичным SSH-ключом владельца, оставляя штатные ядро и DTB. Установщик присоединяет системный раздел только для чтения и сохраняет дополнение в существующий /data. Автозапуск добавляется через существующий init-скрипт, поэтому SSH переживает обычную перезагрузку.

Отдельно реализована блокировка OTA-обновлений: она возвращает код 125 и блокирует три известные штатные точки запуска, но вместе с обновлениями перестают приходить и исправления производителя. Из 33 программных тестов 30 прошли, три оконных сценария Tk пропущены из-за отсутствия графического дисплея; USB и SSH в тестах подменены. Полная обратная запись на реальном устройстве не выполнялась — для получения SSH она не нужна.

Аппаратные проверки проводились на Fedora, Windows и Ubuntu, для macOS есть только инструкции. Автор приглашает к независимым проверкам на других российских экземплярах с точной маркировкой платы и версией системы; полные личные дампы для этого не требуются.