Как устроен пакет USB-прошивки телевизора
Файл прошивки для обновления по USB выглядит как один непрозрачный блок, но внутри это набор контейнеров: внешняя оболочка, скрипт или таблица и образы разделов, часто сжатые. Зная слои, вы понимаете, что можно прочитать, изменить и собрать обратно.
Раздел: Руководство по прошивкам и дампам.
Зачем заглядывать внутрь
- Чтобы найти версию, модель и строки SoC до того, как прошивать файл не в тот ТВ.
- Чтобы увидеть, какие разделы пакет обновляет, а какие не трогает.
- Чтобы адаптировать пакет под другую панель или пульт, смотрите страницу «Возможности».
Слои
- Внешний контейнер. В зависимости от производителя это может быть обычный архив (tar, zip), фирменный формат (программа распознаёт LG EPK, Philips UPG и Android OTA) или «сырой» бинарный файл с заголовком.
- Скрипт или таблица. Пакеты на базе MStar начинаются с текстового скрипта (команды вроде
filepartload), который сообщает загрузчику, какая часть файла в какую область флеш-памяти идёт. Другие семейства используют таблицу в заголовке. - Образы разделов. Типичное содержимое: ядро, DTB, initramfs (cpio) и образы файловых систем, такие как squashfs, cramfs, ext4, UBI/UBIFS или JFFS2, а также образы Android sparse и boot.img.
- Сжатие. gzip, xz, lzma, bzip2, zstd и lz4 — частые обёртки вокруг этих образов, причём они могут быть вложены друг в друга.
Как шаг за шагом разобрать неизвестный файл
- Запишите размер и хэш (MD5 или SHA-256), чтобы потом понять, изменился ли файл.
- Посмотрите байты заголовка и читаемые строки: версии, названия моделей, названия SoC, строки скриптов.
- Просканируйте сигнатуры. Одна «магическая» последовательность мало что доказывает, поэтому хороший сканер ещё проверяет структуру найденного (размеры, заголовки), чтобы избежать ложных срабатываний.
- Проверьте энтропию. Высокая ровная энтропия означает сжатые или зашифрованные данные; очень низкая — пустое заполнение; смешанные области обычно означают реальное содержимое файловой системы.
- Распаковывайте слой за слоем, ограничив глубину вложенности, в чистую папку.
Если у образа высокая энтропия и нет узнаваемой сигнатуры, он, вероятно, зашифрован или использует собственное сжатие. Не считайте это повреждением и не пытайтесь прошить его обратно после правки в hex-редакторе: проверки подписи или контрольной суммы в загрузчике могут его отклонить или, что хуже, принять испорченный файл. НЕ ПРОВЕРЕНО Какие семейства проверяют подпись, зависит от модели; смотрите документацию производителя.
Типичные ошибки
- Прошивать файл, выбранный только по диагонали экрана. Сравнивайте идентификаторы платы и панели в строках.
- Править образ «на месте», оставляя старую контрольную сумму или поле размера.
- Распаковывать дважды в одну папку, так что старые файлы смешиваются с новыми.
- Считать, что «распаковалось без ошибок» значит «можно собрать обратно идентично». Уровни сжатия и порядок файлов меняют результат.
Как это делается в FW Tool
- Вкладка «Прошивка» показывает сводку: размер, MD5 и SHA-256, заголовок, интересные строки.
- Она ищет перечисленные выше сигнатуры и проверяет их; также разбирает скрипты MStar и разрезает файл по разделам.
- Карта энтропии отмечает сжатые или зашифрованные области и заполнение (галочка, по умолчанию включена).
- У рекурсивной распаковки есть настройка глубины вложенности (от 0 до 8, по умолчанию 3). Для некоторых файловых систем нужны внешние утилиты, например 7-Zip или unsquashfs, если они установлены.
- Для пакетов на основе tar программа может собрать пакет заново после замены файлов.
- Вкладка «Адаптация» читает поддерживаемый пакет, показывает найденные настройки панели и пульта и собирает изменённый пакет. См. также раскладка LVDS и битность.
Прежде чем трогать пакет, снимите дамп с рабочего устройства, если есть возможность: см. сравнение дампов и хэши.
Вопросы и ответы
Можно ли распаковать любой файл прошивки?
Нет. Зашифрованные или подписанные контейнеры покажут высокую энтропию и непригодную структуру. Программа сообщает, что ей удалось определить; расшифровать то, для чего нет ключа, она не может.
Какую глубину выбрать?
Начните со значения по умолчанию и увеличивайте только если в результате ещё остаются архивы. Большая глубина означает больше места на диске и времени.
Можно ли прошивать распакованные данные?
Распакованные файлы нужны для изучения. Прошивайте только полный пакет, который вы собрали заново или получили целым, на устройстве, для которого у вас есть дамп для возврата.
Практический чек-лист перед прошивкой
- Идентификаторы модели, платы и панели в файле совпадают с ремонтируемым ТВ.
- Размер файла и хэш совпадают с указанными источником, если он их указывает. Загрузка, прерванная на полпути, — частая причина неудачных обновлений.
- USB-накопитель отформатирован так, как требует производитель (обычно FAT32), и содержит только файл обновления в нужной папке или с нужным именем. НЕ ПРОВЕРЕНО Имена файлов и правила для папок отличаются по платформам; смотрите инструкцию производителя.
- У вас есть дамп текущей памяти, чтобы можно было откатить неудачное обновление.
- Сетевое питание стабильно, и ТВ не будут выключать во время обновления.
Пакет, который на ПК выглядит нормально, всё равно может не пройти на ТВ по причинам, которых ПК не видит, например из-за проверки версии в загрузчике. Рассматривайте анализ как способ снизить риск, а не устранить его.