Contexto:
Quiero realizar ingeniería inversa de un protocolo implementado para la Nintendo 3DS. Sin embargo, la implementación utiliza TLS, lo que dificulta la ingeniería inversa. Actualmente puedo rastrear paquetes hacia / desde mi 3DS porque tengo un enrutador de repuesto que se está utilizando para una "prueba wifi" que funciona a través de Ethernet de mi escritorio y luego a través de la tarjeta inalámbrica de mi computadora de escritorio a Internet real.
Lo que he investigado:
- MITM
- proxies
Obstáculos:
- No puedo forzar a la 3DS a aceptar un certificado cuestionable.
- No puedo falsificar el certificado.
- No intentaré robar la clave privada real (tengo poco interés para ella una vez que conozca el protocolo).
- No puedo leer la clave de sesión de la memoria RAM de mi consola, debido a la falta de hardware.
Solución potencial:
- Estoy casi 100% seguro de que el protocolo es algún tipo de HTTP (Probablemente a través de encabezados, en su mayoría). Entonces, si el cifrado está basado en XOR, ¿puedo obtener parte de la clave, al menos? No sé mucho acerca de la criptografía.
- He pensado en configurar un proxy, una instancia de servidor de CA [y apuntar el archivo host de mi escritorio a esta instancia de servidor], instalar el certificado de Nintendo y luego sobrescribir su clave pública con mi propia clave privada y luego usar mis 3DS Certificado en el proxy para comunicarse con Nintendo. No estoy seguro de que esto funcione, ya que, honestamente, no tengo una idea completa de cómo funciona la TSL más allá de eso, no es algo que se pueda romper fácilmente.
- ¿Es la opción de fuerza bruta una opción viable si puedo generar más datos cifrados?
tl; dr- ¿Hay alguna forma de descifrar estos datos sin la clave privada del servidor o ingresar a la memoria RAM para encontrar la clave de sesión? Tengo el certificado del servidor así como el certificado del cliente de mi 3DS.