Hack-It 1: 2015

Vamos con un hackit de los sencillitos que tenía por ahí en el tintero. Se trata del siguiente:

Hackit_01.PNG

Expresionismo… regularidad … tiene toda la pinta de que algo va a tener que ver con expresiones regulares este tema …

Vamos a editar el código fuente a ver que hay, que en los hackits, sobre todo los iniciales, casi siempre hay que hacerlo.

Hackit_02.PNG

Bueno, pues ahí tiene toda la pinta de que hay algo con lo que tendremos que pelearnos… Vamos a pasarle el beutifier para ver un poco más bonita ese trozo de código:

Hackit_03.PNG

Podemos ver que se define un parámetro de color de background en base a lo que parece una expresión regular … (estaba claro, dado el título del hackit…).

De hecho, hay varias expresiones regulares en la misma línea, con lo que se han de cumplir todas para que ese color de background que se programa en el css se vuelva verde:

Hackit_04.PNG

#8f8 = verde

#f88 = rojo

Total, separamos las expresiones regulares para ver qué pinta tienen:

/(.)(.)(.)(.).[h4x0r].[G1rlZ]\4[xyzzy]\3\1\2.$/
/^[bEc].[hACKs]*.[sTUPiD][u53rs].{2}[t4bl3ts].{5}$/
/^.[t4x].{2}[fr33].{3}[b4nG].[bUx]/
/^[^c0mPUtEr].[v1rUs3s][4TT4cK].[F4C3TR0LL].(.).\1.{2}[(-:].\1$/

Bueno, antes de continuar … vamos a decir un poco de qué va esto de las expresiones regulares… que recuerdo que cuando vi en la Euskal este hackit no sabía ni de qué se trataban las expresiones regulares ni mucho menos de que existiesen xD.

Un compi muy amablemente me explicó de qué iba el asunto, para qué servían y por supuesto resolvimos el problema, que a modo ejemplo me vino bastante bien para entenderlas … 😉

Una expresión regular son una serie de caracteres que definen un patron que se utiliza para buscar las coincidencias en un texto. Un ejemplo sencillo sería: para localizar la palabra “hola” dentro de un texto la expresión regular sería /hola/. Este ejemplo sería muy básico ya que luego hay operadores y caracteres especiales que ponen condiciones para la búsqueda, que hacen de que la herramienta sea realmente potente…

Hay mucha documentación al respecto de esto en internet así que tampoco voy a explicar nada en detalle sobre cómo funcionan las expresiones regulares (… de las cuales realmente no soy un experto ni mucho menos tampoco…). Aquí dejo una URL con un minicurso sobre el tema:

https://regexone.com/lesson/introduction_abcs

Así que vamos al grano.

La contraseña correcta, supuestamente, ha de cumplir las 4 expresiones regulares que nos da marcan así que vamos a empezar… pero no con la primera ya que ésta no nos define el inicio de la cadena de texto, sino con la segunda:

/^[bEc].[hACKs]*.[sTUPiD][u53rs].{2}[t4bl3ts].{5}$/

Una expresión regular que empieza con “/^” nos indica precisamente esto que he dicho: el comienzo de la cadena de caracteres, por eso he elegido esta como la primera a analizar, ya que la que está originalmente la primera, es esta:

/(.)(.)(.)(.).[h4x0r].[G1rlZ]\4[xyzzy]\3\1\2.$/

no comienza con el símbolo “/^”, con lo que nos está dando la expresión regular con sus restricciones… pero no nos asegura realmente que empieza con ese ‘(.)’.

Así pues, si desmenuzamos la expresión regular poco a poco tenemos:

/^ : comienzo de la palabra clave/contraseña del nivel

[bEc] : esto indica que el siguiente será el carácter ‘b’, ‘E’ o ‘c’ (uno y sólo uno: en las expresiones regulares lo que haya entre corchetes ‘[‘, ‘]’ indica 1 único carácter de los que hay en su interior. Además ojo, mayúsculas y minúsculas aquí se tienen en cuenta: una ‘E’ es diferente de una ‘e’).

. : un punto en una expresión regular significa cualquier caracter o número

[hACKs]* : esto indica que despues habra una ‘h’, ‘A’, ‘C’, ‘K’ o ‘s’ … Pero luego hay un ‘*’, el cual significa que puede haber después tantas ‘h’, ‘A’, ‘C’, ‘K’ o ‘s’ como sean (incluso 0!!), no únicamente 1 como el caso anterior. Esto nos va a indeterminar el tamaño completo de la clave del nivel … Pero bueno, lo acotaremos más tarde con el resto de expresiones regulares…

[sTUPiD] : Lo mismo que antes entre esas 6 letras.

[u53rs] : Lo mismo de nuevo entre esos caracteres…

.{2} : cuando tenemos un numero entre llaves ‘{‘, ‘}’ significa que lo que hay antes se repite ese numero de veces; es decir, un ‘.{2}’ es igual que ‘..’, así que tenemos luego 2 caracteres cualesquiera

[t4bl3ts] : Lo mismo … uno de esos 7 caracteres …

.{5} : esto seria lo mismo que ‘…..’ como he dicho hace un momento …

$/ : Finalmente esto, significa que acaba la expresion regular y por tanto nuestra contraseña. El dolar ($) es el que indica el final.

Así pues, después de esta primera expresión regular, si asignamos a una fila cada uno de los caracteres posibles de la password tendriamos:

Hackit_13.PNG

Donde he puesto los ?? pueden ser que haya mas letras o incluso ninguna, incluyendo el “hACKs” ! (el * significa que puede que haya 0 caracteres de los especificados como he dicho anteriormente…)

Vamos con la siguiente expresíon regular:

/^.[t4x].{2}[fr33].{3}[b4nG].[bUx]/

Como podemos ver, esta nos define también el incio… pero sin embargo no el final (no hay un ‘$/’ al final de la misma). Aun así, vamos a analizarla igualmente:

/^ : Comienzo de la expresión regular y contraseña del nivel

. : Un caracter cualquiera

[t4x] : uno de estos caracteres

.{2} : 2 caracteres cualquiera

[fr33] : uno de estos caracteres

.{3} : 3 caracteres cualquiera

[b4nG] : uno de estos caracteres …

. : Un caracter cualquiera

[bUx] : y finalmente uno de esos caracteres entre corchetes

después ya no hay más pero no significa que la contraseña no acabe. Lo añadimos a lo que ya teniamos:

Hackit_05.PNG

Hay que tener en cuenta que no tienen por qué coincidir las letras de cada columna más allá de la 4 fila…

Vamos con la siguiente, que esa si, por fin, nos define el tamaño total de la contraseña:

/^[^c0mPUtEr].[v1rUs3s][4TT4cK].[F4C3TR0LL].(.).\1.{2}[(-:].\1$/

/^ : Comienzo

[^c0mPUtEr] : esto nos indica que hay un caracter, pero a diferencia del que no tiene un ‘^’ (cualquiera de las anteriores que hemso visto hasta ahora) nos dice que es un caracter que NO es ninguno de los listados; es decir, no es una ‘c’, ni un ‘0’, ni una ‘m’, etc…

. : cualquier caracter…

[v1rUs3s] : cualquier caracter de los que hay entre corchetes…

[4TT4cK] : idem …

. : cualquier caracter…

[F4C3TR0LL] : cualquier caracter de esos…

. : cualquier caracter…

(.) : ojo que vienen curvas … esto significa al igual que el ‘.’, que se trata de cualquier caracter, pero al indicarlo entre paréntesis indica que ese carácter lo queremos “capturar”. Ahora veremos para que.

. : cualquier caracter…

\1 : Y aquí viene el complemento de usar los paréntesis para capturar. Este ‘\1’ significa que este carácter se trata del mismo que estuviera entre ‘(‘, ‘)’. Es decir, en este caso, este carácter y el de “hace 2” han de ser el MISMO.

.{2} : 2 caracteres cualquiera…

[(-:] : 1 de esos elementos entre corchetes… como siempre…

. : 1 carácter cualquiera…

\1 :  Y de nuevo, este será el mismo caracter que habrá entre los paréntesis anteriores.

$/ : Y se acabó. Y con esto ya podemos definir el tamaño de la password!

Colocamos primero lo que hemos sacado de esta expresion regular:

Hackit_06.PNG

Ahora podemos ajustar las lineas de la primera columna a la última, ya que sabemos que tanto la primera como la ultima columna acaban y además han de hacerlo en la misma posición (la password tiene que ser la misma => misma longitud…):

Hackit_07.PNG

Y bueno, finalmente vamos con la ultima expresión regular a ver qué nos dice:

/(.)(.)(.)(.).[h4x0r].[G1rlZ]\4[xyzzy]\3\1\2.$/

Como vemos no empieza por el principio de la password en sí, pero sí que termina justo al final de la misma (lo vemos porque acaba en ‘$/’). Vamos a ello:

(.) : Un caracter cualquiera que además capturaremos (luego nos podremos referir a él con ‘\1’ como hemos visto antes.

(.) : Lo mismo, otro caracter cualquiera que capturaremos y luego nos podremos referir a él con ‘\2’ (ya que es la “segunda captura”).

(.) : Y lo mismo con el tercero …

(.) : … y cuarto carácter

. : Luego tenemos un caracter (esta vez sin capturar).

[h4x0r] : Luego ha de ser uno de estos 5

. : Luego tenemos otro carácter.

[G1rlZ] : Luego otro de estos 5 …

\4 : esto indica que el 4º caracter capturado ‘(.)’ anteriormente es el mismo que habrá aquí.

[xyzzy] : Despues habrá una de estas 5 letras, que sí, están repetidas algunas; es trivial.

\3 : el 3er carácter capturado con los paréntesis será el mismo que ocupe esta posición …

\1 : Lo mismo con este, pero siendo el primer carácter capturado

\2 : Y lo mismo con este pero el 2º…

. : Luego tenemos a otro carácter cualquiera …

$/ : Y finaliza la expresión regular …

Así que con estas restricciones a ver si se puede formar la contraseña del nivel… Recordemos que tenemos que ajustar esta expresión regular comenzando por el final (ya que tenemos el ‘$/’ pero NO nos indica el ‘/^’) y nos quedaría asi:

Hackit_08.PNG

Pues empecemos por la primera letra (primera linea): tenemos que tiene que ser una de estas tres letras: “bEc” y que NO puede ser ninguna de “c0mPUtEr” => la ‘c’ y la ‘E’ no pueden ser, pero sí que lo será la ‘b’. Ya tenemos la primera letra entonces: ‘b

Siguiente: Pues de la siguiente línea solamente disponemos de esta información: es una de estos 3 caracteres: “t4x”. Y ahora viene lo que parece un troleito de marcan … Si nos fijamos, de la 4ª expresión regular vemos que lo sea este carácter, ha de ser lo mismo que haya en la 3ª posición empezando por la última letra Y además tiene que ser un carácter de entre ‘(‘, ‘-‘ ó ‘:’ como nos indica la 3ª expresión regular:

Hackit_09.PNG

Es evidente que aquí algo no cuadra… no puede ser un caracter de entre estos tres: “t4x” y a su vez de entre estos otros tres: “(-:” … Lo dejaremos para luego porque parece lo dicho, un trolleo de marcan …

Sigamos pues con el tercer carácter, que tendrá que ser uno de los que esté en “hACKs” y también ha de estar en “v1rUs3s”; es decir, únicamente puede ser la ‘s‘. Y además, podemos sacar que la ‘s’ también será el penúltimo carácter (debido a la última expresión regular.

El cuarto tendrá que estar en “hACKs” y “4TT4cK” => ‘K‘. Que, de forma similar al anterior, estará en la 4ª posición empezando por el final.

El quinto tiene que ser un caracter de “fr33” y además nos pone la última expresión que es la captura numero 4 utilizada unas posiciones más adelante con lo que realmente nos está indicando también que ha de ser uno de entre “t4bl3ts”: es decir, tenemos un ‘3‘:

Hackit_10.PNG

(Luego de aquí sacaremos que tres posiciones más adelante tendremos también un 3 debido a ese (=1) ).

El sexto carácter es simplemente el solape de “sTUPiD” y “F4C3TR0LL”, es decir, una ‘ T ‘.

Lo mismo con el séptimo: “u53rs” y “h4x0r” => ‘r‘.

En la siguiente en la que tenemos el (=1), como he dicho hace un par de párrafos, tendrá que ser un ‘3‘.

El noveno “b4nG” y “G1rlZ” => ‘G

El décimo carácter ha de ser el mismo que hemos sacado antes de “t4bl3ts” y “fr33” así que aquí irá un ‘3‘.

Undécimo: “bUx” y “xyzzy” => ‘x‘.

Duodécimo carácter: aquí solamente tenemos la información de que es (=3) de la última expresión regular así que será el mismo que el cuarto carácter: ‘K

Hackit_11.PNG

El decimotercer carácter, como he dicho anteriormente, creo que es un troleito de marcan … lo vamos a dejar para lo último…

El decimocuarto será el mismo que el tercero (debido a la última expresión regular) => ‘s

Y por fin, el decimoquinto y último carácter, podemos deducir de la tercera expresión regular que es igual al generado de “t4bl3ts” y “fr33”, es decir, el ‘3‘:

Hackit_12.PNG

Si ponemos todo junto tenemos:

b ? sK3Tr3G3xK ? s3

Donde he puesto los ‘?’ es donde está la confusión (aka: troleada de marcan), pero bueno, vistas las opciones que hay creo que está bastante claro que el carácter que faltaría es un ‘4’; de ‘t4x’ es lo que más cuadra ya que sale:

b4sK3Tr3G3xK4s3

(basket regex case)

 

 

 

 

 

Solve-It EE27 : Nivel 3

Este solveit la verdad es que era considerablemente más fácil que el 2 …

No tengo ninguna captura del enunciado; me lo pasaron directamente en fichero de texto … (era muy largo …..)

Solve It 3: Uphold The Rules
by marcan • Resuelto por 8 usuarios

NORMAS GENERALES DE PARTICIPACIÓN

Es importante leer estas normas y ser conscientes de ellas durante el transcurso de la party. El hecho de acceder al recinto implica vuestro conocimiento y aceptaciòn de las mismas.

LA ORGANIZACIÒN

La party un evento que, a pesar de estar patrocinado por diferentes entidades, se lleva a cabo de la mano de voluntarios que componen la Organización. Dichos voluntarios, como organizadores, velan por el correcto funcionamiento de todos los aspectos del evento. Como tal, han de supervisar las actividades, los servicios prestados, y cualquier aspecto que pueda afectar a los usuarios. Entre sus labores está, no sólo las orientadas a garantizar los derechos de los participantes, sino también las que tienen como objeto el hacer que se cumplan las normas que a continuaciòn se detallan. Todos y cada uno de los organizadores cuentan con autoridad y respaldo de la Organización para llevar a cabo las acciones que consideren oportunas para garantizar el cumplimiento de las normas o la aplicaciòn de las sanciones correspondientes. No obstante, existe la figura de responsable de seguridad que estará debidamente identificado y que velarà por el cumplimiento de estas normas y asistirà al usuario ante cualquier eventualidad que pudiera producirse.

Se prohìbe el uso de identificativos de la Organizaciòn a aquellas personas que no pertenezcan a la misma. Todo aquel que se haga pasar por miembro de la Organizaciòn (portando la camiseta característica o de cualquier otra manera) podrà ser sancionado.

Está igualmente prohibido portar camisetas de la organizaciòn de años anteriores sea cual fuere la forma de la que se ha obtenido la misma.

EL RECINTO

El lugar de celebración del evento es alquilado a terceros debido a la idoneidad de sus instalaciones, su ubicaciòn, su tamaño, y sus facilidades de acceso. Si bien la Organizaciòn intentará en todo momento atender las demandas de los usuarios, existen ciertos servicios que quedan fuera de su alcance, y bajo la responsabilidad del propio arrendador. El trato de la Organización con el arrendador es fluido y constante, y estas demandas son, normalmente trasladadas y atendidas con celeridad.

Por otro lado, todo el material necesario para montar la party también nos ha sido alquilado. Esperamos que cada uno sepa la importancia que tiene el dejar todo el material del mismo modo en que lo encontrò.

HORARIOS y ACCESOS

El recinto permanecerà abierto 24 horas al día ...
.........

Y bueno, el texto continúa pero no voy a copiarlo todo porque como digo es excesivamente largo.

Como vemos se trata del texto de las normas de la party. Al texto orignal (porque este estará modificado) se puede acceder en estar URL:

https://ee27.euskalencounter.org/normas-generales-de-participacion.html

Sin pensarlo mucho, se puede deducir que lo que hay que hacer es comparar el texto del enunciado con el texto original (de la url anterior) ya que seguro que tiene que haber alguna diferencia…

solveit_3_01.PNG

solveit_3_02.PNG

Y efectivamente, no sé si se aprecia mucho en la imagen anterior, pero parece que las diferencias están, básicamente, en la forma de los acentos de las palabras acentuadas: unos acentos son normales ‘´’ (las del texto original) y las del texto modificado de marcan son tildes invertidas ‘`’.

Además a partir de cierto punto (en torno a la linea 130), deja de haber estas diferencias:

solveit_3_04.png

Después de ver esto, lo primero que se podría hacer es coger cada palabra con el acento invertido y quizá, utilizando la primera letra de cada una, puede salir alguna frase que sea la clave; pero enseguida se ve que esto no es así…

Aceptación; Organización; Continuación; Aplicación; Velará; Asistirá; Prohíbe; Organización, Organización, Podrá …..

AOCAVAPOOP……….

… no tiene pinta de que vayan por ahi los tiros …

Ahora bien, si nos fijamos en las palabras acentuadas, vemos que no todas las palabras que están acentuadas en el texto tienen el acento invertido:

solveit_3_03.png

Por ahí tiene que ir la cosa …

Así pues, con esto, la segunda teoría podría ser … ¿y si asociamos 1’s y 0’s a todas las palabras acentuadas, dándoles un 0 a las acentuadas normales (por ejemplo) y un 1 a las que tienen acento invertido?

Como hay muchas y soy un poco vago, voy a hacer en un momento un script en Octave que lo haga por mí.

De primeras, vemos que éste no se lleva muy bien con las letras acentuadas (tanto los  acentos normales como los invertidos) a la hora de leer el texto desde un fichero:

solveit_3_05.png

Visto esto, vamos a optar por un camino intermedio rápido y sencillo:

ya que existen dos tipos de acentos, vamos a sustituir las vocales con acentos invertidos por el valor del 1 y las vocales con acentos normales por el valor 0, todo ello directamente en el fichero de texto y con un simple (o mejor dicho, varios) “Reemplazar” de toda la vida…

Hay que tener en cuenta que hay que hacerlo con las letras mayúsculas y minúsculas… y que además puede haber 0’s y 1’s antes de hacer las sustituciones, así que hay que reemplazar primero también todos los 1’s por cualquier letra o carácter y lo mismo con los 0’s…

Hecho esto, y con el siguiente script concatenamos los 1s y 0s según van apareciendo:

solveit_3_08.png

Y obtenemos la siguiente tirada de 1s y 0s:

‘01100001010111110101011000110011011100100111100101011111010001110011001101101110011010010101010101110011010111110111001101110100001100110110011100110100011011100011000001000111010100100011010001110000011010000101100101011111010100110110001101001000001100110110110100110011001000010010000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000’

De la cual …. evidentemente sobran los últimos 0s ya que a partir de la linea 130 o así del texto, como dije al principio, desaparecen los acentos invertidos.

Y ahora, si introducimos este valor binario (hasta el último 1) en cualquier conversor de binario a ascii obtenemos:

solveit_3_09.png

a_V3ry_G3niUs_st3g4n0GR4phY_ScH3m3!!

 

 

 

 

 

Solve-It EE27 : Nivel 2

A este nivel le dediqué bastante tiempo porque realmente, siendo un nivel 2 y pareciendo tan sumamente fácil, asumí que no me llevaría demasiado tiempo:

Solveit_2_2019

“Complex Input”… Números del 0 al 9 (curioso que no haya 5’s), junto con asteriscos (*) y almohadillas (#) … Canta bastante a un teclado de teléfono ……. sin embargo, el problema es … ¿¿qué coj**** son esas flechas??

Lo primero que pensé fue en los tonos DTMF (Dual-Tone Multi-Frequency) que podrían generar las pulsaciones de esas teclas … pero seguía existiendo la incertidumbre de … ¿y las flechas?

Si miramos un poco la wikipedia al respecto, los tonos DTMF tienen 4 botones adicionales: A, B, C y D, que podrían asociarse con las flechas … ¿y por qué no?

Si buscamos por internet encontramos una pequeña web donde, introduciendo en un campo de texto las teclas que queremos pulsar, nos saca la música que genera. Concretamente esta web:

https://www.audiocheck.net/audiocheck_dtmf.php

Si introducimos todos los caracteres que nos da marcan (como digo, asociando las flechas, un poco a huevo, a los tonos de los botones A, B, C y D) lo que sale … mayormente no tiene NINGÚN sentido ni parecido con nada … así que … camino equivocado …

Posteriormente se me ocurrió que el tema de las flechas podría ser que al presionar la tecla correspondiente, se podría mantener pulsada y la flecha te indicaría hacia dónde desplazarte para sacar algún carácter especial (cosa bastante típica en los móviles modernos y tal …) pero es que … si estamos hablando de móviles DTMF … no tiene ningún sentido …

A partir de aquí dejé un poco abandonado este solveit porque no sabía muy bien qué más caminos tomar con el tema de las flechas … así que decidí seguir con el solveit 3.

Más adelante, concretamente ayer, consultando con una compañera de la competición (que sí que estuvo en la party) me comentó que efectivamente se trataba de un teclado de teléfono, pero un poco especial …. muy en la línea de marcan: teclado japonés.

Con esta información empecé a buscar (esta misma mañana) teclados japoneses en móviles nokia… y los hay… pero… estamos con el mismo problema con el tema de las flechas !! ¿qué hago con ellas?

Luego se me ocurrió coger mi teléfono y añadirle el teclado japonés… y qué sorpresa cuando me topo con esto:

TecladoJapones_01

… y más aún cuando al presionar y mantener una de las teclas me aparecen 4 posibilidades adicionales:

TecladoJapones_02.PNG

Así que ya tengo una posible solución para el tema “flechas” …

Ahora, y asumiendo que del 1 al 9 las teclas van de arriba hacia abajo y de izquierda a derecha:

TecladoJapones_03.PNG

Podemos generar el texto que nos dice marcan… y sale lo siguiente:

ぱぺぴぷぺぽぱぽろまんちっく
ぱぺぴぷぺぽぱぽこすもちっく
そうぞうりょくからはじまる
いま!いま!いま!

Que esencialmente no sé qué significa pero para eso está el traductor de google …

Traduccion.PNG

… dramático … no hay por dónde pillarlo …

Iba a darme por vencido pero he pensado … “voy a poner la primera linea del texto en google a ver que sale” …

Me han salido varios enlaces a vídeos japoneses:

Captura_Google.PNG

Sinceramente, no tenía ninguna esperanza en ellos pero aún así, me he puesto a verlos, empezando por el primero.

He comenzado a verlo SIN sonido (porque ya digo que pensaba que estaba perdiendo el tiempo…). Sin embargo, los vídeos tienen subtítulos y curiosamente (y por suerte he de decir…) me he fijado justamente en un fotograma que contenía lo siguiente:

subsJapones.jpg

Me he dado cuenta de que esos caracteres eran los mismos que los de la última frase del mensaje en japonés:

いま!いま!いま!

Mucha casualidad para ser coincidencia (como otras muchas veces).

Es entonces cuando me he puesto los cascos y he oído que la canción decía exactamente lo mismo que el texto traducido:

Traduccion_02.PNG

y dado que en el solveit pone al final de la ultima frase un ” ….?” podría ser la password la palabra que dicen después? :

imagination

Y digo “podría ser” … porque no sé realmente si es la correcta!!!! (como digo, no asistí a la Euskal este año) Que me lo confirme marcan o algún asistente que lo haya resuelto 😛

editado: marcan ha comentado que la respuesta es correcta. Y que además, se aceptaba la palabra también en japonés:

イマジネーション

 

 

Solve-It EE27 : Nivel 1

Pues aquí estamos de nuevo … y pese a que este año no he pisado la party 😥 …. sí que me han ido pasado algunos de los solve-it… 🙂

Así que vamos con el primero que es el más sencillo, y además en este caso, muy corto y casi no necesita explicación:

SolveIt_1_2019.jpeg

Como vemos son unas cuantas imágenes del espacio … => google imagenes …

Así pues, si nos ponemos a buscarlas nos vamos encontrando con que son, en su mayoría, de galaxias, nebulosas y demás con nombres como M63, Canes Venatici, NGC 1566, etc …

Hay quien podría pernsar (como hice yo) que lo que hay que hacer es coger la inicial de cada uno de los nombres de las mismas y de ahí formar lo que sería la password, pero no … es bastante más simple … Y me di cuenta según iba buscando cada una de las imagenes para en google.

Cada una de las imágenes originales tienen en común que sido tomadas por el mismo telescopio …

Hubble

 

Solve-It 2013 : Nivel 7

 

Bueno, por fin parece que acabamos con los solve-its del año 2013… Vamos con el enunciado del último …

Captura.JPG

Pues si vamos a ese servidor como se nos dice, se trata de un stream de un audio .ogg.

Nada más ponerlo podemos comprobar que son pitidos estilo morse con una música tipo jazz de fondo … (os dejo a continuación el enlace a la web de marcan para que la escuchéis)

Intentar guardar el fichero de audio es algo un poco dramático, ya que es un stream que está en bucle y por tanto anda creciendo contínuamente en tamaño y al no tener tamaño fijo nunca termina de descargarse así que se queda descargando infinito tiempo…

Lo que hice yo básicamente es esperar lo suficiente como para que se reprodujera el fichero completo y posteriormente ponerlo a descargar para luego coger el archivo .part que se genera mientras está descargándose:

Captura02.JPG

Para abrir este archivo de sonido usamos el Audacity y nos aparece esto (en mi caso):

Captura03.JPG

Yo seleccioné todos y me aparecieron las siguientes pistas:

Captura04.JPG

Como podemos ver, la primera esta incompleta, pero la tercera no, así que desechamos las primeras y nos quedaremos con la última solamente.

Si hacemos zoom sobre la pista de audio podremos diferenciar muy fácilmente los puntos de las rayas del morse.

Captura05.JPG

Podríamos a partir de aquí ir transcribiendo los guiones y puntos en un fichero de texto según los datos que tenemos … pero … la longitud del fichero de audio es bastante … grande y no me apetece básicamente, así que guardo el archivo de sonido como “hackElBueno.ogg”; abro Octave y lo leo de la siguiente forma:

>> soni = audioread(‘hackElBueno.ogg’);

Así se abre como un array. Ahora hay que tratarlo para leer el morse con el script que sale a continuación.

Bueno, antes de empezar con el script, lo que hago es tomar la anchura de lo que representa un punto y una raya según el sampleo que tengo del fichero de sonido:

Captura06

Vemos que la anchura de una raya mas o menos es de unos 6000 muestras y la de un punto en torno a 2000 muestras.

Con esta premisa hacemos el programa/script que detecta automáticamente los puntos, las rayas y también los espacios entre los distintos caracteres del morse.

La distancia entre caracteres es bastante diferenciable con respecto a la distancia entre rayas y puntos de un mismo caracter, como podemos ver en la siguiente captura:

Captura07.JPG

Tendremos también que tener en cuenta que para considerar que estamos ante el sonido de un pitido de morse, la amplitud de la señal ha de ser mayor que 0.6 (se puede apreciar en la captura anterior que 0.6 puede ser perfectamente válido… como otros muchos realmente …).

Empezamos con lo siguiente:

>> tamsoni = size(soni);
>> tamsoni = tamsoni(1);
>> fp = 0;
>> ultimoSampleMayorQue07 = 1;
>> mensaje = ”;
>> mensajeTXT = ”;
>> contTXT = 1;
>> cont = 1;
>> letra = 1;
>> mantener = 0;

Inicializamos todas estas variables como vemos en la captura anterior para luego hacer en un bucle for de la siguiente manera:

>>  for a=1:tamsoni
>>   if (abs(soni(a,1))>0.7 && fp == 0) //detectamos un pitido morse
>>     ultimoSampleMayorQue07 = a;  //almacenamos posicion del inicio del pitido
>>     fp = 1;
>>     if (mantener > 4000)  //Si detectamos un espacio entre caracteres morse …
>>        letra = letra + 1;
>>        cont = 1;
>>        mensajeTXT(contTXT) = ‘ ‘; //Ponemos un espacio en la cadena de texto
>>        contTXT = contTXT + 1;
>>     end
>>   end

>>   if (abs(soni(a,1)) < 0.7) //Si no estamos durante ningun pitido morse…
>>     mantener = mantener + 1;  //Vamos aumentando esta variable
>>   else
>>     mantener = 0;  //y si estamos en medio de un pitido, la ponemos a 0
>>   end

>>   if (abs(soni(a,1))<0.7 && fp == 1 && mantener>200) //Si acaba el pitido …
>>     if (a – ultimoSampleMayorQue07 < 4000) //… y ha sido menor de 4000
>>       mensaje(letra,cont) = ‘.’;  //Es un punto
>>       cont = cont + 1;
>>       mensajeTXT(contTXT) = ‘.’;
>>       contTXT = contTXT + 1;
>>     else
>>       mensaje(letra, cont) = ‘-‘; //Si no era un punto, sera una raya
>>       cont = cont + 1;
>>       mensajeTXT(contTXT) = ‘-‘;
>>       contTXT = contTXT + 1;
>>     end
>>     ultimoSampleMayorQue07 = a;
>>     fp = 0;
>>   end
>>  end

Y con este programilla, que igual parece algo aparatoso de hacer, pero realmente es muy simple y cuesta menos que hacer a mano… Obtenemos directamente una cadena de texto con el código morse en forma de puntos y rayas:

–… .— ..— .- … – -..— -.- –.. .. .-.-. -..-. .–.- -.–. —.- –.. —- .. ..- -… .-… -..-. –.-. .-.- .- .-.– .. —.- –.- .-.-.. ..– —- –. -… .-.. .-.-. -. .-.-. -. .. — .-.-.. –.-. .. .– .-.-.- .- .–. –.-. — -.-. ..- -. .- -..- –.-. — ..- .-.. .-.-.. -.-.. ..-.- .— –.– -.-.. … -…- -. –. –.-. .-. .- .-.-.. -.-.. ..-.- .— .-.. .. .–. .-.. –. -.-.- .—. -. –. –.-. .-. .- .-.-.. ..- -.- -.-.. .-. .-.-. .-.– –.-. .-. .- –.-. .-.-.- -.-.. ..-.- .— ..-.- —.- .-.– -. –. –.-. .-. .- .-.-.. -.-.. ..-.- .— .-. .-.. .—. -. –. –.-. .-. .- .-.-.. -.-.- — .-. … .— .- ..- —- ..-.. -..-. .-. .- — .-.-.. ..- —. -..-. .–. .-.. .-. .- –.-. .-.-.- -.-.. ..-.- .— -.-.. —.- .. .–. -.– -. –. –.-. .-. .- .-.-.. -..-. ..-. .-.- .-.-. .-.-.- -.-. -.. .-.-. —- .. ..– –.-. .. -..– .-.-. -… .. .-.-. -.-. –.-. -…- .- .— -.-. -..– ..- –. — …- –.-. .-.– …- -. .. -.-.- .- .-.-..

Y bueno, ya con los puntos y las rayas fácil, no?

Vamos a pasarlo por algún decodificador online de morse:

Captura08.JPG

Oh.. vaya… qué sorpresa … marcan liándola en algún solve-it … ¬¬

7J2AST<DO>KZI<AR>/#<KN>#Z#IUB<AS>/#<AA>A#I#Q###GBL<AR>N<AR>NIM##IW.AP#MCUNAX#MUL###J##S<BT>NG#RA###JLIPLG<CT>#NG#RA#UK#R<AR>##RA#.##J###NG#RA###JRL#NG#RA#<CT>MRSJAU##/RAM#U#/PLRA#.##J##IPYNG#RA#/F<AA><AR>.CD<AR>#I##I#<AR>BI<AR>C#<BT>AJC#UGMV##VNI<CT>A#

Es curioso que el inicio del mensaje es legible, es decir, 7J2AST se lee bien en morse y se corresponde con letras y números del morse estándar al parecer… pero luego… liadón…

Bueno, es hora de pensar …

Después de dar unas vueltas al tema nos centramos en la música de fondo … ¿de qué será? (si es que es de algo…) Vamos a darle al Shazam o a alguna mierda de software semejante para ver si suena la flauta y la reconoce …

photo_2019-06-04_17-38-54.jpg

Pues efectivamente …

 

Evangelion 2.0 … y qué es Evangelion 2.0? Pues una película de animación Japonesa

Siguiente paso? Pues seguramente si buscamos en internet información sobre código morse japonés … encontremos algo útil …

Captura09.JPG

Bueno pues nada, ya tenemos entretenimiento para las proximas horas/días …

Si vamos a esa entrada de la wikipedia y nos ponemos a comparar cualquier carácter de los que aparecen en ella con alguno cogido del código morse que hemos sacado antes, vemos que efectivamente coinciden.

Por otro lado (como nota), si nos fijamos en el código morse que hemos obtenido, después de los caracteres que he dicho antes que son legibles en morse de toda la vida (7J2AST) vemos que hay un código como el siguiente:

Captura10.JPG

… que si buscamos en los signos de puntuación en código morse, en esta entrada de wikipedia:

https://en.wikipedia.org/wiki/Prosigns_for_Morse_code

(Y de hecho en la misma entrada de wikipedia del código Wabun también aparece)

Curiosamente nos dice:

Captura11.JPG

Que bueno, a estas alturas, es curioso que nos diga que está cambiando a código wabun, pero realmente ya lo sabíamos …

Total, que asociando a cada código morse un caracter en kana (creo que se llama así), obtenemos:

ワフ゛ンモールスフコ゛ウハオモシロイテ゛スネ。
ノコリハカンタンダヨ。
シ゛ヤ、イツシヨニウタイマシヨウカ。
キミヲアキラメタリシナイ。
キミヲカ゛ツカリサセタリシナイ。
ウワキナンテシナイシ、キミヲミステタリシナイ。
キミヲナカセタリシナイ。
サヨナラヲイウコトモナイヨ。
ウソモツカナイシ、キミヲキス゛ツケタリシナイ。
モチロン、ニホンコ゛ノシ゛ユンハ゛ンニシメイヲニユウリヨクシテクタ゛サイ。

Y aquí empieza el festival… Buscar la traducción de todo eso ha sido una odisea… Y en parte ha sido así porque resulta que en el código Wabun no sólo tienes que tener en cuenta el carácter en sí, sino igualmente los caracteres que le siguen a determinados caracteres… Es decir, por ejemplo:

Captura12

Captura13

Captura14

“ki” se corresponde con -.-.. pero hay que mirar si después no hay niguna de las otras 6 combinaciones posibles porque habría que cambiar la “versión” del kana por la que corresponda … una verbena vamos… porque tal y como está el texto escrito en katakana en la parte superior, esto último no lo habíamos tenido en cuenta con lo que habría que rehacerlo.

De todas formas, y después de dar más vueltas al asunto nos topamos con que hay un traductor de morse japonés que ya tiene este tipo de combinaciones en cuenta. Es el siguiente:

https://www.dcode.fr/wabun-code

Con éste decodificador, no obtenemos el texto en katakana, pero sí en romaji lo cual en parte no está mal tampoco…

Aquí pongo lo que sale de ese decodificador:

WABUNMŌRUSUFUGOUHAOMOSHIROIDESUNE.
NOKORIHAKANTANDAYO.
JA,ITSUSHONIUTAIMASHOUKA.
KIMIWOAKIRAMETARISHINAI.
KIMIWOGATSUKARISASETARISHINAI.
UWAKINANTESHINAISHI,KIMIWOMISUTETARISHINAI.
KIMIWONAKASETARISHINAI.
SAYONARAWOIUKOTOMONAIYO.
USOMOTSUKANAISHI,KIMIWOKIZUTSUKETARISHINAI.
MOCHIRON,NIHONGONOJUNBANNISHIMEIWONYUURYOKUSHITEKUDASAI.

Y a continuación, la magnífica traducción que da google al respecto:

The Japanese answering machine is also interesting.
The rest is easy.
Well, when will you sing.
Give up on you.
You will not get soaked.
I don’t cheat, I won’t give up on you.
I won’t make you cry.
I will never say goodbye.
Do not lie or hurt you.
Of course, please enter the Japanese order doctor’s name

He marcado en negrita-cursiva en el párrafo “traducido” anterior algo que nos llamó en especial la atención…

Pese a estar aparentemente penosamente traducido, salta a la vista que ese texto se corresponde con una canción bastante mítica:

Captura15.JPG

Demasiada coincidencia para no ser lo que parece …

Así que tenemos la canción de “Never gonna give you up” de Rick Astley por aquí pululando para variar …

Si nos centramos ahora en lo que son las tres primeras frases y la última, que no parecen pertecer a la canción, podríamos llegar a la conclusión de que igual las primeras frases son de troleo … y que serían algo como…

“El morse japonés es interesante…”

“Lo demás es sencillo …”

“Cantemos todos juntos …”

Y luego nos viene la canción de Rick Astley para finalmente llegar a la frase que debería de darnos la clave del nivel…

Pero nuestro problema es que las traducciones que hacemos nos desconciertan…

Según como dividas las palabras de la frase tienes unas traducciones u otras, en katakana los traductores que utilizamos no sacaban más que otros símbolos u otros textos en japonés que luego no eran capaces de traducir, …

En general, nos volvimos bastante locos …

Captura16.JPG

Lo que optamos por hacer llegado un punto fue simplemente … dar la caca a marcan en twitter para que nos dijera a ver qué pasaba con la traducción de la última frase o no sé … alguna pista! 😀

Lógicamente, no nos dio la traducción, se limitó a decirnos que la que teníamos estaba mal y que la respuesta estaba en esa última frase … Amos, soltando ni prenda, como de costumbre … xD

Total, que al final hicimos lo que había que hacer … consultar con profesionales en la materia: echamos mano de reddit en un hilo de traducciones:

モチロン、ニホンゴノジュンバンニシメイヲニュウリョクシテクダサイ。

Y esta fue su respuesta:

“Of course, enter your full name in the Japanese order”

y otro comentario posterior que vino bien también … :

“[…] Japanese order means family name first”

Y ya está! No era mi nombre (evidentemente) el que había que poner, sino el de Rick Astley … pero en orden japonés:

astley rick

Solve-It 2013: Nivel 6

Venga, que hacía mucho que no retomaba el tema solve-its. Aquí hemos vuelto; con uno que tenía a medias:

SolveIt_2013_Nivel06_captura01.JPG

A priori, como todos los solve-its, un poco desconcertante, pero como casi siempre, las cosas van cobrando sentido según vamos avanzando …

“Muy Impredecible” visto en conjunto con la tirada de numeros y asteriscos del solve-it en sí, se asocia casi inmediatamente a un teléfono móvil de esos de los viejunos, esos que tenían texto predictivo (o igual no tanto, de ahí lo de “impredecible”).

Por otro lado vemos que “parece” que se nos está pidiendo una fecha, ya que hablan de que, precisamente, se les ha perdido una y que, a cambio, tienen la tirada de números y astericos que nos muestran.

Haciendo alguna que otra búsqueda por internet, logramos encontrar un emulador de texto predictivo T9 (el que usaba supuestamente Motorola en su día):

https://www.sainsmograf.com/labs/t9-emulator/

Tecleando los números que nos dan, y teniendo en cuenta que el ‘*’ es un espacio (en el emulador de esa URL, la tecla de ‘*’ no es espacio, pero había móviles que sí que tenían el espacio en la tecla de ‘*’). Total, que obtenemos lo siguiente:

to ped a world go a grain me pand11
ame a heaven go a flower
gold infinity go the palm me wots game
ame eternity go am goup1
the tipup

 

Lo cual … no tiene casi sentido …

Sin embargo, no hay que olvidar que éste sistema no era infalible, es decir, no acertaba siempre al 100% la palabra que queríamos poner y casi siempre podíamos elegir entre varias de las opciones que nos daba; así pues, siendo un poco más selectivos tenemos:

to see a world in a grain of sand,
and a heaven in a flower
hold infinity in the palm of your hand
and eternity in an hour.
the virus

Si hacemos una búsqueda en internet, veremos que este párrafo pertenece a un poema de William Blake …

Y es entonces cuando podemos empezar a poner en la solución años de las fechas de fallecimientos, de nacimientos, de publicaciones de los poemas, etc … NADA de esto es la solución al solve-it …

Lo realmente desconcertante, y que nos va a dar la pista para dar con la solución, de este solve-it es “the virus”. (aunque hay que decir también que en el poema, la frase “and a heaven in a flower” está incompleta, ya que en el original es “in a WILD flower”… esto tambíen ayudó a que me volviera un poco loco, pero bueno, no era importante).

The virus sin embargo, NO forma parte del poema original, pero SI que es importante.

Al seguir buscando el poema con “the virus” incluído en la búsqueda, no lograba encontrar nada que no fuera la referencia en sí a esa parte del poema, ya que la palabra “virus” no me la localizaba en las búsquedas:

SolveIt_2013_Nivel06_captura03

Sin embargo, si seguimos buscando a cerca de este trozo de poema únicamente, veremos que forma parte del poema “Auguries of Innocence“, que a su vez, pertenece a la obra “The Pickering Manuscript“.

Con esta nueva información, si seguimos haciendo varias búsquedas, pero incluyendo de nuevo ‘the virus’, llegamos a toparnos con lo siguiente:

SolveIt_2013_Nivel06_captura02.JPG

“virus” y “the pickering manuscript” en el mismo enlace? Aquí tenía que estar la solución…

Resulta que Amoeba Virus es, como su nombre indica, un virus informático, que si miramos en esa misma web nos dice:

Damage:

Permanent damage: upon trigger condition, it will overwrite low tracks of a hard disk and any diskette, accompanied by a flashing display, and subsequently hang-up the system. In the overwritten partition sector, the following encrypted text (from Pickering Manuscripts: Blake’s Auguries of Innocence, first 4 lines) can be found: “To see a world in grain of sand And a heaven in wild flower, Hold infinity in the palm of your hand And eternity in a hour.” The Virus 16/3/91 When an infected system is booted, this text is displayed and the system hangs. Moreover, partition sector contains also un- encrypted texts: “AMOEBA”, and the message that University of Malta “destroyed 5X2 years of human life”. Transient damage: —

Y ahí he marcado una fecha, que es curiosamente la contraseña para pasar el nivel:

16/3/91

Solve-It EE26: Nivel 4

Vamos con uno de los niveles que únicamente sacó un grupo (Barcelona92):

Captura de pantalla 2018-07-29 a las 11.26.40.png

Este es su enunciado con unas cuantas pistas más o menos normales y entendibles y luego con su posterior pista … casi indescifrable …

A este solveit la verdad es que no le dedicamos demasiado tiempo. Nos mantuvo bien entretenido el solve-it 2 la mayor parte del tiempo … No obstante alguna vuelta que otra (y paseo por el el pabellón) ya dimos.

Con ese croquis que nos aparece ahí, estaba bastante claro que tenía que sera alguna cosa que teníamos que buscar por ahí … una T invertida? a saber…

Las tres primeras pistas estaban bastante claras en general más o menos…

La primera nos indica casi literalmente… buscad en el pabellón 5 (el de la party) ya que en el 3 (opengune) y el 1 (dormitorios) “te harán perder el tiempo”, es decir, ahí no nos ha puesto lo que sea que tenemos que buscar.

La segunda nos dice que no hay que molestar ni tocar nada ya que “todo funciona por arte de magia”. Bueno, supusimos que con esto se refería a que no tenemos que andar preguntando ni incordiando a nadie (como hicimos la mayoría de los grupos con el solve-it 3 …). El tema de “todo funciona por arte de magia” no lo comprendimos excesivamente bien … supongo que si hubiéramos topado de inicio con lo que teníamos que buscar lo habríamos llegado a comprender.

Por cierto que hay una pista más en el título en referencia a esta “magia”… Luego la comentaremos.

La tercera pista deja claro que hay duplicados (tecnología RAID-1). Sea lo que sea que hubiera que buscar, están duplicados … supusimos que el pabellón 5 es lo suficientemente grande como para poner en un único punto lo que teníamos que encontrar…

El recordatorio no lo vamos a comentar y la pista ……….. tampoco … Todavía no entendemos muy bien a qué se refería marcan con esa pista …

Vamos al tema en cuestión.

Si nos dabamos un paseo por el pabellón 5 de la euskal y nos íbamos fijando bien a una altura de 1.4m podría darse el caso de que encontrásemos cosas como esta:

O esta:

Efectivamente era lo que había que buscar …

Y había un montón, en concreto 28, aunque con 14 (no repetidos) eran suficientes para resolver el nivel.

Y no era la disposición dentro del pabellón de esas pegatinas lo que había que tener en cuenta para resolver el nivel … aquí es donde entra en juego la pista “magia” que hemos dejado al margen un poco antes.

Si nos fijamos en el titulo del level: “NO F*!%ING CLUE” y cogemos las iniciales del mismo tenemos … NFC

Por si no sabéis qué es NFC os lo digo yo. Básicamente se trata de una tecnología de comunicación inalámbrica (Near Field Communication) basada en radiofrecuencia que ahora se usa bastante para el tema de pago con teléfonos móviles, intercambio de datos entre móviles, identificación de acceso tipo Forfait (los tornos esos de las pistas de esquí) …

Si echamos un ojo a la pegatina que tenemos en la bandera de Euskaltel en la captura anterior, pero por la parte posterior, podemos apreciar levemente las espirales:

img_1724.jpg

Sabiendo esto, ahora con casi cualquier movil moderno podemos leer el contenido de estos chips. Lo que contenían eran líneas como la siguiente:

img_1726.png

En general eso no dice mucho … pero bueno, si seguimos capturando información de las pegatinas que nos íbamos encontrando, vemos que, los datos de la izquierda son una fracción de 14 elementos y al final si capturamos todos (y como digo había repetidos) tenemos esta lista de datos:

01/14 : 02
02/14 : 07 01
03/14 O : 11
04/14 : 13
05/14 H : 06
06/14 O : 11
07/14 : 09
08/14 O : 13
09/14 : 12 07
10/14 O : 13 02
11/14 : 01 03
12/14 : 14
13/14 : 08
14/14 : 01 12

Tabulando un poquito para que quede todo más bonito tenemos :

photo_2018-09-14_10-21-17.jpg

La verdad es que esto … no llegamos a sacarlo con lo que no sé si habríamos llegado a alguna conclusión. Os adelanto que teníamos un farmacéutico en el grupo, así que igual habríamos dado con la solución más o menos fácilmente, pero a priori a mi una lista así, no me diría nada.

Si nos fijamos vemos que, ignorando la fracción, tenemos 2 campos separados por ‘:’ y en el campo de la derecha nunca pasa de 14 con lo que podríamos deducir que son uniones.

Si hacemos un croquis sobre la marcha de las conexiones que parece que hay entre los distintos elementos nos topariamos que queda algo asi (he puesto los numeros en circulo porque en linea era un cristo):

IMG_1988.JPG

Y entendí que aquí es donde tendría algo de sentido la pista de marcan “beauty matters etc… etc… “.

Si logramos colocar todos esos valores y conexiones sin que se intersecten *igual* podría verse algo …

Se me ocurre ahora mismo que para calcular la forma de esa castaña de manera que no cruce ninguna conexión, podríamos utilizar el software gratuito de cálculo de circuitos integrados “Fritzing” … Vamos a probar a ver si sale …

Con un poco de paciencia y arrastrando los “transistores” para que no se cruce ninguna linea (de ahí lo de “beauty matters”) vemos la figura de la parte inferior…

Si ahora dibujamos con los numeros y letras y con todas las conexiones faltantes obtenemos esto:

IMG_1989.JPG

Posiblemente a la gente que haya estudiado quimica esto le pueda resultar familiar o sonar de algo … Yo igual, como muuuuucho, podría haberlo asociado a química orgánica … y nada más xD. Ya que buscar el compuesto del que se trata … ya habría sido otra historia …

En resumidas cuentas; se trata del siguiente compuesto:

 

336px-Aspirin-skeletal.svg

ácido acetilsalicílico

(o comúnmente llamado: aspirina)

 

 

 

Solve-It AE01: Nivel 4

Hoy me sentía inspirado (y vale, también algo aburrido …) después de llegar del trabajo y se me ha ocurrido echar un ojo por encima a un solve it que tenía por ahí pendiente de revisar:

Captura de pantalla 2018-08-29 a las 15.59.32

Se trata de un archivo de sonido .ogg (‘syster.ogg’ concretamente). Que al abrir suena bastante chirriante (muy agudo y bastante ‘roto’).

La gente un poco viejuna (como yo) enseguida se puede dar cuenta de que se trata de un sonido que se emitía hace años por una cadena de televisión de pago y que cuando sonaba además se veía así de mal:

Nagrasyster_encoded_frame.png

(Bueno, en la captura se puede apreciar claramente de qué cadena se trataba 😉

(os dejo el fichero de sonido para que lo oigais pero con video: marcan solamente nos daba el sonido como digo 😉

Es curioso que nada más escuchar el fichero sonido codificado, sólamente con oir el inicio pensé … eh! esto es “You never gonna give you up !! FIJO”… Y efectivamente lo era!!! pero …. la cosa no iba a ser tan fácil …. Ni la contraseña era “rick astley”, ni “you never gonna give you up” ni nada … había que descodificarlo …

Indagando un poco por internet, pude descubrir que el sistema de codificación que utilizaba Canal+ se hacía llamar Nagravision/Syster (de ahí viene el nombre del fichero de audio de hecho, una pista bastante clara).

Si abrimos con audacity el .ogg vemos que tiene esta pinta (con el análisis de espectro):

Audacity_01.PNG

Como vemos no hay frecuencias bajas, todo son frecuencias altas en torno a 300Hz hasta 15000Hz. Es curioso, no tenía ni idea de que este sistema de codificación dejase así el sonido.

Si buscamos en internet podemos encontrar un trozo de artículo que dice muy básicamente, cómo funciona el encriptado de Nagravision/Syster:

Syster_01.PNG

Al principio de este texto habla de cómo se codifica el video y demás, pero no nos interesa eso…

En la parte del audio dice cómo funciona. Literalmente “muy rudimentario”: invierte el espectro de sonido en torno a la frecuencia 12.8 kHz. Si lo pensamos tiene sentido: si ponemos en la frecuencia correspondiente a lo que tenemos ahora en 12.8 kHz, a la frecuencia 0, y si luego tiramos desde ese punto hacia frecuencias más bajas en la gráfica que tenemos y las asociamos a las frecuencias altas … es muy posible que tengamos la solución:

Audacity_02.PNG

El problema es … ¿cómo vamos a hacer eso? => bueno, seguro que audacity tiene alguna herramienta para invertir el espectro sobre una frecuencia 😉 …

Buscando por internet logré encontrar algo de información sobre este tema:

http://www.svengrahn.pp.se/trackind/scramble/scramble.htm

https://forum.audacityteam.org/viewtopic.php?f=39&t=77214

Esencialmente es un manual sobre un comando de Audacity molón llamado “Nyquist” (el famoso Nyquist y su amigo Shannon hacen acto de presencia …) que sinceramente no me apetecía ponerme a estudiar … No obstante, estoy seguro de que pensando un rato y un poco más de la cuenta, incluso que hasta con algún ejemplo de los que pueden venir, podría haberme salido sin mayor problema …

En cualquier caso, lo que hice fue más sencillo (algo realmente no muy habitual; ya que siempre voy a lo complicado 😛 …); pues esta vez pensé: “SEGURO, que alguien ya ha hecho un decodificador de audio de Syster…”. Y efectivamente buscando en internet encontré algo:

http://cryptimage.vot.pl/cryptimage.php

Pero este software tenía un problema …. y es que no acepta directamente los archivos de audio… por lo visto necesitan que sean de video…:

CryptImage_04.PNG

Así que nada … habrá que hacer un archivo de video … ponerle el audio … y luego ya pasarle por esta aplicación … porque sí, lo he comprobado, esta aplicación descodifica también audio además de video:

CryptImage_02.PNG

Total, que me descargué VirtualDub y me creé un vídeo de unos 6000 fotogramas (a 25 fps son unos 4 minutos de vídeo y el audio de marcan dura exactamente 3 minutos 30 segundos así que nos vale de sobra).

Y entonces es cuando después de crear el fichero de video en VirtualDub, voy a intentar meterle el sonido y ….

VirtualDub_03.PNG

¬¬

Todo problemas ….

Pues nada, voy a pasarlo a .wav… que ese formato seguro que acepta. La verdad es que no me apetecía andar buscando en internet ningún conversor y tenía reciente el haber cacharreado con ficheros de sonido en matlab así que en estas 3 líneas de código pasé el .ogg a .wav:

Captura de pantalla 2018-08-29 a las 16.03.49.png

Ahora sí que sí, VirtualDub lo traga bien:

VirtualDub_02.PNG

Listo, vamos a compilar todo … :

VirtualDub_01.PNG

8 Gb de archivo … bueno… no pasa na … 😛

Una vez terminó de hacerlo. Lo paso finalmente por el software de CryptImage …

CryptImage_03.PNG

Después de otro buen rato … finalmente tengo el fichero de audio perfectamente descodificado!

Y efectivamente …. se trataba de Rick Astley y su Never gonna give you up ! … marcan 100%

Si podéis ver el video, hacia el minuto 2:04 hay una voz que dice “cual es el productor del vídeo?

Y a partir de aquí, que estaba ya resuelto en un 99% fue donde perdí un poco los papeles porque NO encontraba quién demonios era el productor !! :/

Tras un buen rato buscando, tuve la brillante idea de echar mano de IMDB …..

Producer.PNG

Ahí tenemos nuestra contraseña 😉

Solve-It EE26: Nivel 3

Finalmente, vamos con el nivel 3 de esta euskal.

En el enunciado vemos lo siguiente:

Captura de pantalla 2018-07-29 a las 11.26.51.png

“Buscanos” : palabra clave que no entendimos muchos de los concursantes.

Directamente y tras una rapida búsqueda en google de “all your ink are belong to us”, nos dimos cuenta de que esto tenía que ver algo con la zona retro (debido al juego de Splatoon) así que allí fuimos a decirles la frase …

No. La cara rara con la que se nos quedaron mirando nos indicaba que ibamos mal por ese camino …

Mientras unos nos peleabamos con el nivel 2, otros fueron diciendo la frase a diestro y siniestro por ahí a gente ya aleatoria por toda la Euskal … (de aquí que igual te vinieran posibles quejas a posteriori marcan  …. O:D

Finalmente, uno de nosotros optó por la solución simple …. ir a decir la frase a marcan o imo… Y así fue como nos dieron este pedazo de hoja impresa plastificada:

photo_2018-08-17_15-49-51.jpg

Lo que se puede ver en ella es … lo que parece: un mogollonazo de letras impresas una encima de otra haciendo imposible ver nada legible en ellas.

Estuvimos observando esta etiqueta de mil formas distintas para ver si veíamos algo … Igual poniendo en perspectiva el trozo de papel podríamos ver algo ….. NADA.

Tras lo que sería … una hora o dos de andar dando vueltas con el papelito probando mil cosas (la luz del movil a traves, en la pantalla LCD del PC, con algunos leds que teniamos por ahi, ….),

llegamos a pensar que tendría que ser algo que tuviera que ver la luz UV. (ultravioleta) No obstante, no podía ser … no teníamos por qué disponer de serie con una luz UV en el móvil ni mucho menos de una linterna UV …

He de decir sin embargo, que no ibamos mal encaminados (nos equivocamos en la longitud de onda … xD).

En cualquier caso, y descartada la opción de la luz UV, fui yo mismo quien dijo … “seguro que el troll de marcan lo ha plastificado porque hay algo escondido dentro …” así que agarré una navajilla que tenía por ahí un compi y corte el plastico al ras del papel por una de las partes estrechas. Luego fue estirar para terminar de abrir el plastiquete y … sorpresa!!

photo_2018-08-17_16-12-19

… no, no hay nada … ¬¬

Con la de tinta que había impregnada en el papel en la parte posterior (el trozo de papel solamente estaba impreso por una cara), el plástico del plastificado se soltó a la perfección y, como se puede apreciar en la foto, se nos rompió un poco también al ir llegando al final. No le dimos mas importancia a este trozo de plastiquete y nos metimos con la parte impresa.

Después de volver a examinarla con mil luces opté por darle un pequeño remojón (veis el trozo de papel que falta? xD) Ahí me di cuenta que había tinta que no era tinta negra pura, ya que con el agua se corrió algo la tinta a color con la que marcan había puesto la contraseña. De hecho, yo pensé en un principio que era bolígrafo. Así que la clave tenía que estar ahí aunque no la vieramos! Siguiente paso? Conseguir otro trozo intacto …

No fue hasta la mañana siguiente cuando a un compañero se le ocurrió mirar en lo que habíamos desechado: el trozo de plástico del plastificado (y semiroto). Le había puesto un celo al movil que había pintado con rotulador azul para ver si lograba ver algo … y conseguía ver algo, pero no por la luz azul. De hecho, se veía mejor a simple vista.

Lo puso sobre un fondo blanco (dejando olvidadisimo su invento del movil con el celo pintado de azul-rotulador xD…) y:

photo_2018-08-17_16-38-13

Ahora sí, se veia algo!

WavelenghtDivisionMultiplexing

Y ahora la explicación de cómo debía haberse resuelto originalmente el solve-it …. xD

Nos comentaba marcan que el negro hecho a base de mezcla de tinta de color de las impresoras (cyan, amarillo y magenta) es sensible a la luz INFRAROJA (que no ULTRAVIOLETA, que fue lo que pensamos utilizar al principio).

Resulta que marcan había colocado bajo un televisor en la zona de redes un pequeño faro de leds infrarojos. Si poníamos el papel en ese foco, se podían distinguir (aunque he de decir que vagamente) las letras con la solución a este solve-it.

Estando intentando resolver el siguiente solve-it (buscando las pegatinas con las ‘ T ‘ invertidas, que ya comentaremos en el siguiente post) vimos un montón de gente dando vueltas en torno al foco IR con el trozo de papel (cuando nosotros ya habíamos resuelto éste) y fue gracioso que nos preguntamos …. ¿por qué andarán enredando ahí con el trozo de papel?, si el solve it no se hace asi … de hecho … pensamos que ese foco tendría que ver con el solve-it 4 y anduvimos con un movil grabando el foco, pensando que igual se podría apreciar algo que a simple vista no se veía …

Solve-It 4 : 2010

Antes de continuar con los solve-its de este año, vamos a hacer un inciso y a detenernos un momento en un solve-it del año 2010. De los más difíciles (yo creo) que ha puesto marcan.

Nos propone el siguiente enunciado:

Captura_Enunciado.PNG

Dentro de éste hay un enlace a lo que parece un fichero. Se trata de una imgen .png:

goindown.png

“goindown.png”

Antes de continuar he de decir, que tras estar dandole vueltas varios días y también dando la caca a @marcan42 por twitter pidiendole pistas … este solve-it no lo saqué … la verdad es que es de los “mas o menos” difíciles de marcan (como él bien me dijo por twitter 😉

En esta imagen hay que fijarse en un par de cosas; de hecho, en tres para ver por donde van los tiros:

La primera es que se trata de un .png y … es una fotografía … normalmente las fotografías son en formato .jpg. Si hacemos un ‘file’ sobre el archivo .png nos da la siguiente información:

Captura_FileGoindown

Se trata de un PNG de 1659×866, 8 bits de profundidad de color y lo realmente importante: tiene una capa de color Alpha (RGBA).

La segunda es la pista que nos da en el propio level: “Cada elemento tiene su razon de ser“. Esto significa que los puntos están a diferentes alturas bien marcados en un cuaderno cuadriculado para indicar que es así porque tiene que ser así; es decir, que si un punto esta a 0.5 cuadrados más abajo que otro, es porque tiene que serlo.

Y finalmente la tercera son esas 2 líneas horizontales marcadas en la gráfica. Si nos fijamos cada una divide a la grafica en 6 cuadrados del cuaderno de altura; además de esto, hay que tener en cuenta que los cuadrados del cuaderno nos los divide por la mitad, lo que hacen que haya 12 alturas cada división.

Vamos por partes.

En primer lugar vamos a extraer el canal alpha de la imagen a ver qué vemos. Para ello usamos el comando “convert -alpha extract goindown.png alpha.png“. Luego abrimos la imagen con imageMagick y veremos que sale toda en blanco:

Captura_alpha.PNG

Sin embargo, si le damos a rellenar con negro en cualquier punto de la imagen obtenemos:

Captura_MiReDo.PNG

MiReDo>>

Esto es otra pista, que esencialmente nos está diciendo que la gráfica se trata de notas musicales, que tenemos que pasar muy rápidamente.

Es por eso por lo que hay 12 divisiones entre líneas: se trata de divisiones entre octavas de todas las notas musicales:

Captura_ascendente_piano

Averiguado esto, y sabiendo ya de antemano la solucion, cogí y (con mis prácticamente nulos conocimientos de música) asumí lo siguiente (tras varias ojeadas en wikipedia y alguna otra web):

Captura_ascendente.PNG

Total, que teníamos que ponernos a producir música en base a las notas de esa gráfica.

Echemos mano de Octave (que para esto nos va a venir bien y así aprendemos un poco cómo funcionan las notas). Vamos a ver si conseguimos que suene algo decente.

En la wikipedia (entre otros) nos dan la frecuencia a la que vibran cada una de las ondas de las notas musicales (esta frecuenci aparece en la captura que he puesto antes).

Vamos a empezar por asignar a cada una su frecuencia:

Captura_notas_octave

Ésta es la parte fácil realmente … ahora hay que hacer sonarlas, lo cual realmente no es muy complejo tampoco … y más si buscamos un poco por internet, ya que encontraremos información de cómo hacerlo muy fácilmente, ya sea con Octave o Matlab.

Para ello en primer lugar hay que elegir una frecuencia de muestreo (el mundo digital es lo que tiene…). Ésta me da un poco igual, pero ya que es gratis voy a poner 44100Hz que es un poco lo típico:

>> fs=44100;

Posteriormente hay que hacer una señal sinusoidal (o cosenoidal, da lo mismo), que oscile a la frecuencia de la nota que queremos. Para hacerlo en Octave primero definimos una variable en la que introduciremos el tiempo que queremos que suene la nota, por ejemplo 1 segundo y con eso creamos un array de tiempos que luego utilizaremos para generar la onda:

>> duracion = 1;
>> t = [0:1/fs:duracion];

Esto nos da un array de tiempos de 44101 valores/muestras. Como podemos deducir, cuanta más frecuencia de muestreo, más muestras tendremos en el array ‘t’.

Ahora vamos a generar una onda con una de las frecuencias correspondientes a una nota, por ejemplo, vamos a hacer la nota ‘LA’ (440Hz). Para generar la onda tenemos también que definir una amplitud S para la misma (en este caso cogeré S=1 para simplificar) cuya frecuencia sea 440Hz tenemos que hacer lo siguiente:

S·sin(w·t) , donde w = 2·pi·f => nota = sin(2·pi·440·t)

Aplicando esto en Octave tendríamos que hacer:

>> x = sin(LA*2*pi*t);

Si ploteamos la forma de esta señal tenemos:

>> plot(t(1:500),x(1:500));

(con el comando de arriba ploteamos solamente las 500 primeras muestras de la señal ‘x’)

Captura_SinLA.PNG

Donde el eje de abscisas es el tiempo (en segundos) y el eje de las ordenadas es la amplitud.

Si queremos oir esta señal, basta que escribamos lo siguiente en la ventana de comandos de Octave:

>> sound(x,fs);

Ahora bien, aquí hemos representado y escuchado unicamente una nota (LA) durante 1 segundo… pero ahora tenemos que poner todas las notas que nos presenta marcan en el dibujo, una detrás de otra y luego hacerlas sonar.

Bueno, antes de seguir comentar que en la captura que puse antes, las notas están colocadas de forma errónea en la octava, ya que no es ascendente desde el origen (desde el eje de ordenadas = 0 hacia arriba no empieza en DO (C4), luego al llegar a la posicion 12 es DO (C5), etc…) sino que la linea horizontal superior (24) se trata de la nota DO (C5) y la siguiente linea horizontal (12) representa la nota DO (C6). La forma correcta es:

Captura_nOTAS_bIEN.PNG

Hay que decir que para deducir este orden lo que hice fue prueba-error en relación a la solución que yo ya sabía … 😉

Cabe destacar también que los puntos intermedios entre notas de la gráfica corresponden a las teclas negras de los pianos (notas sostenidas/bemoles (en la escala mayor; la escala más típica, vamos): en la lista que he creado antes en Octave son las notas que llevan la ‘_’ al final son las notas sostenidas de la escala mayor).

>> c = 2*pi*t;
>> x = [sin((DO*2)*c), sin((SOL)*c), sin((DO*2)*c),sin((MI*2)*c),sin((SOL*2)*c), sin((DO*4)*c), sin((SOL*2)*c), sin((SOL_)
*c), sin((DO*2)*c),sin((RE_*2)*c), sin((FA_*2)*c), sin((RE_*2)*c), sin((FA_*2)*c), sin((DO*4)*c),sin((RE_*3)*c), sin((SOL_*4)*c), si
n((RE_*4)*c), sin((LA_)*c), sin((RE*2)*c), sin((FA*2)*c), sin((LA_*2)*c), sin((FA*2)*c), sin((LA_*2)*c), sin((RE*4)*c), sin(FA*4)*c, sin(LA_*4)*c, sin(FA*4)*c ];

He metido el array de tiempos en la variable ‘c’, que se ve arriba, para que el codigo quedase algo más legible (y aún así… bueno…).

Lo que hace esa linea de código es concatenar los arrays de las ondas que generamos para cada nota (para cada frecuencia diferente), en un único array ‘x’.

Si os dáis cuenta también, hay algunas ‘notas’ multiplicadas por 2 o por 4.

Esto es debido a la octava. Según en la octava en la que estemos, si estamos haciendo un DO (C4), para subir de octava, DO (C5), hay que multiplicar su frecuencia por 2 (es decir, su frecuencia en una octava mayor es el doble). Y si queremos hacer un C6, habría que multiplicarla por 4 (o multiplicar la C5 por 2) y así igualmente y con cualquiera de las notas.

El resultado de hacer esto es un array bastante enorme (de 1190727 elementos):

Captura_chorizo.PNG

Con esto tenemos un sonido que dura 27 segundos (1 segundo por nota) … cosa que no cuadra mucho con el ‘>>’ que vimos en la primera pista del .png (en el canal alpha).

A partir de aquí es probar distintas velocidades hasta que nos salga algo decente.

Si hacemos que la duración del sonido sea en total 1 segundo => 1/27 = 0.031s por nota:

>> duracion = 0.031;
>> t = [0:1/fs:duracion];
>> c = 2*pi*t;
>> x = [sin((DO*2)*c), sin((SOL)*c), sin((DO*2)*c),sin((MI*2)*c),sin((SOL*2)*c), sin((DO*4)*c), sin((SOL*2)*c), sin((SOL_)
*c), sin((DO*2)*c),sin((RE_*2)*c), sin((FA_*2)*c), sin((RE_*2)*c), sin((FA_*2)*c), sin((DO*4)*c),sin((RE_*4)*c), sin((SOL_*4)*c), si
n((RE_*4)*c), sin((LA_)*c), sin((RE*2)*c), sin((FA*2)*c), sin((LA_*2)*c), sin((FA*2)*c), sin((LA_*2)*c), sin((RE*4)*c), sin(FA*4)*c, sin(LA_*4)*c, sin(FA*4)*c ];

Con esto finalmente, pasamos a .ogg el fichero:

>> fich=’menudaCrisis.ogg’;
>> audiowrite(fich,x,fs);

Y sonará así:

Descargar fichero .ogg final

… para el que después de oír el fichero de sonido aún no sepa cual es la contraseña… os diré cuál es:

seta