Descomprimir archivos de configuración lzw

Descomprimir lzw

Algunos routers usan archivos de configuración comprimidos por lzw.

No existe demasiada información en la web para poder descomprimirlos, pero algo hay, en particular:

https://www.ip-phone-forum.de/threads/o2-homebox-6641-daten-auslesen.273298/page-4

Se usa la librería lzw en python, y con unos sencillos pasos se descomprime.

El comienzo de este tipo de archivos es del tipo:

<compresed alg=lzw len=xxxxx> ... <crc=0xXXXXXX>

En la siguiente imagen puede verse:

Hay que recortar todo el comienzo del archivo hasta el byte que comienza con 80 (cualquier editor hex nos valdrá)

Se guarda el archivo y se descomprime con python (instalamos primero el módulo lzw)

y ejecutamos el código para descomprimir, sencillo, indicamos un archivo de salida. El error hay que obviarlo, todo se genera bien.

Y el archivo descomprimido:

Volver a comprimir lzw

Ahora lo ideal sería cambiar cualquier parámetro del archivo descomprimdo, recomprimirlo y subirlo al router, sin embargo he encontrado alguna dificultad (no lo he conseguido). Tenemos que calcular el crc y la longitud del archivo. La longitud del archivo indicada en ‘len=’ es justo la del archivo recortado, pero el crc es calculado de alguna manera que desconozco por ahora.

Comprobación de que el valor “len” del archivo original del router, coincide con el calculado por el comando “cksum” con el archivo original del router al quitarle los bytes iniciales hasta el byte “80”, el CRC no coincide

 

Para volver a comprimir hay que hacer algo parecido a la descompresión [morebytes=lzw.compres(mybytes) ]

Nos crea un archivo con , donde puede inferirse unos bytes de cabecera comunes (comprimiendo distintos archivos se repiten) antes del byte “80”. Recortando y añadiendo los bytes “<compressed….  >” podría valer, pero el crc hay que calcularlo como lo hace el router (de momento en mis pruebas el router “casca”)

 

.

 

 

 

Leave a Reply

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.