Últimamente he hablado acerca del I concurso de programación de Tuenti. Un concurso de programación Online que se llevó acabo durante la semana pasada (del 13 al 20 de Junio, muy mala fecha).
Podéis ver los enunciados de todos los problemas, con ejemplos sobre la entrada y salida (aunque a veces no hay que hacerles mucho caso) en la web oficial del concurso, pero en Vidas Concurrentes lo encontramos todo en español.
Challenge #20 : The Clumsy Programmer
Tenemos un viejo Debian de 32bits y hemos borrado nuestro home, además hemos perdido las claves para descifrar nuestros datos, ¡tenemos que recuperarla!
Este reto, casi nadie lo completamos, y en principio yo pensaba que era más difícil de lo que era. Romper un RSA de 1024 es algo muy lento, y vi que algunos lo resolvían en menos de 20 minutos. Cuando me enteré me arrepentí de no haber pasado un poco más de tiempo buscando información en lugar de abandonar, la verdad es que llevaba un ritmo de sueño muy raro esa semana, y preferí dormir un poco.
Para resolverlo, teníamos que tener en cuanta la época, no nos decían cuando, pero era un viejo Debian, era de 32bits y estábamos utilizando openssl. Parece ser que allá por 2008 se descubrió un fallo en la versión de OpenSSL que instalaba Debian (y derivados), en la que los números aleatorios necesarios para la clave RSA, en lugar de ser a través de /dev/random eran a través de la PID de OpenSSL, con lo cual tenemos muy pocas posibilidades teniendo en cuenta que muchas veces, las PID no es muy alta (más de 500 y menos de 15000, vamos generalmente), es decir, tenemos un número muy acotado de posibles claves RSA a utilizar, por lo que podemos hacer un script en bash para probarlas todas.
Para más información, podéis visitar:
- Debian Randomness
- Debian OpenSSL. Desde esta página podéis descargar un archivo con todas las claves RSA de 1024 posibles
Soluciones:
- Por José Tomás Tocino (@theOm3ga): Solución en Python/Bash [GitHub]
- Por Ramiro Aparicio (@frisco82): Solución en Bash [GitHub] (Explicaciones del 1 al 20)
- Por Yukino (@Rosapolis): Solución en Python [GitHub]
Si no estás en la lista y quieres plantear tu solución, deja un comentario con tu link !
Actualización 2011/07/03 01:52 : Añadida solución de @frisco82
Actualización 2011/07/03 13:52 : Añadida solución de @Rosapolis
Pingback: Bitacoras.com /
Pingback: Poesía binaria » Índice de soluciones a todos los retos de #tuentiContest /
Thanks for a wonderful share. Here is the great example related to you blog. Movies Jacket
I found this to be your great experience and how you fixed it octordle
Cuando me enteré me arrepentí de no haber pasado un poco más de tiempo buscando información en lugar de abandonar, la verdad es que llevaba un ritmo de sueño muy raro esa semana, y preferí dormir un poco. foundation repair contractor
You can try to play Five Nights at Freddy’s Security Breach, but the information provided is timely and beneficial. Very appealing!