Ver las NORMAS de estos Foros Web ZackYFileS Chat ZackYFileS Agregar a Favoritos Contactar con Administrador
 
 

TU PUBLICIDAD AQUÍ!!
Navegación
Retroceder   Foros ZackYFileS >
RECEPTORES de SATÉLITE e IPTV:
> FTE MAXIMAL / COMAG > SILVERCREST SL65 / COMAGSL35chipB1 > 6 PINES
Nombre de usuario
Contraseña
Configuración de UsuarioAyuda (FAQs)Nuevos PostsBuscar


Respuesta
 
Herramientas
Antiguo 02/02/2008, 21:29   #1
SantiPHREACK 
Usuario PREMIUM+
 
Fecha de ingreso: 13/abr/2006
Mensajes: 223
SantiPHREACK está en el buen camino
Análisis e Investigación de los Firms de moresat

Wenas a todos xD

Como sabéis, los firms de MoreSat para los [B][I]FTE MAX-S[/I][/B] no podemos Fixearlos ni adaptarlos a nuestros decos, debido a que desde hace algo mas de un año vienen con su [B][I]"Maincode" cifrados[/I][/B], con lo cual, hasta que no demos con el método de poder ponerlos en claro y desempaquetarlos correctamente, no se podría hacer nada con ellos, por eso os pongo este hilo con las conclusiones que he sacado, para ver si entre todos damos con el asunto xD

Primero os explicare el sistema de arranque del deco, que básicamente consiste en que el deco arranca con su "[B][I]Bootloader[/I][/B]" y este es el encargado de descifrar y desempaquetar el maincode, y después de dejarlo en la SDRAM lo inicializa desde allí, con lo cual, el es el encargado de todo el proceso que desconocemos, y es donde deberíamos mirar.

Pero antes de nada, si nos fijamos en el "[B][I]Maincode[/I][/B]", a simple vista deducimos esto:

[CODE]sw_V1.3.7_020208.bin
----------------------------------------------------------------
0x010000: 01FE0101 0007FD7F 0007FF80 C65E9608 .............^..
0x010010: 6D61696E 636F6465 00FFFFFF FFFFFFFF maincode........
0x010020: 312E332E 3700FFFF FFFFFFFF FFFFFFFF 1.3.7...........
0x010030: 32303038 2D322D32 00FFFFFF FFFFFFFF 2008-2-2........
0x010040: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ................
0x010050: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ................
0x010060: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ................
0x010070: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ................
0x010080: [COLOR="Blue"]434F4445[/COLOR] [COLOR="Green"]0007FD07[/COLOR] [B]41C26EA2 2BF012B8[/B] [COLOR="Blue"]CODE[/COLOR]....A.n.+...
0x010090: [B]D6C88E3F F37402B7 076360BF 865C8340[/B] ...?.t...c`..\.@
0x0100A0: [B]62A9ADEC C8A85B0A F10FCF54 DCAB4447[/B] b.....[....T..DG
...

[COLOR="Blue"]434F4445[/COLOR] -> "[COLOR="Blue"]CODE[/COLOR]" -> Cabecera que indica que el maincode esta cifrado
[COLOR="Green"]0007FD07[/COLOR] -> [COLOR="Green"]0x7FD07[/COLOR] = 523.527 Bytes -> Tamaño del bloque cifrado del maincode, a partir del offset "0x010084"
[/CODE]

Lo curioso es que el tamaño de los bytes cifrados es muy parecido al de los maincode empaquetados en "[B][I]Lzma[/I][/B]", de lo cual se deduce que lo que esta cifrado tiene que estar antes comprimido, y seguramente el tamaño seria el mismo, osea que seria un algoritmo de [B][I]cifrado simétrico[/I][/B], en plan XOReo para enmascararlo xD

Pero examinando diferentes versiones de los firms, se ve claramente que los datos cifrados son siempre diferentes, con lo cual se deduce que no es un simple xoreo, (ya que si fuera así, suponiendo que tendrían que tener la cabecera del Lzma, los primeros bytes cifrados serian los mismos entre diferentes versiones), osea que la cosa se complica, y seguramente la diferencia de bytes cifrados sea provocado por que no son del mismo tamaño los maincodes, lo que nos indica que el numero de bytes a cifrar, influye en el resultado, con lo cual tiene que ser un algoritmo que cifra los datos [B][I]por bloques[/I][/B] (como el TEA, DES, AES etc) en modo "[B][I]CBC[/I][/B]", es decir, que dependiendo del tamaño, lo divide en bloques y lo cifra en varias rondas, pero yo me quedaría con el algoritmo "[B][I]TEA[/I][/B]" (que es bastante simple para implementar en microprocesadores y bastante rápido, e incluso fue utilizado en las Xbox y algunos móviles para cifrar sus Bios xD)

Osea que conociendo que utiliza un algoritmo de cifrado simétrico, y que dichos algoritmos necesitan de una "[B][I]Key[/I][/B]" para cifrar y descifrar (que seguramente sera de 32 bits que es a lo que trabaja por bloque la CPU), y dicho descifrado lo realiza el [B][I]bootloader[/I][/B], es de suponer que la clave se encuentre en el, y analizando las diferencias entre los boots "SMT01---0.9.5" (que fue el ultimo en el que no cifraban el maincode) y el "[B][I]SMT01---0.9.6[/I][/B]", simplemente se aprecia un aumento de código de apenas 1Kb

Y desensamblando un trozo de ese código nuevo del boot 0.9.6, nos encontramos con esto:


[CODE]BootLoader_SMT01---0.9.6_(2006-12-7).bin
------------------------------------------------------------
...
0x00D900: 6F35 0C0C -> 0C0C 356F jal 0x00D5BC <...>
0x00D904: D4EE C624 -> 24C6 EED4 addiu a2,a2,61140
0x00D908: F0FF 0624 -> 2406 FFF0 li a2,65520
0x00D90C: 2430 2602 -> 0226 3024 sltu a2,a2,v0
0x00D910: 2130 8602 -> 0286 3021 addu a2,s4,a2
0x00D914: 0001 C624 -> 24C6 0100 addiu a2,a2,256
0x00D918: 2120 8002 -> 0280 2021 move a0,s4
0x00D91C: 09F8 E002 -> 02E0 F809 jalr s7
0x00D920: 2128 C002 -> 02C0 2821 move a1,s6
0x00D924: 0A00 4054 -> 5440 000A bnezl v0,0x00D950 <...>
0x00D928: 21A8 0000 -> 0000 A821 move s5,zero

0x00D92C: 5536 0C08 -> 080C 3655 j 0x00D954 <...>
0x00D930: 2110 A002 -> 02A0 1021 move v0,s5
0x00D934: 2120 4002 -> 0240 2021 move a0,s2
0x00D938: 2128 C002 -> 02C0 2821 move a1,s6
0x00D93C: 09F8 E002 -> 02E0 F809 jalr s7
0x00D940: 2130 8002 -> 0280 3021 move a2,s4
0x00D944: 0100 422C -> 2C42 0001 sltiu v0,v0,1
0x00D948: 2310 0200 -> 0002 1023 negu v0,v0
0x00D94C: 24A8 A202 -> 02A2 A824 and s5,s5,v0
0x00D950: 2110 A002 -> 02A0 1021 move v0,s5
0x00D954: 3000 BF8F -> 8FBF 0030 lw ra,48(sp)
0x00D958: 2C00 B78F -> 8FB7 002C lw s7,44(sp)
0x00D95C: 2800 B68F -> 8FB6 0028 lw s6,40(sp)
0x00D960: 2400 B58F -> 8FB5 0024 lw s5,36(sp)
0x00D964: 2000 B48F -> 8FB4 0020 lw s4,32(sp)
0x00D968: 1C00 B38F -> 8FB3 001C lw s3,28(sp)
0x00D96C: 1800 B28F -> 8FB2 0018 lw s2,24(sp)
0x00D970: 1400 B18F -> 8FB1 0014 lw s1,20(sp)
0x00D974: 1000 B08F -> 8FB0 0010 lw s0,16(sp)
0x00D978: 0800 E003 -> 03E0 0008 jr ra
0x00D97C: 3800 BD27 -> 27BD 0038 addiu sp,sp,56
0x00D980: 0000 A88C -> 8CA8 0000 lw a4,0(a1)
0x00D984: 0400 A98C -> 8CA9 0004 lw a5,4(a1)
0000D988: [B]379E[/B] 0B3C -> 3C0B 9E37 lui a7,[B]0x9E37[/B] // "0x9E37" "0x79B9" -> [B]0x9E3779B9[/B] -> Magic Constant (TEA or RC5)
0000D98C: [B]B979[/B] 6B35 -> 356B 79B9 ori a7,a7,[B]0x79B9[/B] //
0x00D990: 1800 8B00 -> 008B 0018
0x00D994: 1238 0000 -> 0000 3812 mflo a3
0x00D998: 1B00 8010 -> 1080 001B beqz a0,0x00DA08 <...>
0x00D99C: 2150 0000 -> 0000 5021 move a6,zero

0x00D9A0: 0019 0800 -> 0008 1900 sll v1,a4,0x4
0x00D9A4: 4211 0800 -> 0008 1142 sll v0,a3,0x5
0x00D9A8: 2618 6200 -> 0062 1826 xor v1,v1,v0
0x00D9AC: 2118 6800 -> 0068 1821 addu v1,v1,a4
0x00D9B0: 4212 0700 -> 0007 1242 srl v0,a3,0x9
0x00D9B4: 0C00 4230 -> 3042 000C andi v0,v0,0xC
0x00D9B8: 2110 4600 -> 0046 1021 addu v0,v0,a2
0x00D9BC: 0000 428C -> 8C42 0000 lw v0,0(v0)
0x00D9C0: 2110 E200 -> 00E2 1021 addu v0,a3,v0
0x00D9C4: 2618 6200 -> 0062 1826 xor v1,v1,v0
0x00D9C8: 2348 2301 -> 0123 4823 subu a5,a5,v1
0x00D9CC: 2338 EB00 -> 00EB 3823 sltu a3,v0,v1
0x00D9D0: 0019 0900 -> 0009 1900 sll v1,a5,0x4
0x00D9D4: 4211 0900 -> 0009 1142 srl v0,a5,0x5
0x00D9D8: 2618 6200 -> 0062 1826 xor v1,v1,v0
0x00D9DC: 2118 6900 -> 0069 1821 addu v1,v1,a5
0x00D9E0: 0300 E230 -> 30E2 0003 andi v0,a3,0x3
0x00D9E4: 8010 0200 -> 0002 1080 sll v0,v0,0x2
0x00D9E8: 2110 4600 -> 0046 1021 addu v0,v0,a2
0x00D9EC: 0000 428C -> 8C42 0000 lw v0,0(v0)
0x00D9F0: 2110 E200 -> 00E2 1021 addu v0,a3,v0
0x00D9F4: 2618 6200 -> 0062 1826 xor v1,v1,v0
0x00D9F8: 0100 4A25 -> 254A 0001 addiu a6,a6,1
0x00D9FC: 2B10 4401 -> 0144 102B sltu v0,a6,a0

0x00DA00: E7FF 4014 -> 1440 FFE7 bnez v0,0x00D9A0 <...>
0x00DA04: 2340 0301 -> 0103 4023 subu a4,a4,v1
0x00DA08: 0000 A8AC -> ACA8 0000 sw a4,0(a1)
0x00DA0C: 0800 E003 -> 03E0 0008 jr ra
0x00DA10: 0400 A9AC -> ACA9 0004 sw a5,4(a1)

0x00DA14: E0FF BD27 -> 27BD FFE0 addiu sp,sp,-32
0x00DA18: 1C00 BFAF -> AFBF 001C sw ra,28(sp)
0x00DA1C: 1800 B0AF -> AFB0 0018 sw s0,24(sp)
0x00DA20: 2130 8000 -> 0080 3021 move a2,a0
0x00DA24: 2180 A000 -> 00A0 8021 move s0,a1
0x00DA28: 0300 0392 -> 9203 0003 lbu v1,3(s0)
0x00DA2C: 001E 0300 -> 0003 1E00 sll v1,v1,0x18
0x00DA30: 0200 0292 -> 9202 0002 lbu v0,2(s0)
0x00DA34: 0014 0200 -> 0002 1400 sll v0,v0,0x10
0x00DA38: 2518 6200 -> 0062 1825 or v1,v1,v0
0x00DA3C: 0100 0292 -> 9202 0001 lbu v0,1(s0)
0x00DA40: 0012 0200 -> 0002 1200 sll v0,v0,0x8
0x00DA44: 2518 6200 -> 0062 1825 or v1,v1,v0
0x00DA48: 0000 0292 -> 9202 0000 lbu v0,0(s0)
0x00DA4C: 2518 6200 -> 0062 1825 or v1,v1,v0
...
[/CODE]


Y sorpresa, en los [I][B]Offsets "0xD988" y "0xD98C"[/B][/I] nos aparece un dato importante para identificar el algoritmo xD, y es la [B][I]"Magic Constant" 0x9E3779B9[/I][/B] que usa el TEA, XTEA y el RC5, osea que confirma mis deducciones jeje, con lo cual, esa constante "mágica" es la que se usa para la expansión de la supuesta "key", para generar las subclaves y que serian las encargadas de desencriptar el "Maincode" mediante rondas de sumas modulares y xoreos, y una vez desencrpiptado nos daria como resultado su Maincode empaquetado en LZMA, que es el que nos interesa xD

Osea que sabiendo el algoritmo que usa, solo necesitamos la clave para aplicárselo, y que tiene que estar en el boot por narices, jeje

[B]PD:[/B] Luego me pondré a hacer algunas pruebas, y en caso de que no sean satisfactorias, me pondré a intentar realizar volcados
de SDRAM para ver si doy con la clave necesaria, ya os contare xD

[B]PD2:[/B] Cualquier ayuda para hallar el método para descifrarlos es bien venido, aquí os dejo unos links interesantes de la Wikipedia xD
[URL="http://es.wikipedia.org/wiki/Cifrado_por_bloques"]http://es.wikipedia.org/wiki/Cifrado_por_bloques[/URL]
[URL="http://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm"]http://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm[/URL]

Última edición por SantiPHREACK; 03/02/2008 a las 03:24.
SantiPHREACK está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Publicidad: Conoce las ofertas de ANUNCIATE
Antiguo 02/02/2008, 22:06   #2
barrigaverde 
Usuario PREMIUM+
 
Avatar de barrigaverde
 
Fecha de ingreso: 26/mar/2006
Mensajes: 3.552
barrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todos
saludos santi he esta mirando todo lo que has expuesto y sobre el tamoño del bloque segun en la wikipedia habla de esto:

Cita:
aplicándoles una transformación invariante. Cuando realiza cifrado, una unidad de cifrado por bloques toma un bloque de texto en claro como entrada y produce un bloque de igual tamaño de texto cifrado
como observas si ha utilizado esta forma es entonces el motivo de que el bloque tenga el mismo tamaño no???

si tienes el bootloader desensamblado y se puede pillar pues miraremos haber en que podemos ayudar de todas forma menuda currada te pegas santi saludos
barrigaverde está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 02/02/2008, 22:09   #3
Manub
Usuario Activo
 
Fecha de ingreso: 03/nov/2003
Mensajes: 371
Manub está en el buen camino
Como siempre Santi nos dejas tiesos de panico lo que controlas tio, ojalà te vaya bien y confirmes tu teorìa, serìa un paso de gigante, la verdad es que a veces ni con sacacorchos, puesto que los fabricantes procuran no se filtre nada, si no fuese por los estudios esto serìa un caos, ¡¡gracias y gracias y gracias!.

Slu2.
Manub está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 02/02/2008, 23:01   #4
vishero 
ZFU-4788-02
 
Fecha de ingreso: 27/dic/2002
Mensajes: 1.146
vishero es realmente agradablevishero es realmente agradablevishero es realmente agradablevishero es realmente agradable
Como te gusta esto, eh!....

sl2
__________________
vishero está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 03/02/2008, 12:33   #5
jubamo 
Usuario PREMIUM+
 
Avatar de jubamo
 
Fecha de ingreso: 15/ago/2006
Mensajes: 420
jubamo es como un diamante en brutojubamo es como un diamante en brutojubamo es como un diamante en brutojubamo es como un diamante en bruto
Esto es sobre el XTEA de la Wikipedia:
http://en.wikipedia.org/wiki/XTEA

Código:
 
void decipher(unsigned int num_rounds, unsigned long* v, unsigned long* k) {
    unsigned long v0=v[0], v1=v[1], i;
    unsigned long delta=0x9E3779B9, sum=delta*num_rounds;
    for(i=0; i<num_rounds; i++) {
        v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]);
        sum -= delta;
        v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]);
    }
    v[0]=v0; v[1]=v1;
}

Y aquí una composición con el desensamblado del bootloader de "MAX_S_v137_071017.bin":
[CODE]ROM:BFC0DD90 lw $t0, 0($a1)
ROM:BFC0DD94 lw $t1, 4($a1)
[COLOR="DarkRed"][B]unsigned long delta=0x9E3779B9, sum=delta*num_rounds;[/B][/COLOR]
ROM:BFC0DD98 li $t3, 0x9E3779B9
ROM:BFC0DDA0 mult $a0, $t3
ROM:BFC0DDA4 mflo $a3
ROM:BFC0DDA8 beqz $a0, loc_BFC0DE18
ROM:BFC0DDAC move $t2, $0
ROM:BFC0DDB0
ROM:BFC0DDB0 loc_BFC0DDB0: # CODE XREF: ROM:BFC0DE10j
[COLOR="DarkRed"][B] v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]);[/B][/COLOR]
ROM:BFC0DDB0 sll $v1, $t0, 4
ROM:BFC0DDB4 srl $v0, $t0, 5
ROM:BFC0DDB8 xor $v1, $v0
ROM:BFC0DDBC addu $v1, $t0
ROM:BFC0DDC0 srl $v0, $a3, [COLOR="MediumTurquoise"]9[/COLOR]
ROM:BFC0DDC4 andi $v0, [COLOR="MediumTurquoise"]0xC[/COLOR]
ROM:BFC0DDC8 addu $v0, $a2
ROM:BFC0DDCC lw $v0, 0($v0)
ROM:BFC0DDD0 addu $v0, $a3, $v0
ROM:BFC0DDD4 xor $v1, $v0
[COLOR="DarkRed"][B] sum -= delta;[/B][/COLOR]
ROM:BFC0DDD8 subu $t1, $v1
ROM:BFC0DDDC subu $a3, $t3
[COLOR="DarkRed"] [B]v0 -= ((v1 << 4 ^ v1 >> 5) + v1) ^ (sum + k[sum & 3]);[/B][/COLOR]
ROM:BFC0DDE0 sll $v1, $t1, 4
ROM:BFC0DDE4 srl $v0, $t1, 5
ROM:BFC0DDE8 xor $v1, $v0
ROM:BFC0DDEC addu $v1, $t1
ROM:BFC0DDF0 andi $v0, $a3, 3
ROM:BFC0DDF4 sll $v0, 2
ROM:BFC0DDF8 addu $v0, $a2
ROM:BFC0DDFC lw $v0, 0($v0)
ROM:BFC0DE00 addu $v0, $a3, $v0
ROM:BFC0DE04 xor $v1, $v0
[B][COLOR="DarkRed"]for(i=0; i<num_rounds; i++) [/COLOR][/B]
ROM:BFC0DE08 addiu $t2, 1
ROM:BFC0DE0C sltu $v0, $t2, $a0
ROM:BFC0DE10 bnez $v0, loc_BFC0DDB0
ROM:BFC0DE14 subu $t0, $v1
ROM:BFC0DE18
ROM:BFC0DE18 loc_BFC0DE18: # CODE XREF: ROM:BFC0DDA8j
ROM:BFC0DE18 sw $t0, 0($a1)
ROM:BFC0DE1C jr $ra
ROM:BFC0DE20 sw $t1, 4($a1)[/CODE]


Pues salvo ligeras diferencias es muy similar al código escrito en "C" para desencriptar mediante XTEA y explicado en la wikipedia.

Saludos Santi.
jubamo está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 03/02/2008, 19:37   #6
SantiPHREACK 
Usuario PREMIUM+
 
Fecha de ingreso: 13/abr/2006
Mensajes: 223
SantiPHREACK está en el buen camino
Wenas @Junbamo, me alegra leerte xD

Muchísimas gracias por tu desensamblado, ya que si te fijas en el mio, esta echo a mano y tiene muchísimos errores, por eso no me aclaraba xD

Y efectivamente es mas parecido al [B][I]XTEA[/I][/B], exceptuando ese desplazamiento a la derecha de 9 bytes en vez de 11 y el AND de 0xC que le hace en vez de 3, y he tu has marcado en azul.

Y que según su juego de instrucciones quedaría así, aunque no estoy seguro

[CODE] for(i=0; i<num_rounds; i++) {
v1 -= ((v0 << 4 ^ v0 >> 5) + v0) ^ (sum + k[(sum >>[COLOR="Blue"] 9[/COLOR] & [COLOR="Blue"]12[/COLOR]) + a2]);
sum -= delta;
v0 -= ((v1 << 4 ^ v1 >> 5) + v1) ^ (sum + k[(sum [COLOR="Blue"]<< 2[/COLOR] & 3) + a2]);
}[/CODE]
Osea que seguramente sera una pequeña variación que le han realizado a ese algoritmo para salirse del estándar, lo que no tengo claro es si necesitaría algún vector de inicio determinado para realizar el primer xoreo y si el numero de rondas viene definido.

[B]PD:[/B] Otra cosa, hace ya barios meses, el señor "[B][I]Lemrid[/I][/B]" subió al Upload-5 un bonito Dump completo de la SDRAM de uno de estos firms de moresat, con el nombre de "[B][I]RamDump.zip[/I][/B]" xD
Le estoy echando un vistazo y por fecha y tamaño del maincode coincide con el "sw_V1.3.6_072407.bin" y aparte de tener el maincode desempaquetado, se ven varias cosas interesantes jeje, luego os cuento xD
SantiPHREACK está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 04/02/2008, 14:10   #7
barrigaverde 
Usuario PREMIUM+
 
Avatar de barrigaverde
 
Fecha de ingreso: 26/mar/2006
Mensajes: 3.552
barrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todos
saludos santi en cuanto ha este drump:

[QUOTE] Otra cosa, hace ya barios meses, el señor "Lemrid" subió al Upload-5 un bonito Dump completo de la SDRAM de uno de estos firms de moresat, con el nombre de "RamDump.zip" xD
Le estoy echando un vistazo y por fecha y tamaño del maincode coincide con el "sw_V1.3.6_072407.bin" y aparte de tener el maincode desempaquetado, se ven varias cosas interesantes jeje, luego os cuento [/QUOTE]

lo he mirado con ida fre que tengo y he observado la zona de los mandos compatibles como el universal 2005 set por ejejmplo y un detalle que me ha resultado chocante hay una lista de receptores en la que esta incluido el sl65s y el sl35s esto que significa que esta excluido o que es compatible con este fichero????

ademas me he bajado uno de de los ultimos y he mirado el boot y pone algo de que esta comprimido en gzip con este ida no obsevo eso detalle que mencionais por que motivo que realizo mal???

Última edición por barrigaverde; 04/02/2008 a las 14:13.
barrigaverde está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 04/02/2008, 17:12   #8
SantiPHREACK 
Usuario PREMIUM+
 
Fecha de ingreso: 13/abr/2006
Mensajes: 223
SantiPHREACK está en el buen camino
Cita:
Iniciado por barrigaverde Ver mensaje
saludos santi en cuanto ha este drump:

lo he mirado con ida fre que tengo y he observado la zona de los mandos compatibles como el universal 2005 set por ejejmplo y un detalle que me ha resultado chocante hay una lista de receptores en la que esta incluido el sl65s y el sl35s esto que significa que esta excluido o que es compatible con este fichero????

ademas me he bajado uno de de los ultimos y he mirado el boot y pone algo de que esta comprimido en gzip con este ida no obsevo eso detalle que mencionais por que motivo que realizo mal???
Wenas Barigaverde

Te intentare responder por partes.

Respecto a lo que comentas de lo de la lista de receptores y lo del mando, que has visto en ese RamDump, no te compliques, ya que lo que se pretende en este hilo es intentar hallar la forma de descifrar esos maincodes, y una vez que se halle la forma, ya se miraría con calma lo de adaptarlos a nuestros decos, la cuestión es intentar entender el algoritmo que utilizan esos boots y sacar sus claves, el resto no seria mucho problema xD

Y respecto a que en el boot pone lo de gzip es porque esos boot soportan la descompresión de los dos formatos, pero los de moresat cifrados realmente son [B]lzma[/B], ya que si te fijas en ese "RamDump" en el [B]Offset 0x00400000[/B] se ve claramente la cabecera y parte de su maincode descifrado pero sin desempaquetar aun, lo que pasa que al estar machacado, solo se le puede extraer en claro apenas unos 300 bytes, pero algo es algo, y eso seria otro tema a parte, por si no se da con la clave secreta, intentar utilizarlo de forma inversa

Pero a lo que me refería de que se ven cosas interesantes en ese [B]RamDump[/B], me refería a cosas como estas xD

[CODE]sw_V1.3.6_072407__RamDump.bin
------------------------------------------------------------------
...
0x00195690: FF000000 01000000 00000000 00000000 ................
0x001956A0: [B][COLOR="DarkSlateBlue"]44415441[/COLOR][/B] 00000000 [B][COLOR="Red"]434F4445[/COLOR][/B] 00000000 [COLOR="DarkSlateBlue"][B]DATA[/B][/COLOR]....[COLOR="Red"][B]CODE[/B][/COLOR]....
0x001956B0: FFFF0000 [B][COLOR="SeaGreen"]6351E1B7[/COLOR][/B] [B][COLOR="Blue"]B979379E[/COLOR][/B] 01000000 ....cQ...y7.....
0x001956C0: 03000000 05000500 00000000 FFFFFFFF ................
0x001956D0: 01000000 00000000 00000000 00000000 ................
0x001956E0: 00000000 9E200000 00000000 01030002 ..... ..........
0x001956F0: 11000000 84D63A1F 25B17DF7 02040304 ......:.%.}.....
0x00195700: 05070607 03010506 00010002 0008031F ................
0x00195710: 0632120C 772BC8EE 2FD32229 00020106 .2..w+../.")....
0x00195720: 04050703 04000000 00000000 00000000 ................
0x00195730: 06000000 04000000 00000000 00000000 ................
...
------------------------------------------------------------------

[COLOR="SeaGreen"][B]6351E1B7 -> 0xB7E15163[/B][/COLOR] -> Magic Constant RC5 ??
[B][COLOR="Blue"]B979379E -> 0x9E3779B9[/COLOR][/B] -> Magic Constant XTEA
[/CODE]



[CODE]sw_V1.3.6_072407__RamDump.bin
------------------------------------------------------------------
...
0x0031C450: 1D7682D9 0CDF3080 E0A50100 0000C0BF .v....0.........
0x0031C460: 01000000 FFFFFFFF D9030000 00000000 ................
0x0031C470: E00F3280 [B][COLOR="Red"]75FD0700[/COLOR][/B] [B][COLOR="Green"]8000C1BF[/COLOR][/B] 0E000000 ..2.u...........
0x0031C480: 01000000 585C3080 687D3080 10000000 ....X\0.h}0.....
0x0031C490: 00000000 1E000000 03000000 D8084880 ..............H.
0x0031C4A0: E4C43180 00000000 68711900 70FE4780 ..1.....hq..p.G.
0x0031C4B0: 805E3080 0E000000 30000000 3C000000 .^0.....0...<...
0x0031C4C0: 50711900 86FE4780 40000000 01000000 Pq....G.@.......
0x0031C4D0: 74613080 D8E23080 30E33080 D4EE3080 ta0...0.0.0...0.
0x0031C4E0: 00003180 75FD4780 0D005080 [COLOR="Magenta"]A17FB19B[/COLOR] ..1.u.G...P.....
0x0031C4F0: 00000000 00000000 C3000000 01000000 ................
0x0031C500: 08000000 28000000 03000000 00000000 ....(...........
0x0031C510: 96C53180 70FE4780 [B][COLOR="Red"]75FD0700[/COLOR][/B] [B][COLOR="Green"]8000C1BF[/COLOR][/B] ..1.p.G.u.......
0x0031C520: 00003180 00004080 01000000 00020080 ..1...@.........
0x0031C530: C8583080 FFFFFFDF 90593080 F8FF3F80 .X0......Y0...?.
0x0031C540: 74D63080 03000000 00020080 0E000000 t.0.............
0x0031C550: 487D3080 [COLOR="Magenta"]00D94F13 E0689817[/COLOR] C8183080 H}0...O..h....0.
0x0031C560: 64C53180 [B][COLOR="Blue"]70711900[/COLOR][/B] 01000000 [B][COLOR="Red"]75FD0700[/COLOR][/B] d.1.pq......u...
0x0031C570: 24D93080 68E23080 FFFFFFFF 00003180 $.0.h.0.......1.
0x0031C580: 94823080 00020080 0000C1BF 00303280 ..0..........02.
0x0031C590: 01000000 947F3080 02000000 01000000 ......0.........
0x0031C5A0: DCC53180 44673080 [COLOR="Magenta"]C2C24949[/COLOR] 588C3080 ..1.Dg0...IIX.0.
0x0031C5B0: FFFFFFFF 0000FE01 01000000 00000000 ................
...
------------------------------------------------------------------

[COLOR="Blue"][B]70711900[/B][/COLOR] -> 0x00197170 = 1.667.440 bytes (Tamaño Maincode desempaquetado)
[B][COLOR="Red"]75FD0700[/COLOR][/B] -> 0x0007FD75 = 523.637 bytes (Tamaño Maincode empaquetado)
[B][COLOR="Green"]8000C1BF[/COLOR][/B] -> 0xBFC10080 = Offset del Maincode cifrado [/CODE]



Y por ultimo, el código en "[B]C[/B]" del supuesto algoritmo que pusimos, es simplemente una interpretación del desensamblado de lo que interesa del boot, utilizando el [B]juego de instrucciones[/B] de los MIPS, y que en la Wikipedia los tienes
[URL="http://es.wikipedia.org/wiki/MIPS_%28procesador%29"]http://es.wikipedia.org/wiki/MIPS_%28procesador%29[/URL]

Que por cierto, creo que seria mas correcto así:

Código:
    for(i=0; i<num_rounds; i++) {
        v1 -= ((v0 << 4) ^ (v0 >> 5) + v0) ^ (sum + k[(sum >> 9 & 12) + a2]);
        sum -= delta;
        v0 -= ((v1 << 4) ^ (v1 >> 5) + v1) ^ (sum + k[(sum & 3 << 2) + a2]);
    }
[B]PD:[/B] Del [B]IDA Pro[/B], no te puedo ayudar mucho, ya que la versión que yo utilizo, con los MIPS no me termina de funcionar, y por eso estoy realizando los desensamblados a mano poco a poco y con bastantes errores jeje

Luego os pongo otro trocito que hice anoche, y que seria la continuación por arriba del trozo que puso Jubamo, y que seguramente es donde estaría supuesta mente las rondas que debe realizar y la generación de las subclaves.

Última edición por SantiPHREACK; 04/02/2008 a las 17:17.
SantiPHREACK está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 04/02/2008, 18:11   #9
barrigaverde 
Usuario PREMIUM+
 
Avatar de barrigaverde
 
Fecha de ingreso: 26/mar/2006
Mensajes: 3.552
barrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todos
pues nada te comento sin nisiquiera saber como va el ida que bueno me ha parecido que no lo hace del todo bien pero algo se entiende eso de a mano ya me diras con que haber si es que lo tengo y no lo he utilizado de todas formas grs por tu atencion saludos
barrigaverde está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 06/02/2008, 13:48   #10
SantiPHREACK 
Usuario PREMIUM+
 
Fecha de ingreso: 13/abr/2006
Mensajes: 223
SantiPHREACK está en el buen camino
Cita:
Iniciado por barrigaverde Ver mensaje
pues nada te comento sin nisiquiera saber como va el ida que bueno me ha parecido que no lo hace del todo bien pero algo se entiende eso de a mano ya me diras con que haber si es que lo tengo y no lo he utilizado de todas formas grs por tu atencion saludos
Wenas Barrigaverde, te cuento respecto al IDA Pro, al final ya lo he hecho funcionar mas o menos correctamente, siguiendo las instrucciones de configuración que puso "[B]prc600[/B]" en su manual de "TUTORIAL Analyse Firmware FTE-1_EN.zip", y desensambla perfectamente, el único inconveniente es que no lo hace del tirón y hay que ir indicándole por donde debe seguir, osea que es cuestión de dedicarle horas para conseguir un desensamblado del boot completo xD

Con lo de realizarlo a mano, me refiero a utilizar cualquier Disassembler sencillo para MIPS e ir interpretando su "juego de instrucciones" y registros manualmente.

Yo suelo utilizar el "[B]LemAsm.exe[/B]", que aunque se supone que era para las roms de N64, configurándolo correctamente con el "Byteswap" y "Wordswap" también nos vale a nosotros, y que creo que también hay una versión parcheada para los Humax, aunque prefiero el "[B]ps2dis.exe[/B]" que es automático y tiene muchas mas funciones xD

Y a lo de interpretar el "juego de instrucciones" de los MIPS para ver lo que hace cada instrucción, aquí os pongo un ejemplo del trocito que os comente el otro día, con mas o menos las instrucciones que realiza a cada registro para entenderlo mas fácilmente.


[CODE]BootLoader_SMT01---0.9.9_(2007-10-11).bin
-------------------------------------------------------------------------------------------------------------------------
...
0xBFC0DC84: 37008010 -> 10800037 beqz a0,0xBFC0DCA4 // Salto si es igual a 0 -> if (a0 = 0) go to 0xBFC0DCA4
0xBFC0DC88: 21100000 -> 00001021 move v0,0 // Mueve registro -> mov zero to v0
0xBFC0DC8C: 21800000 -> 00008021 move s0,0 // Mueve registro -> mov zero to s0
0xBFC0DC90: 3180023C -> 3C028031 lui v0,0x8031 // Carga del inmediato superior -> v0 = 0x8031 << 16
0xBFC0DC94: A0F24524 -> 2445F2A0 addiu a1,v0,62112 // Suma con inmediato, sin signo -> a1 += (v0 + 0xF2A0)
0xBFC0DC98: F0FF0624 -> 2406FFF0 li a2,65520 // Carga valor inmediato -> a2 = 0xFFF0

0xBFC0DC9C: 08000426 -> 26040008 addiu a0,s0,8 // Suma con inmediato, sin signo -> a0 += (s0 + 8)
0xBFC0DCA0: 21208500 -> 00852021 addu a0,a0,a1 // Suma, sin signo -> a0 += (a0 + a1)
0xBFC0DCA4: 21100502 -> 02051021 addu v0,s0,a1 // Suma, sin signo -> v0 += (s0 + a1)
0xBFC0DCA8: 00004390 -> 90430000 lbu v1,0(v0) // Carga un byte al registro, sin signo -> v1 += k[v0 + 0]
0xBFC0DCAC: 00190300 -> 00031900 sll v1,v1,0x4 // Desplazamiento lógico a la izquierda -> v1 = v1 << 4
0xBFC0DCB0: 24186600 -> 00661824 and v1,v1,a2 // AND -> v1 = (v1 & a2)
0xBFC0DCB4: 00004290 -> 90420000 lbu v0,0(v0) // Carga un byte al registro, sin signo -> v0 += k[v0 + 0]
0xBFC0DCB8: 02110200 -> 00021102 srl v0,v0,0x4 // Desplazamiento lógico a la derecha -> v0 = v0 >> 4
0xBFC0DCBC: 25186200 -> 00621825 or v1,v1,v0 // OR -> v1 = v1 | v0
0xBFC0DCC0: 00008290 -> 90820000 lbu v0,0(a0) // Carga un byte al registro, sin signo -> v0 += k[a0 + 0]
0xBFC0DCC4: 26104300 -> 00431026 xor v0,v0,v1 // XOR, Or exclusivo -> v0 = v0 ^ v1
0xBFC0DCC8: 000082A0 -> A0820000 sb v0,0(a0) // Almacenamiento de byte -> v0 = k[a0 + 0]

0xBFC0DCCC: 01001026 -> 26100001 addiu s0,s0,1 // Suma con inmediato, sin signo -> s0 += (s0 + 1)
0xBFC0DCD0: 0800022A -> 2A020008 slti v0,s0,8 // Inicializar si menor que con inmediato -> v0 = (s0 < 8)

0xBFC0DCD4: F2FF4054 -> 5440FFF2 bnezl v0,0xBFC0DCB0 // Salto si no es menor -> if (v0 !> v0) go to 0xBFC0DCB0
0xBFC0DCD8: 08000426 -> 26040008 addiu a0,s0,8 // Suma con inmediato, sin signo -> a0 += (s0 + 8)

0xBFC0DCDC: 09002012 -> 12200009 beqz s1,0xBFC0DCFC // Salto si es igual a 0 -> if (s1 = 0) go to 0xBFC0DCFC
0xBFC0DCE0: 21800000 -> 00008021 move s0,0 // Mueve registro -> mov zero to s0
0xBFC0DCE4: 21189002 -> 02901821 addu v1,s4,s0 // Suma, sin signo -> v1 += (s4 + s0)
0xBFC0DCE8: 21105002 -> 02501021 addu v0,s2,s0 // Suma, sin signo -> v0 += (s2 + s0)
0xBFC0DCEC: 08004290 -> 90420008 lbu v0,8(v0) // Carga un byte al registro, sin signo -> v0 += k[v0 + 8]
0xBFC0DCF0: 000062A0 -> A0620000 sb v0,0(v1) // Almacenamiento de byte -> v0 = k[v1 + 0]
0xBFC0DCF4: 01001026 -> 26100001 addiu s0,s0,1 // Suma con inmediato, sin signo -> s0 += (s0 + 1)
0xBFC0DCF8: 2B101102 -> 0211102B sltu v0,s0,s1 // Inicializar si menor que -> v0 += (s0 < s1)

0xBFC0DCFC: FAFF4014 -> 1440FFFA bnez v0,0xBFC0DD10 // Salto si no igual -> if (v0 != v0) go to 0xBFC0DD10
0xBFC0DD00: 21189002 -> 02901821 addu v1,s4,s0 // Suma, sin signo -> v1 += (s4 + s0)
0xBFC0DD04: 21208002 -> 02802021 move a0,s4 // Mueve registro -> mov s4 to a0
0xBFC0DD08: 21282002 -> 02202821 move a1,s1 // Mueve registro -> mov s1 to a1
0xBFC0DD0C: 3180063C -> 3C068031 lui a2,0x8031 // Carga del inmediato superior -> a2 = 0x8031 << 16
0xBFC0DD10: 73360C0C -> 0C0C3673 jal 0x00D9CC // Salto y enlace -> goto 0xD9CC
0xBFC0DD14: A0F2C624 -> 24C6F2A0 addiu a2,a2,60956 // Suma con inmediato, sin signo -> a2 += (a2 + 0xF2A0)
0xBFC0DD18: F0FF0624 -> 2406FFF0 li a2,62112 // Carga valor inmediato -> a2 = 0xFFF0
0xBFC0DD1C: 24302602 -> 02263024 sltu a2,a2,v0 // Inicializar si menor que -> a2 += (a2 < v0)
0xBFC0DD20: 21308602 -> 02863021 addu a2,s4,a2 // Suma, sin signo -> a2 += (s4 + a2)
0xBFC0DD24: 0001C624 -> 24C60100 addiu a2,a2,256 // Suma con inmediato, sin signo -> a2 += (a2 + 256)
0xBFC0DD28: 21208002 -> 02802021 move a0,s4 // Mueve registro -> mov s4 to a0
0xBFC0DD2C: 09F8E002 -> 02E0F809 jalr s7 // Salto y enlace a registro -> goto reg s7
0xBFC0DD30: 2128C002 -> 02C02821 move a1,s6 // Mueve registro -> mov s6 to a1

0xBFC0DD34: 0A004054 -> 5440000A bnezl v0,0xBFC0DD64 // Salto si no es menor -> if (v0 !> v0) go to 0xBFC0DD64
0xBFC0DD38: 21A80000 -> 0000A821 move s5,0 // Mueve registro -> mov zero to s5
0xBFC0DD3C: 59370C08 -> 080C3759 j 0xBFC0DD64 // Salto a direccion -> goto address 0xBFC0DD64
0xBFC0DD40: 2110A002 -> 02A01021 move v0,s5 // Mueve registro -> mov s5 to v0
0xBFC0DD44: 21204002 -> 02402021 move a0,s2 // Mueve registro -> mov s2 to a0
0xBFC0DD48: 2128C002 -> 02C02821 move a1,s6 // Mueve registro -> mov s6 to a1
0xBFC0DD4C: 09F8E002 -> 02E0F809 jalr s7 // Salto y enlace a registro -> goto reg s7
0xBFC0DD50: 21308002 -> 02803021 move a2,s4 // Mueve registro -> mov s4 to a2
0xBFC0DD54: 0100422C -> 2C420001 sltiu v0,v0,1 // Inicializar con inmediato si es menor que -> v0 += (v0 < 1)
0xBFC0DD58: 23100200 -> 00021023 negu v0,v0 // Niega el valor, sin signo -> v0 += v0
0xBFC0DD5C: 24A8A202 -> 02A2A824 and s5,s5,v0 // AND -> s5 = (s5 & v0)
0xBFC0DD60: 2110A002 -> 02A01021 move v0,s5 // Mueve registro -> mov s5 to v0

0xBFC0DD64: 3000BF8F -> 8FBF0030 lw ra,48(sp) // Carga de palabra -> ra = k[sp + 48]
0xBFC0DD68: 2C00B78F -> 8FB7002C lw s7,44(sp) // Carga de palabra -> s7 = k[sp + 44]
0xBFC0DD6C: 2800B68F -> 8FB60028 lw s6,40(sp) // Carga de palabra -> s6 = k[sp + 40]
0xBFC0DD70: 2400B58F -> 8FB50024 lw s5,36(sp) // Carga de palabra -> s5 = k[sp + 36]
0xBFC0DD74: 2000B48F -> 8FB40020 lw s4,32(sp) // Carga de palabra -> s4 = k[sp + 32]
0xBFC0DD78: 1C00B38F -> 8FB3001C lw s3,28(sp) // Carga de palabra -> s3 = k[sp + 28]
0xBFC0DD7C: 1800B28F -> 8FB20018 lw s2,24(sp) // Carga de palabra -> s2 = k[sp + 24]
0xBFC0DD80: 1400B18F -> 8FB10014 lw s1,20(sp) // Carga de palabra -> s1 = k[sp + 20]
0xBFC0DD84: 1000B08F -> 8FB00010 lw s0,16(sp) // Carga de palabra -> s0 = k[sp + 16]

0xBFC0DD88: 0800E003 -> 03E00008 jr ra // Salto a registro -> goto reg ra
0xBFC0DD8C: 3800BD27 -> 27BD0038 addiu sp,sp,56 // Suma con inmediato, sin signo -> sp += (sp + 56)
...
-------------------------------------------------------------------------------------------------------------------------
[/CODE]


[B]PD: [/B]Mas cosas, aunque no tiene nada que ver con el tema, te cuento que lo que comentabas respecto a la lista de clones y configuraciones que llevan los firms en su interior, ya he descubierto para que es jeje, y es simplemente la tabla de identificación de cada byte de la supuesta "[B]Eepron 24c02[/B]" que llevan los MAXs y algunos clones, es decir, es la identificación de cada uno de esos 32 Bytes de esa supuesta eepron y que dependiendo del valor en hexadecimal de cada byte el deco identifica el tipo de Tuner, flash, mando, audio, modelo, etc del clon en concreto, es decir su configuración, por eso si alguno tiene esa eeprom corrupta, no le funcionaria el tuner ni mando correctamente y por mucho que lo flashe no podrá repararlo si no se reprograma correctamente los valores de esa supuesta eeprom xD
Ya tengo localizado lo que significa cada valor en hex de cada byte y su posición en dicha eeprom, y seguramente le incluiré al ALi-Fixer una pequeña utilidad para analizar si el contenido de dicha eepron es correcto simplemente pegando esos 32 bytes y que muestre todos los parámetros de su configuración xD
SantiPHREACK está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 06/02/2008, 15:04   #11
barrigaverde 
Usuario PREMIUM+
 
Avatar de barrigaverde
 
Fecha de ingreso: 26/mar/2006
Mensajes: 3.552
barrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todos
bueno pues como simpre grs santi por lo menos el comentar eso posibles clones ha valido de algo aunque sea para impulsate a mirarlo estudiare lo que me has pasado saludos y lo del microx ya lo tenia visto uno anterior grs de nuevo
bueno pues realizando una busqueda ahora he mirado y si lo tenia este ultimo pero creia que no valia para estos chips ali pues habia leido en el otrolado esta traduccion:

Buscar y analizar los archivos binarios de PS2

motivo por el que no le lo mire mucho

Última edición por barrigaverde; 06/02/2008 a las 15:15.
barrigaverde está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 08/02/2008, 19:41   #12
barrigaverde 
Usuario PREMIUM+
 
Avatar de barrigaverde
 
Fecha de ingreso: 26/mar/2006
Mensajes: 3.552
barrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todos
saludos santi he estado probando este : el "ps2dis.exe" que es automático, y pregunto solo funciona a golpe de clip de raton o puede funcionar con desplegable mas rapido con rueda ??
barrigaverde está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 21/02/2008, 19:56   #13
SantiPHREACK 
Usuario PREMIUM+
 
Fecha de ingreso: 13/abr/2006
Mensajes: 223
SantiPHREACK está en el buen camino
Wenas, como veo esto un poco parado y poca colaboración, me he puesto a repasar el desensamblado que pusimos del dichoso boot, y he corregido algunos errores del trocito que nos interesa, y quedaría mas o menos así:

[CODE]....
0xBFC0DD04: 21208002 -> 02802021 move $a0, $s4 # Mueve registro -> mov s4 to a0
0xBFC0DD08: 21282002 -> 02202821 move $a1, $s1 # Mueve registro -> mov s1 to a1
0xBFC0DD0C: 3180063C -> 3C068031 lui $a2, 0x8031 # Carga del inmediato superior -> a2 = 0x8031 << 16
0xBFC0DD10: 73360C0C -> 0C0C3673 jal 0x8031D9CC # Salto y enlace -> goto 0xBFC0D9CC
[B]0xBFC0DD14: A0F2C624 -> 24C6F2A0 la $a2, 0xF2A0 # Carga de Dirección de memoria -> a2 = 0x8031F2A0 -> KEY ??[/B]
0xBFC0DD18: F0FF0624 -> 2406FFF0 li $a2, 0xFFFFFFF0 # Carga valor inmediato -> a2 = 0xFFFFFFF0 -> VI ??
0xBFC0DD1C: 24302602 -> 02263024 and $a2, $s1, $a2 # AND -> a2 = (s1 & a2)
0xBFC0DD20: 21308602 -> 02863021 addu $a2, $s4, $a2 # Suma, sin signo -> a2 += (s4 + a2)
0xBFC0DD24: 0001C624 -> 24C60100 addiu $a2, 0x100 # Suma con inmediato, sin signo -> a2 += (a2 + 0x100) ->
0xBFC0DD28: 21208002 -> 02802021 move $a0, $s4 # Mueve registro -> mov s4 to a0
0xBFC0DD2C: 09F8E002 -> 02E0F809 jalr $s7 # Salto y enlace a registro -> goto reg s7
0xBFC0DD30: 2128C002 -> 02C02821 move $a1, $s6 # Mueve registro -> mov s6 to a1
0xBFC0DD34: 0A004054 -> 5440000A bnezl $v0, 0xBFC0DD64 # Salto si no es menor -> if (v0 !> v0) go to 0xBFC0DD64
0xBFC0DD38: 21A80000 -> 0000A821 move $s5, $0 # Mueve registro -> mov zero to s5
0xBFC0DD3C: 59370C08 -> 080C3759 j 0xBFC0DD64 # Salto a direccion -> goto address 0xBFC0DD64
0xBFC0DD40: 2110A002 -> 02A01021 move $v0,$s5 # Mueve registro -> mov s5 to v0
...[/CODE]

Os cuento, el problema que tuve es que al estar desensamblado a mano, en el Offset 0x0DD14 que hay "24C6 F2A0", interprete dicha instrucción "24C6" como una Suma sin signo erróneamente, ya que no me fije que dos instrucciones mas arriba le cargaba a ese mismo registro el comienzo de una dirección de memoria "0x8031", con lo cual la instrucción correcta seria un "la", es decir la carga del Offset "0x8031F2A0" en el registro a2, y sabiendo que a partir de 0x80310000 es la zona de la SRAM donde se almacena la copia de dicho Boot, y equivale al Offset [B]0xBFC0F2A0[/B] de la flash, entonces la dirección que nos interesaría seria "0xF2A0" a secas, y al ir a dicha dirección para ver que es lo que contiene, sorpresa jeje, es una cadena de [B]16 Bytes[/B] que no son código ejecutable ni ningún valor de configuración, y que curiosamente solo la tienen los boots a partir de la vers 0.9.6 que fue cuando empezaron a cifrar los maincodes lo de moresat. xD

[CODE]Offset [B]0xF2A0[/B]: "[B]92...................11[/B]" -> ByteFlopeado = [B]0xF2A0:[/B] "[B]93...................55[/B]" -> KEY ??[/CODE]

Con lo cual me da que pensar que esos 16 Bytes son los que utiliza el boot para descifrar el maincode antes de descomprimirlo, osea la "Key" necesaria jeje, y si nos fijamos un poco mas en el desensamblado, se pueden deducir otros dos parámetros interesantes xD

[CODE][B]"0xFFFFFFF0"[/B] -> Que podría ser el Vector de Inicio necesario para realizar las rondas ??
[B]"0x100" = 256 Bytes[/B] -> Que seguramente sera el tamaño de sector de cada ronda ??[/CODE]

[B]PD:[/B] Yo he probado esa "supuesta" clave ByteFlopeada y sin ByteFlopear con todos los algoritmos simétricos públicos en modo CBC por si era otro, pero sin éxito, osea que como ya vimos anteriormente, seguramente se tratara de una modificación propia que le han realizado al [B]XTEA[/B], con lo cual no queda mas remedio que seguir depurando el desensamblado para intentar portarlo a C u otro lenguaje mas comprensible e ir compilandolo con pequeñas variaciones hasta que demos con la variación del algoritmo que le han hecho.
SantiPHREACK está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 28/02/2008, 08:45   #14
prc600
Usuario Registrado
 
Fecha de ingreso: 23/jul/2006
Mensajes: 2
prc600 está en el buen camino
Smile

[QUOTE]Wenas Barrigaverde, te cuento respecto al IDA Pro, al final ya lo he hecho funcionar mas o menos correctamente, siguiendo las instrucciones de configuración que puso "prc600" en su manual de "TUTORIAL Analyse Firmware FTE-1_EN.zip", y desensambla perfectamente, el único inconveniente es que no lo hace del tirón y hay que ir indicándole por donde debe seguir, osea que es cuestión de dedicarle horas para conseguir un desensamblado del boot completo xD[/QUOTE]

Thank you for the reference! Sorry for the english but I don't speak spanish! I have other tutorials during some period! Yes, It go slow, the goal of these tutorials is to give access for beginners to start with IDA PRO!

Thanks for your work especially to jumambo and his JTAG Flaps, who gives me the base for a implementation only for my FTE S200 and Jkeys Cable!

You made all a wonderfull works, I'm stunned of your talents!

So little time and so much project...

Última edición por prc600; 29/02/2008 a las 16:31.
prc600 está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 28/02/2008, 18:49   #15
barrigaverde 
Usuario PREMIUM+
 
Avatar de barrigaverde
 
Fecha de ingreso: 26/mar/2006
Mensajes: 3.552
barrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todos
saludos prc600 entiendo que tienes un programa para descompilar los ficheros grs lo buscare haber que tal funciona saludos
barrigaverde está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 28/02/2008, 21:43   #16
prc600
Usuario Registrado
 
Fecha de ingreso: 23/jul/2006
Mensajes: 2
prc600 está en el buen camino
Cita:
Iniciado por barrigaverde Ver mensaje
saludos prc600 entiendo que tienes un programa para descompilar los ficheros grs lo buscare haber que tal funciona saludos
I don't know what is grs file? You put the firmware under IDA PRO and take a subroutine, sorry the tuto I made for it is in french! It doesn't decompile all the file! It works like st20dc, a subroutine at the time!

My dream, is it made all, and recreate the source code... but a dream...
prc600 está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 28/02/2008, 22:00   #17
constance
Usuario Registrado
 
Fecha de ingreso: 28/feb/2008
Mensajes: 1
constance está en el buen camino
Wink

Cita:
Iniciado por prc600 Ver mensaje
I don't know what is grs file? You put the firmware under IDA PRO and take a subroutine, sorry the tuto I made for it is in french! It doesn't decompile all the file! It works like st20dc, a subroutine at the time!

My dream, is it made all, and recreate the source code... but a dream...

Hello I am constance morsat administrator and the st @ rgate team. Prc600 hi tu vas well as I can find no friends progressing well
__________________
fte max 102
fte max 100
administrator morsat
administrator snake sat
st@rgate team
moresat team
constance está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 11/03/2008, 18:40   #18
eternal
Usuario Activo
 
Fecha de ingreso: 04/feb/2003
Mensajes: 102
eternal está en el buen camino
Una pregunta por curiosidad: ¿A los decos que van destinados los firmwares Moresat, se le pueden cargar los firmwares Truman?

Saludos.
eternal está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 09/05/2008, 03:43   #19
jamlu
Usuario Activo
 
Fecha de ingreso: 31/mar/2004
Mensajes: 94
jamlu está en el buen camino
hola

En un foro turco hay un hilo que hablaban de esto y han colgado con fecha de 27/04/08 un archivo que dicen que es para esto precisamente. Lo cuelgo en el 2 con el nombre de analisisfte.

En dicho foro decía texte decrypter fte moresat y un link para el fichero que he colgado en croteam


También venía un programa en francés que por lo que yo se de francés y por lo que hace el firm es trocearlo en las distintas partes que trae un firm y con el otro soft que traen se pueden unir. Vale para los ali b y c

Lo he colgado también con el nombre de ensambladesensambla


Saludos

Última edición por jamlu; 09/05/2008 a las 04:10. Razón: error
jamlu está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 05/10/2008, 19:11   #20
SantiPHREACK 
Usuario PREMIUM+
 
Fecha de ingreso: 13/abr/2006
Mensajes: 223
SantiPHREACK está en el buen camino
Wenas a todos xD

Debido a que los de Moresat últimamente han dejado de lado a los 3329B y para colmo las novedades de las actualizaciones del resto de modelos solo funcionan con su nueva tarjeta Abracadabra, el señor Constance y prc600 del [B]S@TGate-Team[/B] han decidido publicar por fin su "MainCode Decrypter v0.2.0" para los 3329B de Moresat xD

Y como bien supusimos, el cifrado de dichos maincodes se trataba del algoritmo [B]XTEA[/B] con la clave del boot, pero lo curioso es que esa supuesta clave también estaba cifrada y era necesario mandársela al microcontrolador que tienen en la pequeña placa del panel frontal para que la descifrara y la devolviera en claro, y tras un simple SwapNibble y Xoreo con esa nueva subclave ya se podría aplicar el XTEA al maincode y desempaquetarlo xD

Lo bueno es que en la serie 3329B nunca han cambiado esa clave del boot, pero en caso de que cambiase alguna vez, seria fácil obtenerla en claro simplemente sniffando el trafico de inicio del panel frontal, o incluso obtenerla de la SDRAM xD

[B]PD:[/B] Cuando tenga algo de tiempo libre retomo y miro los Fixes para los FTE y mirare la forma de aplicarle este nuevo unpacker al ALi-Fixer
SantiPHREACK está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 06/10/2008, 19:13   #21
barrigaverde 
Usuario PREMIUM+
 
Avatar de barrigaverde
 
Fecha de ingreso: 26/mar/2006
Mensajes: 3.552
barrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todos
necesitas algo aqui estare saludos
barrigaverde está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 21/10/2008, 11:08   #22
lepero85
Usuario Activo
 
Fecha de ingreso: 14/abr/2003
Mensajes: 86
lepero85 está en el buen camino
nada,seguimos con las mismas....ya van dos veces que me ha borrado el que sea el post pidiendo el descripter de los fte......haber que falta estoy cometiendo.......decirle al que borra los post,que gracias
lepero85 está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 21/10/2008, 11:24   #23
lanza3d 
Seccion 7 - Juanito
 
Avatar de lanza3d
 
Fecha de ingreso: 27/feb/2003
Mensajes: 2.413
lanza3d ha deshabilitado la reputación
Cita:
Iniciado por lepero85 Ver mensaje
.......decirle al que borra los post,que gracias
De nada, es un placer.

sigue asi, y te seguire borrando mas.
__________________
  • Existen 10 tipos de personas, los que saben leer numero binarios y los que no.
lanza3d está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 21/10/2008, 20:23   #24
barrigaverde 
Usuario PREMIUM+
 
Avatar de barrigaverde
 
Fecha de ingreso: 26/mar/2006
Mensajes: 3.552
barrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todosbarrigaverde es un nombre conocido por todos
saludos compañero
[QUOTE] es un placer[/QUOTE]

pienso que le ocurre que no ha visto [COLOR="Red"]el acha [/COLOR]de doble filo que tienes en tu avatar jejeje
barrigaverde está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 22/10/2008, 11:02   #25
lepero85
Usuario Activo
 
Fecha de ingreso: 14/abr/2003
Mensajes: 86
lepero85 está en el buen camino
santi no querias saber quien era el que borraba los post pidiendo el descripter pùes ya aparecio.....
gracias lanza solo era para conocerte el placer es mio
lepero85 está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 22/10/2008, 18:31   #26
lanza3d 
Seccion 7 - Juanito
 
Avatar de lanza3d
 
Fecha de ingreso: 27/feb/2003
Mensajes: 2.413
lanza3d ha deshabilitado la reputación
a mandar

para lo que necesites aqui estamos !!
__________________
  • Existen 10 tipos de personas, los que saben leer numero binarios y los que no.
lanza3d está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 14/12/2010, 18:51   #27
kasita
Usuario Registrado
 
Fecha de ingreso: 10/dic/2010
Mensajes: 2
kasita está en el buen camino
a mandar
kasita está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Publicidad: Conoce las ofertas de ANUNCIATE
Respuesta


Usuarios viendo actualmente este tema: 1 (0 usuarios registrados y 1 visitantes)
 

Permisos para publicar mensajes
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los BB code están Activado
Los Emoticones están Activado
El código [IMG] está Activado
El Código HTML está Desactivado

Ir al foro


!! ADVERTENCIAS !!: Las informaciones aquí publicadas NO CONTIENEN KEYS para la decodificación de ningún sistema: NO SON OPERATIVOS en sistemas SAT que precisen de su correspondiente suscripción.

ESTA TOTALMENTE PROHIBIDO EL USO DE ESTAS INFORMACIONES PARA LA MODIFICACIÓN O  DEFRAUDACIÓN DE SISTEMAS DE ACCESO CONDICIONAL.

ESTOS FOROS SON MODERADOS Y NO SE PERMITE LA PUBLICACIÓN DE INFORMACIONES ILEGALES POR PARTE DE LOS USUARIOS. EN CASO DE DETECTARSE ESTE TIPO DE INFORMACIONES, LOS USUARIOS SERÁN EXCLUIDOS DE ESTAS PÁGINAS.

USO DE COOKIES: Utilizamos COOKIES y de terceros para mejorar nuestros servicios y navegación por la web. Si continua navegando, consideramos que acepta su uso.  


La franja horaria es GMT +2. Ahora son las 12:00.


-------------------------------------------------------------------- --------------------------------------------------------------------

Powered por vBulletin™ Version 3.8.10
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.
Traducido por vBsoporte - vBulletin en español
Hispaservicios - J.G.C - 29112549T - Rio Cinca, 2, 30 (50180) SPAIN.
Todos los derechos reservados. Prohibida cualquier reproducion total o parcial.


Foros Patrocinados por anunciantes.