← Все статьи

Как устроен пакет USB-прошивки телевизора

Файл прошивки для обновления по USB выглядит как один непрозрачный блок, но внутри это набор контейнеров: внешняя оболочка, скрипт или таблица и образы разделов, часто сжатые. Зная слои, вы понимаете, что можно прочитать, изменить и собрать обратно.

Раздел: Руководство по прошивкам и дампам.

Зачем заглядывать внутрь

  • Чтобы найти версию, модель и строки SoC до того, как прошивать файл не в тот ТВ.
  • Чтобы увидеть, какие разделы пакет обновляет, а какие не трогает.
  • Чтобы адаптировать пакет под другую панель или пульт, смотрите страницу «Возможности».

Слои

  1. Внешний контейнер. В зависимости от производителя это может быть обычный архив (tar, zip), фирменный формат (программа распознаёт LG EPK, Philips UPG и Android OTA) или «сырой» бинарный файл с заголовком.
  2. Скрипт или таблица. Пакеты на базе MStar начинаются с текстового скрипта (команды вроде filepartload), который сообщает загрузчику, какая часть файла в какую область флеш-памяти идёт. Другие семейства используют таблицу в заголовке.
  3. Образы разделов. Типичное содержимое: ядро, DTB, initramfs (cpio) и образы файловых систем, такие как squashfs, cramfs, ext4, UBI/UBIFS или JFFS2, а также образы Android sparse и boot.img.
  4. Сжатие. gzip, xz, lzma, bzip2, zstd и lz4 — частые обёртки вокруг этих образов, причём они могут быть вложены друг в друга.

Как шаг за шагом разобрать неизвестный файл

  1. Запишите размер и хэш (MD5 или SHA-256), чтобы потом понять, изменился ли файл.
  2. Посмотрите байты заголовка и читаемые строки: версии, названия моделей, названия SoC, строки скриптов.
  3. Просканируйте сигнатуры. Одна «магическая» последовательность мало что доказывает, поэтому хороший сканер ещё проверяет структуру найденного (размеры, заголовки), чтобы избежать ложных срабатываний.
  4. Проверьте энтропию. Высокая ровная энтропия означает сжатые или зашифрованные данные; очень низкая — пустое заполнение; смешанные области обычно означают реальное содержимое файловой системы.
  5. Распаковывайте слой за слоем, ограничив глубину вложенности, в чистую папку.

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

Типичные ошибки

  • Прошивать файл, выбранный только по диагонали экрана. Сравнивайте идентификаторы платы и панели в строках.
  • Править образ «на месте», оставляя старую контрольную сумму или поле размера.
  • Распаковывать дважды в одну папку, так что старые файлы смешиваются с новыми.
  • Считать, что «распаковалось без ошибок» значит «можно собрать обратно идентично». Уровни сжатия и порядок файлов меняют результат.

Как это делается в FW Tool

  • Вкладка «Прошивка» показывает сводку: размер, MD5 и SHA-256, заголовок, интересные строки.
  • Она ищет перечисленные выше сигнатуры и проверяет их; также разбирает скрипты MStar и разрезает файл по разделам.
  • Карта энтропии отмечает сжатые или зашифрованные области и заполнение (галочка, по умолчанию включена).
  • У рекурсивной распаковки есть настройка глубины вложенности (от 0 до 8, по умолчанию 3). Для некоторых файловых систем нужны внешние утилиты, например 7-Zip или unsquashfs, если они установлены.
  • Для пакетов на основе tar программа может собрать пакет заново после замены файлов.
  • Вкладка «Адаптация» читает поддерживаемый пакет, показывает найденные настройки панели и пульта и собирает изменённый пакет. См. также раскладка LVDS и битность.

Прежде чем трогать пакет, снимите дамп с рабочего устройства, если есть возможность: см. сравнение дампов и хэши.

Вопросы и ответы

Можно ли распаковать любой файл прошивки?

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

Какую глубину выбрать?

Начните со значения по умолчанию и увеличивайте только если в результате ещё остаются архивы. Большая глубина означает больше места на диске и времени.

Можно ли прошивать распакованные данные?

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

Практический чек-лист перед прошивкой

  • Идентификаторы модели, платы и панели в файле совпадают с ремонтируемым ТВ.
  • Размер файла и хэш совпадают с указанными источником, если он их указывает. Загрузка, прерванная на полпути, — частая причина неудачных обновлений.
  • USB-накопитель отформатирован так, как требует производитель (обычно FAT32), и содержит только файл обновления в нужной папке или с нужным именем. НЕ ПРОВЕРЕНО Имена файлов и правила для папок отличаются по платформам; смотрите инструкцию производителя.
  • У вас есть дамп текущей памяти, чтобы можно было откатить неудачное обновление.
  • Сетевое питание стабильно, и ТВ не будут выключать во время обновления.

Пакет, который на ПК выглядит нормально, всё равно может не пройти на ТВ по причинам, которых ПК не видит, например из-за проверки версии в загрузчике. Рассматривайте анализ как способ снизить риск, а не устранить его.

Скачать демо


Попробовать FW Tool (демо)