Banner publicitario de PCBWay

Creador de Imagen Ext4 para modificar Firmware Mstar

Quiero saber cómo se generan los últimos 8 dígitos (c9f9568b, ed90437f, 7cfbb3b2)?
Cada versión es diferente.
 

Adjuntos

  • IMG_20250213_203700.jpg
    IMG_20250213_203700.jpg
    128.5 KB · Visitas: 8
¿Qué son esos archivos?
En los archivos de actualización de software o firmware, los últimos números son la revisión del programa.
El programador los puede ingresar personalmente, o establecer en el compilador que realice el incremento de forma automática al compilar.
 
El tamaño del firmware empaquetado debe ser el mismo que el tamaño del firmware original; de lo contrario, el dispositivo no será reconocido.
¿Qué te hace suponer que es así? ¿Cuál es el mensaje de error ante eso?

Sin embargo, ya te mostré una posible solución...
Suponiendo, pero lo dudo, que se realice comprobación por tamaño del archivo del firmware, la solución es relativamente fácil.
Tienes 3836 bytes de alineamiento a partir del offset 0x702FB124, incluyendo el footer, que puedes ir eliminando para ajustar el tamaño.
Solo que esto representa que la modificación realizada no puede ser superior a este límite, pero sí inferior, ya que se pueden agregar bytes.
 
Utilicé (Mstar Firmware Unpacker & Repacker) para empaquetar el firmware, luego actualicé la máquina y vinculé la información obtenida mediante la ejecución del código UART.
Esta es la información que se obtiene al actualizar el firmware original.
 

Adjuntos

  • 1.txt
    5.2 KB · Visitas: 8
  • 2.txt
    12.1 KB · Visitas: 7
Última edición por un moderador:
Según el log, toma la longitud del nombre y la muestra...
Current file = upgrade_zlm104gi_v1.00113_dc579922.bin lenght =38
Longitud del nombre del archivo = 38 caracteres.
Luego toma el tamaño del archivo...
file_fat_filesize return = 0x6E96A020
O sea, 1855365152 bytes = 1.72 GiB o 1.85 GB.
Posteriormente muestra...
check file failed: upgrade_zlm104gi_v1.00113_dc579922.bin
Pero haciendo referencia a "file" no a "size", y como archivo se pueden verificar los CRC-32 y también los datos de cabecera.

La validez del segundo archivo es normal, puesto que fue creado correctamente y no sé de qué manera creaste el que no funciona.
Como he mencionado anteriormente, dudo mucho que la comprobación sea por tamaño, pero se puede comprobar fácilmente.
Si mencionas que no se realiza comprobación por CRC-32, entonces modifica un solo byte en cualquier zona de alineamiento del firmware válido.
Si el alineamiento es con 0x00, cambia un byte por 0xFF o viceversa, esto mantendrá el tamaño pero se alterará el checksum.
Entonces, si la verificación es por tamaño, el archivo será validado como correcto, pero si es por CRC-32 obtendrás el error.
Esto mismo lo puedes aplicar en la cabecera, por ejemplo: cambiando el año 2023 por 2025 en "Build TIME :".
 
strImgName is NULL or strImgSize is NULL!
�upgrade_ZLM104Gi_V�U-pkg filename is short!
�ZLM104Gi�upgrade_%s_v�Start Checking USB CH UpgradeFile.

Vi este mensaje (strImgName is NULL or strImgSize is NULL!) en Mboot. Esta información no está disponible en otros firmwares.
 
Última edición:
strImgName y strImgSize son variables del tipo string o cadenas de caracteres que hacen referencia al nombre y al tamaño del archivo de imagen o firmware, pero como cadenas, y aunque strImgSize primeramente pueda ser adquirido de esa forma, se puede convertir a entero si se requiere.
Pero NULL hace referencia a una cadena vacía o con valor nulo, no a una diferencia de valores.
Esta información no está disponible en otros firmwares.
Eso no importa, ya que ese mensaje no muestra diferencia de tamaños, sino la inexistencia de datos en las variables.

La falta de conocimiento sobre el idioma inglés y programación, te está confundiendo bastante.
 
Actualización RC2 Final x64

.- Se agrega la Compresión/Descompresión LZMA.
.- Se agrega el calculador de hash MD5 por archivo único o por lotes, este permite guardar la lista como archivo de texto.

Paso a explicar para qué nos puede servir la función de descompresión LZMA:

Los volcados de memorias SPI Flash de algunos firmware MStar en TV chinos no Smart, tienen varios módulos LZMA.
Dentro de estos módulos se puede encontrar diversa información, como el tipo de panel LCD, el tipo de sintonizador, el nombre original del firmware, etc.
La cabecera de un archivo LZMA es básicamente así:
5D 00 00 01 00
Donde el cuarto byte es el tipo de compresión usado, y va del 1 al 9, por defecto se usa el valor 04
Sin embargo, en este tipo de volcados, la cabecera es diferente, así por ejemplo: 5D 00 00 00 04
Si buscamos estos bytes con un editor hexadecimal, podemos encontrar los módulos, donde cada firma será el inicio LZMA del módulo.
Así que de esta forma podemos ir seleccionando los módulos y guardarlos con extensión .lzma.
Cuando solo encontramos un módulo LZMA, debemos tomar su offset y buscar hacia adelante hasta encontrar los bytes 00 BE EF 00 00, o hasta donde solo se encuentre contenido con 0xFF.
Este será el offset final y entonces seleccionamos desde el offset LZMA hasta donde empiecen los bytes 0xFF, que también guardaremos con la extensión .lzma.

Nota: también podemos buscar únicamente los bytes 5D 00 00 00 y posiblemente obtener módulos LZMA válidos.

Ya teniendo el archivo LZMA guardado en disco, podemos proceder con su descompresión.
Como referencia; el offset general en un archivo con un único módulo LZMA, es en la posición 0x23880
Ya descomprimido podemos abrirlo con el editor hexadecimal para ver su contenido.

No me pregunten si este archivo se puede editar, volver a comprimir y luego reempacar, porque no lo he hecho y no sé si funcione.
Y el motivo principal de que no llegue a funcionar, es porque estos archivos tienen una comprobación de CRC por módulo y general, que aún no sé cómo se obtenga, porque no existe información sobre su estructura.

Adjunto la actualización y un archivo LZMA como ejemplo.
Verán que descomprimido podrán encontrarán información que obviamente no se podrá encontrar en el volcado.
Este tipo de técnica es la que usé en la aplicación Dump Repair v1.9 para encontrar el nombre del firmware, pero automatizada.

Actualización por bug: 06/02/2025
Saludos, Soy nuevo en este tema y me gustaría que me orientaras sobre algo que no he podido lograr. Extraje el volcado de un televisor con la RT809H por el puerto ISP, y quiero modificarlo para voltear la imagen resultante de un cambio de panel. Tengo entendido que esto se realiza cambiando una opción en Customer_1.ini. Para ello, extraje el archivo TVCONFIG con Mstar Dump Extractor v4.2.

Sin embargo, al leer algunos posts, me he confundido bastante. He visto que has desarrollado muchas utilidades y actualizado las mismas. Leí que antes era necesario montar la ISO, pero ahora, con Make Image RC2 Final x64, ya no sería necesario. No obstante, al empaquetar con Mstar Dump Extractor v4.2, parece que no tiene efecto lo que hace Make Image RC2.

¿Podrías orientarme sobre qué utilizar para modificar mi volcado y volverlo a instalar con la RT809H? Te lo agradecería mucho; soy un novato en la materia.
 
Saludos, Soy nuevo en este tema y me gustaría que me orientaras sobre algo que no he podido lograr. Extraje el volcado de un televisor con la RT809H por el puerto ISP, y quiero modificarlo para voltear la imagen resultante de un cambio de panel. Tengo entendido que esto se realiza cambiando una opción en Customer_1.ini. Para ello, extraje el archivo TVCONFIG con Mstar Dump Extractor v4.2.

Sin embargo, al leer algunos posts, me he confundido bastante. He visto que has desarrollado muchas utilidades y actualizado las mismas. Leí que antes era necesario montar la ISO, pero ahora, con Make Image RC2 Final x64, ya no sería necesario. No obstante, al empaquetar con Mstar Dump Extractor v4.2, parece que no tiene efecto lo que hace Make Image RC2.

¿Podrías orientarme sobre qué utilizar para modificar mi volcado y volverlo a instalar con la RT809H? Te lo agradecería mucho; soy un novato en la materia.
Saludos colega.
Te aconsejo leas el tema Mstar Dump Extractor, pues todo lo que quieres hacer se realiza perfectamente con ese software.
 
al leer algunos posts, me he confundido bastante. He visto que has desarrollado muchas utilidades y actualizado las mismas. Leí que antes era necesario montar la ISO, pero ahora, con Make Image RC2 Final x64, ya no sería necesario.
Pues sí, ya no es necesario montar la partición porque ahora el contenido de una imagen EXT4 puede ser extraído, modificado y reempacado.
Pero como se trata de un volcado, la partición original tiene que ser sustituida por la modificada.
En este aspecto no estamos hablando de archivos ISO, sino de imágenes EXT4, tampoco de un firmware, sino de un volcado o copia del contenido de la memoria e-MMC.
Un firmware puede ser instalado mediante una memoria USB, pero un volcado se tiene que grabar directamente a la e-MMC.
No obstante, al empaquetar con Mstar Dump Extractor v4.2, parece que no tiene efecto lo que hace Make Image RC2.
Sobre esto no podría darte una respuesta clara porque no sé qué fue lo que hiciste ni cómo lo hiciste.
Sin embargo, para modificar la partición de un volcado no es necesario que uses Make Image, con MStar Dump Extractor es suficiente.
Una vez que extraes el contenido de la imagen y la editas, lo que sigue es inyectarla en el volcado.
Esta acción es la que reemplaza la partición original en el volcado por la modificada.
¿Podrías orientarme sobre qué utilizar para modificar mi volcado y volverlo a instalar con la RT809H?
Únicamente se requiere MStar Dump Extractor.
Si modificas un archivo de texto como los *.ini, en Windows 10 se requiere NotePad++, en Windows 11 se puede usar NotePad directamente.
Para los archivos gráficos, el editor que más te guste, porque en este aspecto no importa que la imagen cambie de tamaño, solo que mantenga las mismas dimensiones, incluso puede ser reemplazada.
Para otro tipo de archivos, pues un editor hexadecimal o depende del archivo que se trate.

Ten en cuenta esto para evitar confusiones...
Un firmware se instala, pero un volcado se graba.
 
Pues sí, ya no es necesario montar la partición porque ahora el contenido de una imagen EXT4 puede ser extraído, modificado y reempacado.
Pero como se trata de un volcado, la partición original tiene que ser sustituida por la modificada.
En este aspecto no estamos hablando de archivos ISO, sino de imágenes EXT4, tampoco de un firmware, sino de un volcado o copia del contenido de la memoria e-MMC.
Un firmware puede ser instalado mediante una memoria USB, pero un volcado se tiene que grabar directamente a la e-MMC.

Sobre esto no podría darte una respuesta clara porque no sé qué fue lo que hiciste ni cómo lo hiciste.
Sin embargo, para modificar la partición de un volcado no es necesario que uses Make Image, con MStar Dump Extractor es suficiente.
Una vez que extraes el contenido de la imagen y la editas, lo que sigue es inyectarla en el volcado.
Esta acción es la que reemplaza la partición original en el volcado por la modificada.

Únicamente se requiere MStar Dump Extractor.
Si modificas un archivo de texto como los *.ini, en Windows 10 se requiere NotePad++, en Windows 11 se puede usar NotePad directamente.
Para los archivos gráficos, el editor que más te guste, porque en este aspecto no importa que la imagen cambie de tamaño, solo que mantenga las mismas dimensiones, incluso puede ser reemplazada.
Para otro tipo de archivos, pues un editor hexadecimal o depende del archivo que se trate.

Ten en cuenta esto para evitar confusiones...
Un firmware se instala, pero un volcado se graba.
Muchas gracias por su pronta respuesta. Ya sé que con MStar Dump Extractor es suficiente, y creo que el error que tenía era porque no estaba usando Notepad++. Mañana, si tengo tiempo, volveré a intentar, porque cargué el volcado con la RT809H unas cuatro veces y el televisor intentaba encender, apagando el LED de standby y volviendo a encenderse a los pocos segundos, indicando que no podía terminar de arrancar.
 
Atrás
Arriba