Yifanlu's 3DSInstallTickets [O3DS/N3DS]

Buenas,

Visto que nadie hace mención... Yifanlu ha hecho un commit de su herramienta 3DSInstallTickets para nuestras apreciadas 3DS.

Estoy compilandolo para probar su funcionamiento, pero hasta donde he visto... Esta herramienta parece "modificar temporalmente" los certificados de la consola permitiendo instalar CIAs sin firmar, o mejor dicho... firmados con los nuevos certificados. (Corregidme si me equivoco)

Dicho "homebrew" corre sobre Ninjhax utilizando el KHax para obtener privilegios.
No sé si esto es 100% cierto, ya dije que cuando compile y pruebe contaré.

En caso de ser así, hemos pegado un bueeeeen avance.

EDIT: ¡¡Ya lo tengo compilado!! ¿Quién quiere probar?
Http://igarcias.es/3DSInstallTickets.zip
Y tanto, si de verdad funciona, se acabo depender de los flashcards por completo. [beer]

Salu2!
Esto quiere decir que podras instalar un ticketdb modificado y generar tus propios CIAs legitimos verdad?
La unica pega que le veo a esto, es que requiere el CN y la 9.2 o inferior. (aunque para eso estan las emuNAND XD)
Viendo el código hace uso de KHax para tener acceso kernel desde Ninjhax como tenía anteriormente, pero la instalación si no es de CIA firmado para tu consola o los "legit" no vas a conseguir nada :)
javiMaD escribió:Viendo el código hace uso de KHax para tener acceso kernel desde Ninjhax como tenía anteriormente, pero la instalación si no es de CIA firmado para tu consola o los "legit" no vas a conseguir nada :)

Hay esta donde entraria el mundo de la Scene XD, no creo que, teniendo estas posibilidades, no saquen un KeyGen que genere unas claves para firmar el CIA, y automaticamente lo aplique al TicketDB, por lo que al instalar ese CIA seria legitimo, obviamente solo para tu consola.
javiMaD escribió:Viendo el código hace uso de KHax para tener acceso kernel desde Ninjhax como tenía anteriormente, pero la instalación si no es de CIA firmado para tu consola o los "legit" no vas a conseguir nada :)


La funcion AM_SetCertificates, el "ticket_rootca" y el "ticket_cert" embedido dicen lo contrario.

static Result AM_SetCertificates(int count, const u8 *certs[4], u32 sizes[4])
{
        Result ret = 0;
        u32 *cmdbuf = getThreadCommandBuffer();

        cmdbuf[0] = 0x08190108;
        cmdbuf[1] = count > 0 ? sizes[0] : 0;
        cmdbuf[2] = count > 1 ? sizes[1] : 0;
        cmdbuf[3] = count > 2 ? sizes[2] : 0;
        cmdbuf[4] = count > 3 ? sizes[3] : 0;
        cmdbuf[5] = 16 * (count > 0 ? sizes[0] : 0) + 10;
        cmdbuf[6] = count > 0 ? (u32)certs[0] : 0;
        cmdbuf[7] = 16 * (count > 1 ? sizes[1] : 0) + 10;
        cmdbuf[8] = count > 1 ? (u32)certs[1] : 0;
        cmdbuf[9] = 16 * (count > 2 ? sizes[2] : 0) + 10;
        cmdbuf[10] = count > 2 ? (u32)certs[2] : 0;
        cmdbuf[11] = 16 * (count > 3 ? sizes[3] : 0) + 10;
        cmdbuf[12] = count > 3 ? (u32)certs[3] : 0;

        if((ret = svcSendSyncRequest(amHandle))!=0) return ret;

        return (Result)cmdbuf[1];
}


Llamada a la funcion...
printf("Setting certificates.\n");
  const u8 *certs[4] = {ticket_cert, ticket_rootca};
  u32 sizes[4] = {sizeof(ticket_cert), sizeof(ticket_rootca)};
  if ((res = AM_SetCertificates(2, certs, sizes)) != 0)
  {
    printf("Error setting certificates: 0x%08X\n", res);
    return;
  }
Uy pues si esto apunta bien... esperemos que no termine en saco roto como OSKA u otros proyectos....
Ya tengo generado el invento. ¿Quién quiere probarlo?
yo lo probaría ya , pero no tengo en casa mi 3ds para probar estas cosas ,hasta el fin de semana no puedo probarlo, pero a ver como avanza esto , que tiene muy buena pinta
ZeroData escribió:
javiMaD escribió:Viendo el código hace uso de KHax para tener acceso kernel desde Ninjhax como tenía anteriormente, pero la instalación si no es de CIA firmado para tu consola o los "legit" no vas a conseguir nada :)


La funcion AM_SetCertificates, el "ticket_rootca" y el "ticket_cert" embedido dicen lo contrario.

static Result AM_SetCertificates(int count, const u8 *certs[4], u32 sizes[4])
{
        Result ret = 0;
        u32 *cmdbuf = getThreadCommandBuffer();

        cmdbuf[0] = 0x08190108;
        cmdbuf[1] = count > 0 ? sizes[0] : 0;
        cmdbuf[2] = count > 1 ? sizes[1] : 0;
        cmdbuf[3] = count > 2 ? sizes[2] : 0;
        cmdbuf[4] = count > 3 ? sizes[3] : 0;
        cmdbuf[5] = 16 * (count > 0 ? sizes[0] : 0) + 10;
        cmdbuf[6] = count > 0 ? (u32)certs[0] : 0;
        cmdbuf[7] = 16 * (count > 1 ? sizes[1] : 0) + 10;
        cmdbuf[8] = count > 1 ? (u32)certs[1] : 0;
        cmdbuf[9] = 16 * (count > 2 ? sizes[2] : 0) + 10;
        cmdbuf[10] = count > 2 ? (u32)certs[2] : 0;
        cmdbuf[11] = 16 * (count > 3 ? sizes[3] : 0) + 10;
        cmdbuf[12] = count > 3 ? (u32)certs[3] : 0;

        if((ret = svcSendSyncRequest(amHandle))!=0) return ret;

        return (Result)cmdbuf[1];
}


Llamada a la funcion...
printf("Setting certificates.\n");
  const u8 *certs[4] = {ticket_cert, ticket_rootca};
  u32 sizes[4] = {sizeof(ticket_cert), sizeof(ticket_rootca)};
  if ((res = AM_SetCertificates(2, certs, sizes)) != 0)
  {
    printf("Error setting certificates: 0x%08X\n", res);
    return;
  }


Esos certificados tienen que ir firmados con el certificado raíz http://3dbrew.org/wiki/Ticket#Certificate_Chain
ZeroData escribió:Ya tengo generado el invento. ¿Quién quiere probarlo?


si me haces un croquis de lo que tengo que hacer tengo una 3ds en 4.5, el cubica ninja instalado y una emunand en 9.7
Si explicas bien lo que hay que probar aqui estoy xd

Tengo una new en 9.0 con el CN
Adjunto el enlace compilado en el primer post :)
Habeis hecho alguna prueba ya? Esto puede ser muy grande para la scene
No me ha servido, necesitas un ticket db con todas las cosas.
Creo que teneis unas espectativas muy altas en esto, esta herramienta sirve para extrar datos de un ticket.db y inyectarlos en otro. Por lo que solo tiene utilidad para extraer e inyectar tickets de juegos legitimos (como los cias legitimos) o para pasar cosas de la emunand a la sysnand.

Saludos
Bueno esto permitiria "transplantar" datos de un ticket.db a otro? O en concreto ¿cual es su proposito?
Que en mi caso tengo 2 3ds's una con una buena cantidad de juegos LEGALES como en este caso tengo las emunands en 9.7 es mas que obvio que no jalara en estas..ZeroData ¿podrias compilarlo en un 3ds?? para testearlo Que igual sirve para algo interezante esta aplicacion..
Entonces esto qué hace, ¿permite instalar cias no legítimos o copia un archivo a ese cia NO legítimo para que sea legítimo y permita instalarlo?
MANUMT escribió:Entonces esto qué hace, ¿permite instalar cias no legítimos o copia un archivo a ese cia NO legítimo para que sea legítimo y permita instalarlo?

No, simplemente, permite inyectar un ticketDB, pero creemos que esta la posibilidad de crear una entrada y firmar un cia con esa entrada para que sea legitimo en nuestra consola, pero eso de momento no se puede o se sabe hacer XD
CrusardGameamos escribió:
MANUMT escribió:Entonces esto qué hace, ¿permite instalar cias no legítimos o copia un archivo a ese cia NO legítimo para que sea legítimo y permita instalarlo?

No, simplemente, permite inyectar un ticketDB, pero creemos que esta la posibilidad de crear una entrada y firmar un cia con esa entrada para que sea legitimo en nuestra consola, pero eso de momento no se puede o se sabe hacer XD

Pero los ticket.db estan encriptados?
No se podria extraer el ticket.db de fire emblem por ejemplo e inyectarlo a un cia de Inazuma eleven y convertir a este en un cia legitimo?
Eso es lo que he entendido con el primer mensaje jajaj
Blackfox1010 escribió:
CrusardGameamos escribió:
MANUMT escribió:Entonces esto qué hace, ¿permite instalar cias no legítimos o copia un archivo a ese cia NO legítimo para que sea legítimo y permita instalarlo?

No, simplemente, permite inyectar un ticketDB, pero creemos que esta la posibilidad de crear una entrada y firmar un cia con esa entrada para que sea legitimo en nuestra consola, pero eso de momento no se puede o se sabe hacer XD

Pero los ticket.db estan encriptados?
No se podria extraer el ticket.db de fire emblem por ejemplo e inyectarlo a un cia de Inazuma eleven y convertir a este en un cia legitimo?
Eso es lo que he entendido con el primer mensaje jajaj

Encriptados no, simplemente estan firmados, y se componen, segun he entendido, de 2 firmas, la firma del juego o programa y una firma para el ticketDB
Entonces seria posible extraer dicho ticket.db cone ste programa y de esta extraer la firma del juego?
Igual con solo editar algunos valores se convierte en la firma de otro juego no? XD
Aunque eso ya seria plraterla no? XD
Blackfox1010 escribió:Entonces seria posible extraer dicho ticket.db cone ste programa y de esta extraer la firma del juego?
Igual con solo editar algunos valores se convierte en la firma de otro juego no? XD
Aunque eso ya seria plraterla no? XD

Nop XD
Ten en cuenta que el ticketDB tiene 1 firma por cada programa y una firma general que se actualiza segun se actualizan las otras firmas (no es asi exactamente pero es para que me entiendas XD) si esa firma no esta bien, se borra el ticket y se genera uno nuevo.
Pero que no te extrañe que mañana hagan un especie de KeyGen para hacer esto.
CrusardGameamos escribió:
Blackfox1010 escribió:Entonces seria posible extraer dicho ticket.db cone ste programa y de esta extraer la firma del juego?
Igual con solo editar algunos valores se convierte en la firma de otro juego no? XD
Aunque eso ya seria plraterla no? XD

Nop XD
Ten en cuenta que el ticketDB tiene 1 firma por cada programa y una firma general que se actualiza segun se actualizan las otras firmas (no es asi exactamente pero es para que me entiendas XD) si esa firma no esta bien, se borra el ticket y se genera uno nuevo.
Pero que no te extrañe que mañana hagan un especie de KeyGen para hacer esto.

Ojala :o
No creo que alguien se ponga a hacer esto jajajaj
24 respuestas