Gooood morning Vietnam! Siguiendo con la tradición (2014,2013,2012,2010,2009,2008,2007) que lamentablemente dejé de lado en 2015 y 2016, quiero volver a publicar soluciones para el HackIt! de la Euskal Encounter de este año (25 ediciones ya, OMG, cómo pasa el tiempo…) Lo primero, saludos a @marcan42 e @imobilis, por organizar el evento un año más. Lo segundo, pedirle a @marcan42 que suba las pruebas que faltan (have you stopped being lazy yet?) };-)
Yes, once I stop being lazy 🙂
— Hector Martin (@marcan42) 18 de marzo de 2017
Vamos con el Level 1. Facilito, pero más complejo que otros años para ser una prueba de calentamiento.
Nos presentan un mapa de reservas de sitios… algo modificado:
Si abrimos el código y miramos las diferencias con el mapa de ocupación original, vemos algo raro (¡en el código de producción!):
Funciones xor, magic numbers y uno de ellos 31337 (eleet!, elite)… huele a que vamos por el buen camino 😉
La idea consistió en poner un breakpoint en la función w() de producción y otro en el de la prueba. En la ventana de la prueba, recogemos el array de datos y lo inyectamos en el de producción, para ver qué pintaba en pantalla esa función. ¡Sorpresa!
UPDATE: los compañeros de w0pr han empezado a publicar un write-up con sus impresiones. ¡Imprescindible lectura!
BTW, se agradecen comentarios, gritos y kudos del resto de equipos :)) La idea es aprender nuevas formas de sacar las pruebas, porque seguro que en algunas de ellas hay más de una. De hecho, me interesa también conocer más sobre las técnicas fallidas (aquellas que se intentaron aplicar pero que no llevaron a ninguna parte). Muchas veces se aprende más de los errores que de las vías directas a la solución…