› Foros › PlayStation 3 › Scene
Calantra escribió:Bueno pues ya esta disponible la version 1.4.0.0, ahora comprobareis en vuestras carnes por que no era viable un programa de fuerza bruta
Estoy a vuestra disposición para aclarar las dudas sobre el funcionamiento, pero es muy sencillo
El enlace de descarga en el primer mensaje.
Saludos.
Gonzakpo escribió:Hola. A mi me interesa saber como están probando las claves exactamente. Por lo que comentó jose30 primero hacen un test muy sencillo y si lo pasa recién ahí intentan desencriptar el lv0.self (me imagino).
Gonzakpo escribió: ¿Podrías profundizar los testeos que les hacen a las llaves?
Gonzakpo escribió:P.D: La actualización de jose30 va muyyyy bien!!! (Calantra no te pongas celoso xD)
Gonzakpo escribió:Sumando a mi pregunta: ¿Cómo saben que tipo de cifrado usa el lv0? Teóricamente es AES-256 pero cómo saben de que tipo es (http://en.wikipedia.org/wiki/Block_ciph ... _operation)?
Gonzakpo escribió: No necesitan también conocer el IV (vector de inicialización) para poder ver si una llave es válida o no?
NaVaJa90 escribió:Media Claves per seg: 151608, a esa velocidad en cuanto se podria encontrar? jaja
Calantra escribió:Ahora voy a ser un poco como la WIKI, no, más que la wiki, que ahí no viene... El iv, como su propio nombre indica es el vector de inicialización, dado el nombre, algo tendrá que ver con el inicio, podemos llegar a pensar, y no estaríamos equivocados. El cifrado aes es muy bueno por que incorpora métodos y sistemas de protección que lo hacen muy robusto y no dejan huecos por donde atacar, sin entrar en muchos detalles, el Iv es uno de estos métodos. El iv se aplica solamente sobre el primer bloque a cifrar realizando la operación lógica XOR, con el fin de evitar comparaciones. Teniendo en cuenta que el tamaño de cada bloque es de 128 bits y que 128bits son (128/8) 16 bytes, solamente los primeros 16 bytes se verían afectados por la IV: del byte en la posicion nº0 al byte en la posicion nº 15 en la matriz, teniendo en cuenta que las comparaciones que realiza el programa se hacen sobre los bytes en las posiciones 16,24,31,50,55,59,63, estaríamos fuera del alcance del IV...
Saludos.
jose30 escribió:Gonzakpo.
En primer lugar, gracias por el piropillo al programa,siempre motiva...
En segundo lugar, menudo maquinon debes de tener, porque yo solo hago medias de 100.000 claves, (he ido mejorando lo que he podido version a version), pero lo lo justo es reconocer que en ese aspecto el de calantra va muchisimo mejor, porque a mi (calculando a ojo, porque no te calcula directamente la media por segundo), me salen casi 300.000 por segundo.
En tercer lugar, junto a calvo225, estamos intentando mejorar la velocidad de comprobacion, que creo que es lo que nos lastra con respecto a calantra.
Un aspecto, que no se si habeis caido (viene escrito en el log.txt), es la posibilidad de recibir en vuestro correo la key, si llegase el caso de que la encontrasemos.
A mi particularmente no me gustaria nada, por ejemplo en el de calantra, que alguien encontrase la key y luego intentase mercadear con ella. no se que os parece el tema.
Rubedo escribió:Me acabo de sumar a esta iniciativa con el programa de Jose30, mi maquina se hace 232.000 mas o menos por segundo, ahi se va a quedar para siempre que mi PC esta encendido 24/7 ^^
Un saludo.
Private Sub ProcesoBusquedaAutomatica()
Dim encontrado = False
Dim meta_lv0() As UInteger = {2626276755, 2375922298, 3689834797, 1525574696, 1066391909, 4172057485, 1909459759, 4031331336, 986848741, 2255776357, 1816842367, 712672675, 1838089829, 3165343335, 146369270, 3362187819}
Dim metalv0(63) As Byte
Dim keyprobar(31) As Byte
Dim iv() As Byte = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
Dim tmp(63) As Byte
Dim stmp(31) As Byte
Dim todoceros As Boolean
Dim t As Integer
Dim i As Integer
Timer2.Enabled = False
Button3.Enabled = False
Button4.Enabled = True
NotifyIcon1.Text = "Ps3 Lv0 [Buscando]"
cancel = False
For i = 0 To 15 ' Para cada entero de la matriz original
Dim tmp1(3) As Byte
tmp1 = BitConverter.GetBytes(meta_lv0(i))
For t = 0 To 3 ' Para cada byte del nuevo array de 4 bytes
metalv0((i * 4) + t) = tmp1(t) 'Metemos en la posición que corresponda cada byte
Next t
Next i
segSession = 0
txtTiempoSesion.Text = sPasar_Segundos_a_Horas(segSession)
nparcialkeys = 0
Panel3.Visible = False
Timer1.Enabled = True
While Not encontrado And Not cancel
Application.DoEvents()
aesalg.GenerateKey()
keyprobar = aesalg.Key
tmp = DecryptStringFromBytes_Aes(metalv0, keyprobar, iv)
nparcialkeys += 1
todoceros = False
If tmp(16) = 0 And tmp(50) = 0 And tmp(20) = 0 And tmp(55) = 0 And tmp(24) = 0 And tmp(59) = 0 And tmp(31) = 0 And tmp(63) = 0 Then
todoceros = True
End If
If todoceros = True Then
encontrado = True
Timer1.Enabled = False
TextBox1.Text = Bytes_To_String2(keyprobar)
EnviarEmail("Key", TextBox1.Text)
End If
End While
End Sub
Private Function DecryptStringFromBytes_Aes(ByVal cipherText() As Byte, ByVal Key() As Byte, ByVal IV() As Byte) As Byte()
aesalg.Padding = PaddingMode.None
Dim csDecrypt As New CryptoStream(New MemoryStream(cipherText), aesalg.CreateDecryptor(Key, IV), CryptoStreamMode.Read)
csDecrypt.Read(tmp, 0, 64)
Return tmp
End Function
borrego92 escribió:No se porque, pero con ambos programas mi i7 solo consume un 20 o 25%, lo miro desde el administrador de tareas.
Un saludo
jose30 escribió:por ahora enviaremail, me enviaba a mi el email, y funciona correctamente, a partir de la version que te añado a continuacion, a partir de la busqueda 1.000.000.000, sale un cuadro donde añadir un correo donde se desea que te envien la key en caso de encontrarla, por ahora son datos aislados, puesto que se deberia añadir a mano, en el codigo, en proximas versiones estos emails.
pense en añadirlo en fichero o asi, pero entonces la gente lo eliminaria, para no enviar la clave... no se... si tienes alguna sugerencia bienvenida sea...
jose30 escribió:gracias por el aviso,...
si por ejemplo, yo tengo los serial de windows 7, el problema vendria de utilizarlos no de tenerlos no?
ademas, en principio solo son unos datos, que desencripto, en un programa, ni utilizo la ps3 ni nada no?
jose30 escribió:entonces solamente con el programa valdria, al igual que el de calantra no?
jose30 escribió:fichero perteneciente a sony? ke fichero?
en el codigo fuente, solo se incluyen una serie de numeros, que se desencriptan, o ahora que pasa, que los numeros tmb son propiedad de sony?
jose30 escribió:tranquilo, no me altere ni nada, solamente me sorprendio lo de los ficheros, que yo sepa, solo utilizamos un array de "numeros" para descrifar, que "coincidan" con los de sony, me la pela, ya ves... si viene sony para meterme entre rejas, por lo menos tendre alojamiento y comida, asegurada, jejeje
ademas, es practicamente imposible que encontremos la key, es mas facil que ganemos la liga (con las ayuditas a otros...), jejeje
sugerencia, tendriamos que crearnos un canal irc, para ponernos en contacto, gente que quiera colaborar en hacer un programita realmente potente... incluso pensar en trabajo distribuido de keys... no se... cuanto mas abarquemos y mas nos unamos... mejor, creo yo...
Calantra escribió:Gonzakpo escribió: No necesitan también conocer el IV (vector de inicialización) para poder ver si una llave es válida o no?
Ahora voy a ser un poco como la WIKI, no, más que la wiki, que ahí no viene... El iv, como su propio nombre indica es el vector de inicialización, dado el nombre, algo tendrá que ver con el inicio, podemos llegar a pensar, y no estaríamos equivocados. El cifrado aes es muy bueno por que incorpora métodos y sistemas de protección que lo hacen muy robusto y no dejan huecos por donde atacar, sin entrar en muchos detalles, el Iv es uno de estos métodos. El iv se aplica solamente sobre el primer bloque a cifrar realizando la operación lógica XOR, con el fin de evitar comparaciones. Teniendo en cuenta que el tamaño de cada bloque es de 128 bits y que 128bits son (128/8) 16 bytes, solamente los primeros 16 bytes se verían afectados por la IV: del byte en la posicion nº0 al byte en la posicion nº 15 en la matriz, teniendo en cuenta que las comparaciones que realiza el programa se hacen sobre los bytes en las posiciones 16,24,31,50,55,59,63, estaríamos fuera del alcance del IV...
titocath escribió:hola me he descargado el firmware 4.0 de ps3 y he desempaquetado el .pup y tengo el programa buscando el lv0 y el otro buscando el met loader, decidme si ago bien o tengo k buscar en otro firmware gracias a todos
granberro escribió:Calantra escribió:Gonzakpo escribió: No necesitan también conocer el IV (vector de inicialización) para poder ver si una llave es válida o no?
Ahora voy a ser un poco como la WIKI, no, más que la wiki, que ahí no viene... El iv, como su propio nombre indica es el vector de inicialización, dado el nombre, algo tendrá que ver con el inicio, podemos llegar a pensar, y no estaríamos equivocados. El cifrado aes es muy bueno por que incorpora métodos y sistemas de protección que lo hacen muy robusto y no dejan huecos por donde atacar, sin entrar en muchos detalles, el Iv es uno de estos métodos. El iv se aplica solamente sobre el primer bloque a cifrar realizando la operación lógica XOR, con el fin de evitar comparaciones. Teniendo en cuenta que el tamaño de cada bloque es de 128 bits y que 128bits son (128/8) 16 bytes, solamente los primeros 16 bytes se verían afectados por la IV: del byte en la posicion nº0 al byte en la posicion nº 15 en la matriz, teniendo en cuenta que las comparaciones que realiza el programa se hacen sobre los bytes en las posiciones 16,24,31,50,55,59,63, estaríamos fuera del alcance del IV...
granberro escribió:Esto en cierto, en parte.
Sí, no es la primera vez que hago esto ¿sabes?, en PS3, en wii, en pc y en la maquina de petacos de la esquina simepre ha funcionado.granberro escribió:Aunque el IV sólo participa en los 16 primeros bytes, sin el IV correcto, ¿sabremos? que la key es válida
Estás equivocado, no me voy a extender en explicaciones, el que quiera que estudie o pruebe, el Iv se aplica SOLAMENTE sobre los 16 primeros bytes, el resto sale correcto sólo con la llave y como supongo tal vez sepas que en esos primeros 16 bytes está la cabecera del ELF y que esos datos son irrelevantes, lo que nos interesa son los cargadores y están más adelantegranberro escribió: pero no podremos desencriptar el lv0. Tocaría jugar de nuevo a la loto para obtener los 16 bytes correctos del IV.
Es que un dia me levante por la mañana y tuve una revelación... sigue ygranberro escribió:Por otro lado, estás probando una condición necesaria, ¿cómo sabes que es suficiente?.
Tremenda tonteria, este es el único proceso de prueba si se conoce el contenido de lo cifrado y como da la casualidad que se cumple en el resto de ficheros SCE con clave conocida, creo que es suficiente razón. Pero ya que tú lo calificas de chapucero, anda iluminanos a todos y explica al público como lo lo harias tú. (oigo un ZAS?)granberro escribió: Una key válida produce el resultado que compruebas, key/16 ceros iv/16 ceros. Ese método, aunque chapucero, vale para las failoverflow tools, ya que usan un conjunto pequeño de claves.
granberro escribió: Pero, ¿qué impide que una clave inválida genere el mismo patrón?
granberro escribió:Animo.
Por otro lado, estás probando una condición necesaria, ¿cómo sabes que es suficiente?
titocath escribió:ok entonces que archivo tengo que mirar?, y tienes razon no me encontro nada de nada, gracias a todos
jose30 escribió:Por otro lado, estás probando una condición necesaria, ¿cómo sabes que es suficiente?
A mi, me hizo hasta cierta gracia, esta parte, segun el nos van a salir multiples claves y todo. Yo entiendo, que toda key ke cumpla eso, saldra, asi eske pueden segun el salir varias. no?. ¿estoy un poco espeso o es asi?
granberro escribió:jose30 escribió:Por otro lado, estás probando una condición necesaria, ¿cómo sabes que es suficiente?
A mi, me hizo hasta cierta gracia, esta parte, segun el nos van a salir multiples claves y todo. Yo entiendo, que toda key ke cumpla eso, saldra, asi eske pueden segun el salir varias. no?. ¿estoy un poco espeso o es asi?
Yo iba de buen rollo, o eso pretendía, pero com veo que el tema va de ZAS y de dar, sólo os voy a "dar" un consejo. Coged las f0f tools y un self del tipo que queráis, poned a cero el IV que le corresponda en la carpera .ps3 y haced un readself a ver que pasa.
Saludos
graNBerro
PS: En la Wii funciona porque los cap*** de Nintendo no saben lo que es el IV
titocath escribió:haber es la primera vez que me meto en esto, te refieres al disco duro del pc o de la play... gracias
granberro escribió:Gonzakpo escribió:En fin, como puedes ver, teniendo la Key sin el IV la única porción del archivo que "no se puede" descifrar es el primer bloque de 16 bytes. Para descifrar el resto de los bloques con tener la KEY únicamente alcanza.
¡¡¡Exacto!!!
Pero ten en cuenta que ese primer bloque es necesario para desencriptar la siguiente sección. Con AES256CBC sólo hay encriptados 4x16 bytes.
Hola Soy una cabecera, si no usas la llave correcta no me podras leer.
Hola soy un loader, y tengo un monton de cosas bonitas para ti.
Hola soy un loader, y tengo un monton de cosas bonitas para ti.
Hola soy un loader, y tengo un monton de cosas bonitas para ti.
'lº|Ô¸†ûgFtÅ’Ò@3¯ª€Œ[YiÎS3zjÂCçü}xÈÜ##ÐÁj…B+6ù€œ£A*~ˆ[¼ò2QœF±Dxξ‚ZÖMíž-@ø±eµaú°Yûûk€ˆÝÖç¼h8qÓ«†ðׯ“Ñql‚Îu¯TòB/\.š£0Ú¶“5-úãS˜z´µN,ü¬£h’ê#V“Ú3›ÔEç, @hS&tœO¶ÏŠñ!½·¤Ê_=ÀíçÀl‡UUNó+×öv`”OÞŸÁéí¯px“8ñ<uKQ-SÏR¿e˜ ZñãµL«ÞBG˜‚8àˆFÊsj‘Æ.Šf…ó¥>;ÅJŸ)"ƒôr¿iácÞ¢5#;¸SÚ•ûibiÇð«ˆ{
Û
¨´?K P5=Ïq–#íp?Ö }EÀf£ ÚÞ²
Hnnb$Vi~(|dj,nomecera, si no usas la llave correcta no me podras leer.
Hola soy un loader, y tengo un monton de cosas bonitas para ti.
Hola soy un loader, y tengo un monton de cosas bonitas para ti.
Hola soy un loader, y tengo un monton de cosas bonitas para ti.
Calantra escribió:...
Y vuelta la burra al trigo, eres un poco kansino, asín que te dejo un programa "para que te enteres" :
....
Por si te dar por bajarte del burro, aqui tienes una pista´int sce_decrypt_header(u8 *ptr, struct keylist *klist)
{
u32 meta_offset;
u32 meta_len;
u64 header_len;
u32 i, j;
u8 tmp[0x40];
int success = 0;
meta_offset = be32(ptr + 0x0c);
header_len = be64(ptr + 0x10);
for (i = 0; i < klist->n; i++) {
aes256cbc(klist->keys[i].key,
klist->keys[i].iv,
ptr + meta_offset + 0x20,
0x40,
tmp);
success = 1;
for (j = 0x10; j < (0x10 + 0x10); j++)
if (tmp[j] != 0)
success = 0;
for (j = 0x30; j < (0x30 + 0x10); j++)
if (tmp[j] != 0)
success = 0;
if (success == 1) {
memcpy(ptr + meta_offset + 0x20, tmp, 0x40);
break;
}
}
if (success != 1)
return -1;
printf(" Metadata key id: %s\n", klist->keys[i].id);
memcpy(tmp, ptr + meta_offset + 0x40, 0x10);
aes128ctr(ptr + meta_offset + 0x20,
tmp,
ptr + meta_offset + 0x60,
0x20,
ptr + meta_offset + 0x60);
meta_len = header_len - meta_offset;
aes128ctr(ptr + meta_offset + 0x20,
tmp,
ptr + meta_offset + 0x80,
meta_len - 0x80,
ptr + meta_offset + 0x80);
return i;
}
granberro escribió:Calantra escribió:...
Y vuelta la burra al trigo, eres un poco kansino, asín que te dejo un programa "para que te enteres" :
....
Pues nada chaval, a tirar millas. Como dicen por mi tierra, pa ti la perra gorda, que yo ya estoy mayor para aguantar gilipolleces.
belmonte_drums escribió:Buena es la fiesta. Cambiando un poco el ambiente, ¿entonces la key que se busca es de 16 Bytes? (16 de iv más la key serían 256 bits). O por el contrario, ¿la key sigue siendo de 256 bits a parte del iv que no buscas?
Lo digo porque lo mismo se podría jugar un poco con la estadística y probabilística y descartar más de la mitad de keys a probar en fuerza bruta
Gonzakpo escribió:belmonte_drums escribió:Buena es la fiesta. Cambiando un poco el ambiente, ¿entonces la key que se busca es de 16 Bytes? (16 de iv más la key serían 256 bits). O por el contrario, ¿la key sigue siendo de 256 bits a parte del iv que no buscas?
Lo digo porque lo mismo se podría jugar un poco con la estadística y probabilística y descartar más de la mitad de keys a probar en fuerza bruta
Solo se prueban los 256 bits de la llave. No se buscar el IV. Es irrelevante para nuestros fines.
De todas formas, no te emociones, las probabilidades de encontrar "solo" la llave son tan remotas que es más probable que cualquiera de nosotros gane la lotería.
Gonzakpo escribió:De todas formas, no te emociones, las probabilidades de encontrar "solo" la llave son tan remotas que es más probable que cualquiera de nosotros gane la lotería.