Estructura del checksum del firmware

16 f , 2005

Como esta estructurado el checksum

El problema era encontrar la relacion entre estos dos numeros

Checksum d0dd 1c00
Tamaño 001c ddd0

Asi a priori parece bastante dificil… y lo unico que he encontrado ha sido una relacion de imagenes especulares pero intercambiando los dos ultimos numeros ;) como veis un método de lo mas informático

Primero voy a asegurarme de que las cosas son exactamente como dicen en seattlewireless

hexdump F5D7130_4.03.03.bin | less

0000000 4f4c 4441 dcc3 0014 8728 6367 8000 0000
(…)

Tamaño 0014 dcc3
Cheksum dcc3 0014

mmm… esto tiene mucha mejor pinta, vamos a ver como esta el cheksum en otro firmware, por ejemplo el 7330…

hexdump BELKIN_EB_USA_1.00.09 | less

0000000 4f4c 4441 ed47 0014
(…)

Tamaño 0014 ed47
Cheksum ed47 0014

Se confirma la estructura…

Por lo tanto es un error en la pagina de seattlewireless… cuando compruebas el tamaño con hexdump solo tienes que añadirle ceros, separar los bytes en 4 y cambiar los cuatro primeros por los cuatro segundos.

veamos ahora como estan las cosas en mi nuevo firmware

hexdump 7130_LOAD.dump | less

0000000 4f4c 4441 dcc3 0014
(…)

Tamaño 001e 2cc3

La cabecera deberia comenzar del siguiente modo

0000000 4f4c 4441 2cc3 001e
(…)

Pero tenemos un problema y es que no conozco ningun editor hexadecimal adecuado… tratare de buscar algo y mañana cuando cambie el checksum tendre el firmware preparado para ser introducido en el AP

Añadiendo la cabecera y ajustando el checksum…

No se si habra alguna manera alternativa de hacerlo, pero la unica que yo conozco es la de añadir el archivo trx+nvar sobre el dump del LOAD:

dd if=Desktop/belkin\ firmware\ project/7130.trx of=Desktop/belkin\ firmware\ project/7130_LOAD.dump bs=1 seek=28

Cuando comprobamos con hexdump todo esta como deberia.

Como comentario adicional debo indicar que al final el archivo no ha quedado tan grande como me temi en un principio, “sólo” ha crecido 600Kb desde el archivo original, eso posiblemente se deba a que aunque el archivo busybox que le he añadido es un binario debe tener algun tipo de compresion al meterlo en el sistema de archivos del cramfs. Me alegra bastante comprobar que el firmware mas grande de los que tengo que acepta el AP (F5D7230-4_4.03.03.bin) es solo 100Kb mas pequeño que el mio.

Ahora solo nos queda ajustar el checksum del tamaño y eso segun la pagina del seattlewireless se encuentra en el LOAD.

Textualmente de seattlewireless:
“adjust accordingly the four bytes at offset 4 (these indicates the length of the file). Note that it is in little endian (least signifiant bit first). In the 3.00.07 firmware it is “d0dd1c00″ which corresponds to 0x001cddd0, the total size of the file.”

Esta frase me deja un poco descolocado y perdido asi que lo consultare en la lista de salamancawireless… por ahora me quedo con mi firmware sin poderlo subir via web… exactamente con el siguiente error:

Error(4) about checksum during file uploaded

colara por tftp?? comprueba el tftp el checksum? posiblemente si, pero solo hay una manera de saberlo…

La respuesta es NO, tampoco se lo ha tragado, confio en que el unico problema sea el cheksum… aunque despues de todo lo que he estado haciendo no hay manera de saberlo, espero tener respuesta pronto a la cuestion del checksum