Mstar Firmware Unpacker & Repacker

D@rkbytes

Moderador general
Saludos.
Les tengo un regalo de fin de año.

Esta aplicación que escribí sirve para desempacar y reempacar las particiones de los firmware MStar.
Únicamente desempaca las particiones que se pueden editar, tales como:
tvconfig, tvcustomer, tvdatabase, tvservice y userdata.
La partición más importante es tvconfig, ya que en ella se encuentran los datos del panel LCD, el logotipo de la marca del TV y los datos del control remoto.

MSFUR.png

Su uso es muy sencillo y se trata de lo siguiente:
Para extraer las particiones se debe seleccionar la casilla correspondiente a la partición.
En el modo de extracción se pueden extraer todas las particiones de una sola vez.
Si no las van a editar todas, recomiendo que solo se extraiga la partición necesaria.
En el modo de reempacado, únicamente se puede trabajar con una partición.
O sea que se creará un firmware para cada partición que podrá ser instalado por medio de una memoria USB (U Disk)
Para ello solo se pedirá seleccionar el archivo correspondiente a la partición que queramos reempacar.

Esta aplicación se encarga de crear el Script de cabecera para cada partición, así como el Footer, incluyendo los CRC32 correspondientes.
Los archivos de firmware generados tendrán el mismo nombre que el firmware original y serán guardados en carpetas independientes.
Esto no sucede con los archivos de las particiones extraídas, estas se guardan dentro de una sola carpeta que tendrá el nombre del firmware.
En este aspecto debemos tener cuidado de no renombrar el firmware original, ya que el televisor busca el firmware por un nombre específico.
Si no lo encuentra, es muy posible que el televisor aparentemente no haga nada, sin embargo, lo que sucede se puede ver en modo de depuración por RS-232, como ya lo expliqué en el tema de TV Debugging Tool.

Recuerden que para editar una partición se debe montar como un disco virtual, luego de editada se debe desmontar y reempacar.
Este procedimiento lo expliqué por aquí:
Cómo cambiar el Logotipo, tipo de Panel LCD, y Control Remoto en TV Smart (SoC MStar)

Bien, si tienen dudas pueden consultar y trataré de responder a la brevedad posible.
Cualquier bug que encuentren, me gustaría que lo comentaran para su pronta solución.
Nota: Por ahora esta aplicación no extrae secciones multiparte para la partición userdata.
Feliz año nuevo 2023

Actualización v1.1 - 05/01/23
.- Se optimizaron las rutinas de descompresion/compresión, con esto se obtuvo menor tiempo en los procesos.

Actualización v1.2 - 08/01/23
.- Se realizan más comprobaciones.
.- Se reduce aún más el tiempo en rutinas de descompresión/compresión.
.- Se permite elegir la base de alineamiento para lograr un firmware más compacto.
 

Adjuntos

  • MSFUR-v1.0.rar
    114.2 KB · Visitas: 181
  • MSFUR-v1.1.rar
    176.1 KB · Visitas: 181
  • MSFUR-v1.2.rar
    147.8 KB · Visitas: 363
Saludos amigo, feliz año nuevo...
Gracias por compartir estos programas, le tengo una consulta, este programa que presenta es solo para televisores smartv? Se podrá editar un firmware MStar de un TV no Smart?
Tengo un TV chino con imagen invertida y no da la opción por menú de servicio y quería saber si se podría editar el firmware...
 
Gracias por la herramienta útil. Una pequeña pregunta en los últimos firmwares de MSTAR (para Hisense TV), el script utiliza el algoritmo de descompresión LZ4. ¿Utiliza este algoritmo al descomprimir particiones o no? Porque después de descomprimir los archivos bin no se puede montar...Enlace al firmware fresco para MStar, si está interesado, se puede descargar desde el enlace: Файл из Облака Mail.ru
 
El Magic Number de la cabecera LZ4 es: 0x04224D18 (4 Bytes)
LZ4 Magic Number.jpg
Y en el firmware (usb_MTK_DEV_EU_4K.bin) deberían existir varios, tantos como particiones a extraer.
Sin embargo, únicamente existe una coincidencia y no alineada.
Una coincidencia.jpg
en los últimos firmwares de MSTAR (para Hisense TV)
El firmware no corresponde al formato Mstar, y su nombre hace referencia a MTK (MediaTek)
Dentro del firmware también se puede encontrar la referencia MTK
MTK.jpg
El Script de los firmware Mstar debe ser de un máximo de 16 KB, pero en este es de 21 KB.
Aparte, debe empezar desde el offset 0x00000000 y en este empieza en el offset 0x00001000

El Script es parecido, pero Mstar usa la compresión LZO
Por eso es que ni con este programa ni con otros para Mstar podrás extraer las particiones de forma correcta.
 
Gracias por la respuesta.
No hay firmas del algoritmo lz4 en el archivo bin, a juzgar por el script, se usa el llamado método sin cabeza para descomprimir : la descompresión de la matriz de datos original se realiza de acuerdo con el Tamaño final conocido

Sobre la etiqueta MTK (MediaTek). Pensé en esto también, pero confundido por el cambio de nombre obligatorio del archivo de firmware a MstarUpgrade.bin, sin este firmware TV se niega a ver...

Las utilidades para trabajar con archivos bin de firmware para MTK también se niegan a procesar este archivo
 
No hay firmas del algoritmo lz4 en el archivo bin, a juzgar por el script, se usa el llamado método sin cabeza para descomprimir
Habría que ver si en los argumentos de LZ4 existe esa posibilidad, yo no los he estudiado.
Sobre la etiqueta MTK (MediaTek). Pensé en esto también, pero confundido por el cambio de nombre obligatorio del archivo de firmware a MstarUpgrade.bin, sin este firmware TV se niega a ver.
Lo que tienes que saber es el tipo de procesador que usa el TV, ya que obviamente el nombre del firmware no se debe cambiar.
 
Actualización v1.4

Se agregó soporte para particiones Sparse y OP-TEE (Comandos: sparse_write y multi2optee)
Este tipo de firmwares suelen ser de gran tamaño, entre 1.5 GB hasta más de 3.5 GB.
Por lo tanto, también se agregó la posibilidad de trabajar con archivos grandes, o sea, superiores a 2 GB.
Deben tener en cuenta que, para trabajar con este tipo de firmware tienen que contar con espacio suficiente de disco duro, ya que la descompresión puede llegar a generar archivos que superan los 10 GB.

Emprender esta nueva característica ha sido un verdadero reto.
He tenido que hacer uso de las API de Windows para crear búfers en memoria, tener acceso a archivos > 2 GB y obtener su tamaño.
Aparte, crear rutinas para dividir y unir archivos > 2 GB, ya que 2 GB es el máximo permitido para aplicaciones de 32 bits.
Así que, esta aplicación, a pesar de ser x86, puede trabajar sin problemas con archivos superiores a los 8 GB.
No la he probado hasta ese rango, pero debe funcionar, ya que hasta las variables tuve que modificar, y con ciertos trucos pude lograr un empaquetado de 3.9 GB sin problemas.
El problema no es tanto con el búfer, sino con las funciones nativas para abrir archivos, para el búfer usé trozos (chunks) y para abrir y crear archivos usé varias API de Windows.
Por suerte, desde que empecé a programar en MASM32, me familiaricé con las API y siempre han sido parte de mis programas.
Como quiera, sí me dí varios jalones de cabello durante las pruebas, hasta que el resultado fuera correcto. :cool:

Nota importante:
El desempacado de firmware con archivos Sparse y OP-TEE solo se podrá ejecutar en sistemas x64
Para firmware genéricos se puede usar este programa sin inconvenientes en sistemas x86 y x64

En la versión 1.4.46 se corrigió el problema con las particiones inválidas.

Firmware de prueba
 

Adjuntos

  • MSFUP-v1.4.rar
    1.2 MB · Visitas: 351
  • MSFUP v1.4.45.rar
    1.2 MB · Visitas: 120
  • MSFUP v1.4.46.rar
    1.2 MB · Visitas: 151
Buenas noches, puedo dejar un link, el cual tiene el firmware para que lo puedan analizar, no lo logro desempaquetar y en realidad no logro darme cuenta si es Mediatek o Mstar, ya que ninguna de las app lo logra identificar.
Intenté subirlo pero el archivo es muy grande.

 
El firmware se llama MstarUpgrade, así que debe ser MStar, solo que está encriptado.
Hola, bien entonces no se puede desempaquetar si esta encriptado es correcto ? . Lo que tengo es el volcado tanto por UART y los realizado directo de la memoria con RT809H. Lo que no logro entender es como poder modificar el EMMC.BIN ya sea para el panel o el control remoto y mucho menos re cargar el boot que es muy normal que se dañe...
 
entonces no se puede desempaquetar si está encriptado, ¿es correcto?
Así es.
Lo que no logro entender es como poder modificar el EMMC.BIN ya sea para el panel o el control remoto y mucho menos recargar el boot que es muy normal que se dañe.
El desempacado seguramente sí se pueda hacer, pero para todo lo demás se requiere crear un script especial.
Lo cual es complicado porque se requiere saber las locaciones en RAM, entre otros parámetros más.
 
Ok, entiendo, ahora en cuanto al volcado por USB BOOT1.BIN , BOOT2.BIN Y EMMC.BIN según tu experiencia no se pueden modificar digamos el EMMC.BIN que contiene la configuración del TV y volver a cargar ?. Otro tema importante seria poder cargar el BOOT de alguna forma ya que es común que se dañe. Disculpas por las consulta es que son temas con poca información y hace poco descubrí este foro el cual me parece realmente increíble la información técnica que se comparte en el. Saludos
 
Probé el firmware después de volver a empaquetarlo. it's going about 64%. then he stopped and say update error.
¿Puedes ayudarme a descubrir por qué?
Solamente tú puedes saber qué modificaste y que ese sea el motivo del error.
De nada sirve que menciones sobre algo que desconocemos.
Sería mejor que nos digas qué modificaste.
 
Entonces lee el nuevo script generado en el firmware y posiblemente encuentres el error.
Cada partición tiene una locación RAM, un offset de inicio y un tamaño, si no se cumple esto habrá error.

Esto requiere un análisis más profundo que conlleva comprobar locaciones y variables de entorno.
 
Atrás
Arriba