Як побудований USB-пакет прошивки телевізора
Файл прошивки для оновлення з USB виглядає як єдиний непрозорий блок, але всередині нього — стос контейнерів: зовнішня оболонка, скрипт або таблиця й образи розділів, часто стиснуті. Знання шарів підкаже, що можна читати, змінювати й збирати назад.
Частина розділу: Посібник із прошивок і дампів.
Навіщо зазирати всередину
- Щоб знайти рядки версії, моделі й SoC, перш ніж прошивати файл не в той ТВ.
- Щоб побачити, які розділи пакет оновлює, а які залишає без змін.
- Щоб адаптувати пакет до іншої панелі чи пульта, дивіться сторінку можливостей.
Шари
- Зовнішній контейнер. Залежно від виробника це може бути звичайний архів (tar, zip), фірмовий формат (програма розпізнає LG EPK, Philips UPG і Android OTA) або сирий бінарний файл із заголовком.
- Скрипт або таблиця. Пакети на MStar починаються з текстового скрипта (команди на кшталт
filepartload), який указує завантажувачу, яка частина файла в яку область флеш-пам’яті йде. Інші родини використовують таблицю в заголовку. - Образи розділів. Типовий вміст — ядро, DTB, initramfs (cpio) та образи файлових систем, як-от squashfs, cramfs, ext4, UBI/UBIFS або JFFS2, а також розріджені образи Android і 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), і на ньому лежить лише файл оновлення в очікуваній папці або з очікуваною назвою. НЕ ПЕРЕВІРЕНО Назви файлів і правила щодо папок відрізняються залежно від платформи; дивіться інструкцію виробника.
- У вас є дамп поточної пам’яті, щоб невдале оновлення можна було скасувати.
- Мережева напруга стабільна, і ТВ не вимкнуть під час оновлення.
Пакет, який на ПК виглядає добре, на ТВ усе одно може не спрацювати з причин, яких ПК не бачить, наприклад через перевірку версії в завантажувачі. Розглядайте аналіз як спосіб зменшити ризик, а не усунути його.