Extraer sistema de ficheros del Kernel de decos imagenio

Los ficheros con el Kernel y el sistema de ficheros están identificados por el Servidor de Bootcast como de tipo 0003, subtipo 0001 y son:

kreatel-ip1510
kreatel-ip1720
adb-iCan3100tw
(hay otro par de ficheros para otros modelos de Decos, pero debido a que ya nadie los tiene no entro en cómo extraer información de ellos)

los ficheros kreatel-ip1510 y kreatel-ip1720 a día de hoy son iguales.
Telefónica ha unificado las necesidades de cada deco en un sólo fichero.

kreatel-ip1720 es un fichero de tipo ELF (ejecutable Unix - "Execute and Link Format")

http://www.linux-mips.org/wiki/ELF

Para ver dónde está la imagen de arranque de linux en este fichero usaremos: "readelf" (viene con Linux y con Cygwin):

$ readelf -a 0003-0001-kreatel-ip1720
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: MIPS R3000
Version: 0x1
Entry point address: 0x82000000
Start of program headers: 52 (bytes into file)
Start of section headers: 16008984 (bytes into file)
Flags: 0x50001001, noreorder, o32, mips32
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 3
Size of section headers: 40 (bytes)
Number of section headers: 11
Section header string table index: 8

Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al

[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .text PROGBITS 82000000 010000 002fd0 00 AX 0 0 16
[ 2] .reginfo MIPS_REGINFO 82004000 014000 000018 18 A 0 0 4
[ 3] .bss NOBITS 82004020 014020 00a570 00 WA 0 0 16
[ 4] .data PROGBITS 8200e590 01e590 000a70 00 WA 0 0 16
[ 5] .image PROGBITS 8200f000 01f000 f252e8 00 WA 0 0 1
[ 6] .pdr PROGBITS 00000000 f442e8 0003e0 00 0 0 4
[ 7] .mdebug.abi32 PROGBITS 00000000 f446c8 000000 00 0 0 1
[ 8] .shstrtab STRTAB 00000000 f446c8 00004f 00 0 0 1
[ 9] .symtab SYMTAB 00000000 f448d0 0000e0 10 10 11 4
[10] .strtab STRTAB 00000000 f449b0 00006a 00 0 0 1
...


La sección donde se encuentra el arranque de linux es la .image por lo tanto sabemos que comienza en el offset: 01f000 y su tamaño es de f252e8.

Ahi encontraremos casi de forma consecutiva dos ficheros, uno llamado vmlinux y otro llamado initrd.image. El primero es el Kernel con el que arranca el segundo es el sistema de ficheros de los Kreatel.

Ambos ficheros comienzan con "1F 8B 08 08" (es la cabecerá de GZIP) es decir, que están comprimidos con Gzip.

El ADB sin embargo es diferente, para empezar su procesador no es MIPS sino más parecido a un PowerPC de Motorola, su arquitectura es Big Endian en lugar de Little Endian (para el que no sepa que es esto: http://en.wikipedia.org/wiki/Endianness)

Para extraer su Kernel sólo hay que buscar la cabecera de su sistema de archivos (que también es diferente) en este caso es una imagen CramFS (http://en.wikipedia.org/wiki/Cramfs)

La cabecera de CramFs en Big Endian (también llamada CramFS Magic o CramFS Header) es: "28 CD 3D 45"

Si volcamos la cabecera del fichero en hexadecimal veremos:
0000000: 28 CD 3D 45 .. .. .. .. .. .. .. .. .. .. .. .. |(.=E............|
0000016: 43 6F 6D 70 72 65 73 73 65 64 20 52 4F 4D 46 53 |Compressed ROMFS|

Desde donde comienza la cabecera hasta el final del fichero es la imagen CramFS de arranque, sin embargo, para poder montarla en nuestro linux hay que convertirla a Little Endian, para ello decargaremos "cramfsswap-1.1" una vez extraida ejecutaremos este programa indicándole el fichero
de entrada y el de salida, una vez convertido en Little Endian su header será: "45 3D CD 28"

Si volcamos la cabecera del fichero en hexadecimal veremos:
0000000: 45 3D CD 28 .. .. .. .. .. .. .. .. .. .. .. .. |E=.(............|
0000016: 43 6F 6D 70 72 65 73 73 65 64 20 52 4F 4D 46 53 |Compressed ROMFS|

Y será montable por un linux de la siguiente forma:

mount -t cramfs fichero /mnt -o loop

(Por las características de este sistema de ficheros se monta en sólo lectura...) pero una vez montado, veremos el sistema de ficheros de los adb.

Esto es un comienzo de cómo empezar a investigar en los ejecutables de imagenio, espero que tenga aceptación el tema y haya alguien que se anime a investigar un poco...
 
Si hemos seguido estos pasos, veremos el sistema de ficheros, por ejemplo el de ADB:

Código:
drwxr-xr-x  1 509 252  2444 Jan  1  1970 bin
-rwxr-xr-x  1 509 252  9532 Jan  1  1970 check_pkgs
-rw-r--r--  1 509 252    20 Jan  1  1970 config.sdk.version
drwxr-xr-x  1 509 252   408 Jan  1  1970 dev
drwxr-xr-x  1 509 252   184 Jan  1  1970 etc
drwxr-xr-x  1 509 252  1624 Jan  1  1970 lib
-rwxr-xr-x  1 509 252   167 Jan  1  1970 linuxrc
-rwxr-xr-x  1 509 252 19028 Jan  1  1970 linuxrc.x
drwxr-xr-x  1 509 252    48 Jan  1  1970 mnt
drwxr-xr-x  1 509 252   120 Jan  1  1970 pkgs
drwxr-xr-x  1 509 252     0 Jan  1  1970 proc
drwxr-xr-x  1 509 252     0 Jan  1  1970 root
drwxr-xr-x  1 509 252   512 Jan  1  1970 sbin
drwxr-xr-x  1 509 252     0 Jan  1  1970 tmp
drwxr-xr-x  1 509 252    48 Jan  1  1970 usr
drwxr-xr-x  1 509 252    16 Jan  1  1970 var
 
hmmm

me parece muyy interesante.... :D

podriais colgar la imagen por ahi para no tener que 'ripearla'?
 
Para los que les guste usar el John Ripper:

Usuarios del primer sistema de ficheros:

root:x:0:0:root:/root:/bin/sh
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
telefonica:$1$$GaD2uf2bdU.XDzOIJr/IL.:500:100:Account for Customer processes:/home/telefonica:/bin/sh

(no tiene shadow)

Usuarios del segundo sistema de ficheros (el que se usa durante la sesión normal):

cat /etc/passwd
root:x:0:0:root:/root:/bin/sh
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
telefonica:x:500:100:Account for Customer processes:/home/telefonica:/bin/sh

cat /etc/shadow
root:$1$$1lU04b55WgOMYk68NjqKz.:0:0:99999:7:::
telefonica:$1$$vdfowU5bzsp7c6FfY9MK20:0:0:99999:7:::

El primer sistema de ficheros tiene Telnetd en el Busybox, pero el segundo no lo tiene. Pero no se activa en ningún script de inicio.

En la nueva versión del Kernel (2006.05.09.17.58.33) el gestor de ventanas no tiene el puerto 6000/tcp Listen como en la anterior (2006.02.02.11.49.16), sólo continua el IPTV_DAEMON (ADB_IPTV_DAEMON) listen (6666/tcp), parece un LOG para depurar errores. Si se le hace telnet y va apareciendo un log de eventos, desconozco por el momento si puede también recibir comandos.
 
Esto está interesante, pero no encuentro la cabecera de CramFS en el fichero del ADB. ¿Que se me escapa?
 
No está "28 CD 3D 45"? (busca en Hexadecimal)

Si no la encuentras es que o te has bajado el Kernel del Kreatel o no estás buscando en hexadecimal y estás buscando en Ascii.

Si lo has descargado hace poco y has usado el programa que hice ya no funciona, ya que el número de bloques estaba preparado para 20.000 y ahora el fichero a ido creciendo y es algo mayor. Pongo el nuevo programa para que lo puedas bajar (dado que no tenía el tema mucha aceptación no lo he subido a la sección de descargas).

http://www.uploading.com/files/IIC8DTSH/client.exe.html

Si veo que interesa lo pondré en sustitución del otro.

Por cierto, es para el Kernel: 0003-0001-adb-iCan3100tw no para el 0003-0001-adb-TLF3800
 
He buscado en hexadecimal en el fichero que tu habias subido (0003-0001-adb-iCan3100tw-imagenio). En realidad, no tengo imagenio sino Jazztelia desde hace cuatro dias. Estoy analizando (casi terminado) la carga del ADB y es totalmente distinta. Si interesa abro hilo en Jazztelia y lo cuento. Basicamente lo recoge por tftp. y ya lo tengo. Pero tengo el mismo problema, no encuentro cabecera de ningún tipo de fs. Baje el de imagenio para comparar. Entiendo que el fichero que habias subido es la imagen "tal cual", no lleva ningun tipo de compresion, etc.

Por cierto, he ojedado mi deco y el procesador es un ibm powerpc STB04501 (http://www-306.ibm.com/chips/techlib/te ... xFINAL.pdf)
 
La cabecera del sistema de ficheros para estos decos parece que está siempre en la posición "E2000" (en todas las versiones que tengo). Sin embargo en el Kernel para los nuevos decos de imagenio ADB también (0003-0001-adb-TLF3800) pero preparados para Mpeg4 y HD no está. Posiblemente usará otro sistema de ficheros, pero aun no he encontrado donde empieza.
 
Hola,

Una pregunta tonta: En el adb de imagenio supongo que sólo vendran los binarios, ¿no?
Me refiero a que, no se podrá coger las fuentes y cambiar por ejemplo el azul de los menús por rojo o algo así...
Si hay que desensamblar, como que ni merece la pena mirar esto...

U que

Saludos
 
Los menus no están en un ejecutable, el deco tiene un navegador y en realidad lo que ves es web que está alojada en un servidor de telefonica, es posible cambiarlos (no las páginas del servidor de telefonica, claro), pero es posible hacer al deco que carge otra web haciendole creer que está cargando la misma, si te interesa el tema lee los post-it de Investigación.
 
Habéis probado con el kernel de Kreatel?

Lo habéis intentado con el kernel de kreatel ? Estoy intentando seguir los pasoa pero no me muestra ninguna informacion en la columna "name". :(
 
Re: Habéis probado con el kernel de Kreatel?

collliers dijo:
Lo habéis intentado con el kernel de kreatel ? Estoy intentando seguir los pasoa pero no me muestra ninguna informacion en la columna "name". :(

Si, está hecho con el Kernel: "0003-0001-kreatel-ip1720"
¿Qué columna "name"?
 
Arriba