Solve-It EE25: Nivel 3

El siguiente nivel, es igual el más sencillo que había este año en la euskal pese a ser de @marcan (…o igual fue lo que nos pareció porque fue el que menos nos costó resolver …. jejej).

Captura de pantalla 2017-07-30 a las 12.07.15.png

No tengo captura del enunciado porque no hicimos ninguno, pero bueno, si no recuerdo mal era algo de este estilo:


SOLVE IT 3: ESTO NO ES UN GRUPO DE WHATSAPP

👓👭👰🐱👳👮🐰👴👷👨👴👉👷🐴👳👌🐰🐰👫🐱👮👧👆🐰👲


Con este nos planteamos varias opciones como coger iniciales de los nombres de cada emoticono, o ver sus posiciones en los teclados de algun dispositivo movil para ver con qué letra casaría, …

Al final era tan sencillo como obtener el código unicode de cada uno de ellos. Para lo cual utilizamos la siguiente URL:

https://unicode-table.com

Sin embargo, utilizando un conversor web habría sido mas facil ya que obtienes todos los códigos del tirón:

Captura de pantalla 2017-07-30 a las 11.47.22.png

Como vemos en la parte inferior en decimal, tenemos una serie de números todos del estilo “128xxx”. Si partimos por la mitad eliminando ese 128 nos quedan valores que en ascii tienen sentido.

Pasamos rapidamente por Octave estos datos y obtenemos:

Captura de pantalla 2017-07-30 a las 11.53.22.png

Smp1sn0twhtIw4sL00k1ngF0r

Solve-It EE25: Nivel 2

Vamos con el siguiente nivel, que trajo de cabeza a bastante gente por lo visto.

Aunque no ganamos ningún premio este año diré en nuestro favor que junto con los imbatibles w0pr y … los que quedaron primeros  (en categoria Solve-It) GreenRodForHelp … fuimos los unicos 3 que sacamos este solve-it  😀 :

Captura de pantalla 2017-07-26 a las 16.50.47.png

De manos de @marcan tenemos esta ristra de simbolos que acojonan bastante así en general nada más verlos …

A simple vista se ve que tiene patrones con lo que no tardamos en empezar a separarlos y organizarlos para ver si con codificaciones clásicas si nos salía algo.

Después de probar casi de todo desistimos porque… aunque sea de marcan …. estamos hablando de un nivel 2, no “debía” ser muy difícil… (… a parte que tenemos tendencia como digo a hacer las cosas más difíciles de lo que son siempre….).

Así fue como se nos ocurrió pasar sencillamente los datos a binario según su código ascii y obtuvimos lo siguiente:

Captura de pantalla 2017-07-26 a las 16.57.43.png

Ahí se ve enseguida que hay información escrita legible en vertical con lo que transpusimos y pasamos a un editor de texto para después sustituir los 1’s con espacios y salió:

Captura de pantalla 2017-07-26 a las 17.03.31.png

Asi que otro año más… Rick rolled!!

Se trata de una frase de la canción de Rick Astley: Never gonna give you up.

El +15 +22 no lo entendimos muy bien al principio… bueno, más que el +15 y +22 fueron la especie de – – – ó ===  ó ··· que se veían entre las dos cifras, pero bueno, no mucho más tarde nos dimos cuenta de podríamos probar a coger 15 letras/lineas/palabras mas adelante hasta 22 letras/lineas/palabras para sacar la solución. Así que probamos las 3 opciones pero… efectivamente NO funcionaba ninguna…

Este fallo fue debido a una buena cagada por nuestra parte porque @imobilis/@marcan ya avisaron de que había un error en el solveit 2 por megafonía y … sinceramente no habíamos caído en la cuenta de que estabamos trabajando con la primera (y errónea) versión del solveit cuando lo pasamos a binario…

Un compañero se dio cuenta del fallo porque viendo por encima el archivo de texto con el que estabamos trabajando se fijo en que si el ‘1’ del +15 se generaba con el código ascii de ‘{}@’, por qué entonces salía un ‘5‘ en la solucion si justamente encima había también un ‘{}@‘ ???? :

Captura de pantalla 2017-07-26 a las 17.23.33

Rehicimos el solveit cogiendo el enunciado de nuevo de la web del hackit por si acaso, y efectivamente lo teniamos mal…

Captura de pantalla 2017-07-26 a las 17.10.49

Ahora si, cogiendo a partir de la 11ª palabra más después de esa frase hasta la 19 (y no 22 como teníamos también al principio), salía la password correcta para superar el nivel:

Captura de pantalla 2017-07-26 a las 17.13.29.png

“Inside we both know what’s been going on”

 

Solve-It EE25: Nivel 1

Bueno pues, otro año de Euskal, otro año de Hack-It/Solve-It. Este año con peor fortuna que el año pasado (solo pudimos alcanzar el 5º puesto) pero bueno, igual de entretenido.

El primer Solve-It, uno de los facilitos… que nos costó lo suyo he de decir… (como siempre liandonos la manta con cosas sencillas….):

De uno a dos.

Como siempre optamos por lo dificil (si, incluso en los niveles mas faciles). Recurrimos a ascii… binario… combinaciones de ambas…

Muchas veces es mejor pararse a pensar un poco y luego hacer coas. El truco consistia sencillamente en cambiar la URL de la web de …/solveit/1/ a …/solveit/2/

photo_2017-07-23_13-55-04.jpg

Maravilloso, la troleada del primer nivel ya nos hizo perder como 2 horas … gracias imobilis !!! xDD

 

Solve-It 2013: Nivel 3

En esta ocasión, a manos de cymo tenemos este enunciado:

SolveIt_2013_3.PNG

Son un montón de parejas de números. Al verlo podemos deducir enseguida que son coordenadas … pero de qué?

Podemos hacer un excel para analizar la frecuencia de cada coordenada pero parece que, en general, se repiten bastantes parejas de números; sobre todo el (3,1) y el (5,2).

Es curioso que al principio tenemos una pareja que únicamente se repite 1 vez. (4,11) y al final otra (4,9). Sin embargo, esta información no e muy concluyente…

Vamos con el título, que a menudo da una pista sobre el solve-it… “clickety-click”. Suena a ratón de ordenador, o algo mecánico. Si buscamos en google:

clickety_definition.PNG

“Un rítmico y rápido click-clack, por ejemplo de las maquinas de escribir

Vale, es una pista interesante, las máquinas de escribir sacan ese ruido denominado clickety-clack al escribir. Así que podrían ser coordenadas de las letras que golpean las hojas para escribir… sin embargo … que vaya del 2 al 5 una coordenada y del 1 hasta el 11 la otra no tiene mucho sentido ya que las “patas” que tienen en relieve las letras que escriben no tienen tantas letras en vertical (igual tienen 2 o 3 máximo.

Bueno, pero y el teclado? Aquí la cosa ya cambia puesto que tenemos (sin contar con las teclas de función) 5 filas y hasta 12 o 13 teclas por fila.

Partiendo de que (3,1) sea la ‘A’ ya que se repite muchas veces (la ‘A’ podría ser (5,2) pero descuadraría todo el teclado; con (3,1) la ‘A’ queda “clavada” en una posición idónea para que pueda salir algún mensaje…

Efectivamente si vamos transformando coordenadas en letras del teclado obetenemos:

Hay ocasiones en las que mas vale borrarse como un muerto, desaparecer de repente como tragado por la tierra, deshilarse en el aire como el copo de humo.

Con esto vamos a recurrir a Google a ver qué nos dice…

pascual_duarte.PNG

Encontramos que la frase exacta que hemos sacado de las coordenadas, pertenece a un extracto del libro “La familia de Pascual Duarte” de Camilo Jose Cela).

Ahí tenemos nuestro salto al proóximo nivel…

Solve-It 2013: Nivel 2

Vamos con un solveit facilito según marcan (me insistió en que lo era … y efectivamente, le voy a dar la razon …) y con el que le volví loco haciendole consultas por correo … me odia!! lo se !! xD

Captura.PNG

Vemos aquí a un plantel de políticos y algún que otro no político … Unos personajes para hacer una orla vaya …

Algunos son bastante conocidos, pero muchos otros no (para mi al menos).

Lo básico en una situación de estas es comenzar a buscar quién es cada uno de ellos. y aquí está la lista (en orden de izquierda a derecha en la foto, en la lista de arriba abajo) Utilizamos google imágenes para ello:

JOSE BLANCO LOPEZ
ROLANDO EUGENIO HIDALGO
IÑAKI URDANGARIN LIBAERT
JUAN MARTIN SARON
LLUIS MIQUEL PEREZ SEGURA
GABRIEL MARIA INCLAN
FRANCISCO RODRIGUEZ FERNANDEZ
ANTONIO BARRIENTOS GONZALES

JOSE MANUEL TRABA
XAVIER CASAS

De aquí ya empezamos a hacer combinaciones con las iniciales de los apellidos, letras en comun de los nombres… etc… nada concluyente… (Como podeis ver nos faltaba un personaje, en anteúltimo. El motivo es que no nos apareció por google imágenes… :/)

Empezamos a alargar un poco la “ficha” de cada uno de los personajes con fechas de nacimiento, lugar donde la habían preparado, etc…

OSE BLANCO LOPEZ          Lugo???
ROLANDO EUGENIO HIDALGO        Aguascalientes
IÑAKI URDANGARIN LIBAERT        Palma
JUAN MARTIN SERON          Alhaurín el Grande
LLUIS MIQUEL PEREZ SEGURA        Reus
GABRIEL MARIA INCLAN        Barakaldo???
FRANCISCO RODRIGUEZ FERNANDEZ      Orense
ANTONIO BARRIENTOS GONZALES      Estepona

JOSE MANUEL TRABA          Cee
XAVIER CASAS            Barcelona

Todos habían estado implicados en algún caso de corrupción, con lo que empezamos a mirarlos igualmente… Después de, uno de nosotros, sacar varios de ellos dejamos esta opción al margen porque nos dijo que no veía nada concluyente… MAL!

Seguimos investigando … y he de decir que dando la caca a marcan por correco electrónico para que nos diera alguna pista porque no veíamos NADA!!  xD (ya lo siento marcan … aunque no prometo que no vuelva a pasar :P)

Finalmente y tras muuuchas horas perdidas y ya un poco desesperados, acabamos rellenando por completo toda la información que pudimos recopilar sobre los personajes (incluso llegamos en un punto a pensar que internet ya no contenía la información necesaria para sacar el solve-it….):

2017-05-06 12.39.54.jpg

Pero después de completar esta tabla, con el dato de “Caso Campeon” vimos una cosa …

Captura de pantalla 2017-05-06 a las 12.43.03.png

Vaya… después de ver esto, maldije un par de veces al del grupo que había “revisado” los casos en los que estaban imputados … (pero bueno, a los 5 minutos le perdoné :P)

CANTIMPALOS

Solve-It 2013: Nivel 1

Vamos hoy con uno de los solveit facilitos:

Captura de pantalla 2017-05-01 a las 11.26.18.png

Partiendo de que el enunciado esta escrito al reves y que suele ser una pista, veamos que contiene el video que hay en el enlace:

Captura de pantalla 2017-05-01 a las 11.37.14.png

Bueno, pues visto el titulo como digo, que esta al reves, se trata de idioma árabe casi seguro. Si esperamos a reproducir el video por completo, hacia la mitad dice algo en árabe. Lo pasamos por google translator (con el reconocimiento de voz y nos sale:

2017-05-01 11.41.55.jpg

Bueno, no es exacto a lo que pone en el texto pero oye, la primera (es decir, realmente la última) palabra sí que coincide así que probablemente y visto el resultado podría ser algo como: “clave: salud”

Si probamos “salud” efectivamente parece que sí que hemos acertado…

Solve-It AE01: Nivel 5

Vamos hoy con el Nivel 5 de la AE01 …:

Captura12.PNG

“Un camino de curvas”. Nos dice marcan que es un fichero con unas instrucciones muy largas para llegar al tesoro, veamos qué contiene…

Captura13.PNG

La verdad es que nada más ver las 2 o 3 primeras lineas me vino a la mente algo que vimos en la escuela la primera vez que dimos informática (igual corria el año 1994? a saber… jeje):  el LOGO.

LOGO es un programilla de dibujo en el que una “tortuga” que se llama, que va trazando líneas sobre una superficie obedeciendo instrucciones que se le van dando por teclado en una línea de comando. El que nosotros usamos tenía, si no recuerdo mal, instrucciones del estilo: AVANZA 10, GIRA DERECHA 90, AVANZA 20, etc…

Rebuscando un poco en internet se puede localizar un programita de estos, donde se podría probar en un momento si por ahí van los tiros asi que vamos a ello. Baje MSW Logo:

Captura14.PNG

Tras probar un poco varias opciones para hacer mover a la tortuga dí con las que lo hacían así que, solamente faltaba intercambiar los comandos del fichero de marcan por los de este programilla de LOGO en un editor de texto:

Captura15.PNG

Sustituimos todo y eliminamos lo de “grados.” y “metros.” y metemos todo en un fichero de texto plano con extensión .LGO (la extensión que abre el programilla que he bajado).

Abrimos el fichero generado en el programa y…

Captura10

Sorpresa! Un QR…

Arreglamos la imagen en un par de minutos con cualquier programa de dibujo sencillo para que cualquier lector QR pueda leer bien los cuadrados negros y los blancos:

Captura11.PNG

Y listo! el restultado es:

TurTl354llTh3W4yD0wn

Solve-It AE01: Nivel 2

Captura03.PNG

En este nivel nos tompamos con una ristra de A’s que aparentemente son iguales. Sin embargo Marcan ya nos previene “No todo es lo que parece”.

Ya en el título del solveit vemos algo curioso:

Captura03_5

Qué puede pasar con esas A’s? Vamos a copy-pastearlas en el editor del Writer y vamos a buscar la primera A; en teorñia son todas iguales pero nos encontramos lo siguiente:

Captura04

Viendo esto lo que pasamos a hacer es ir moviendo en la regla del editor hasta ver si sale un dibujo o algo que nos pueda decir algo. Curiosamente al ir haciendolo encontramos con que se llegan a formar “lineas” con las letras sombreadas hasta que:

Captura05

Si nos fijamos un poco vemos que estamos ante exactamente 8 letras de ancho, lo que significa posiblemente binario. Sustituimos cada A por un 1 y las A diferentes por 0’s:

Captura06

Y ahora sencillamente buscando un conversor de binario a ascii por internet, copiamos todo el tocho y nos da como resultado:

Captura07

Ahí aparece nuestra contraseña: Un1c0d3d

 

Solve-It AE01: Nivel 1

Estando un poco con el hype de que se acerca otro nuevo año la Euskal Encounter, hemos retomado un poco el tema de Solve-Its y Hack-Its. Hay que ir practicando para este año de nuevo!! jeje.

Vamos con uno fácil. El Nivel 1 de la Araba Encounter 01, en la que marcan nos pone este enunciado:

Captura01.PNG

Bajo el título ¡ESTAN LOCOS ESTOS ROMANOS! Nos pone una agrupación de 10 grupos de 5 letras.

Sin prestar atención más que a las letras se puede ver casi a simple vista que hay más W que cualquier otra letra. A veces, y si el idioma es medianamente “normal” una letra que se repite mucho puede ser la letra ‘A’.

Pero con la letra ‘A’ únicamente no vamos a hacer nada… Necesitamos más información. Ésta se nos da en el título ROMANOS => Cifrado César muy posiblemente…

Suponiendo que la ‘W’ como hemos dicho según nuestra teoría es la ‘A’ para hacerle un cifrado cesar hay que desplazar 22 posiciones el alfabeto para que la A coincida con la W.

Buscando en la web hay varios codificadores/descodificadores César (incluso se podría hacer a mano, pero estando en la web que lo hace en 1 segundo… pa que?):

Captura02.PNG

Le metemos el codigo, le ponemos el offset (22 ó -4, lo mismo da) y tenemos una frase en Euskera:

GAUR HITZA EMAN BIHAR HAIZEAK ERAMAN PASAHITZA HOTZA DUZU.

La primera parte se trata de un refrán (Hoy das la palabra, mañana el viento se la lleva). Y en la segunda parte está la clave (Pasahitza hotza duzu = La contraseña es frío). Pero frío en Euskera, “HOTZA”

Domotizing XI – DAQ for kWh – Part I (yes, in English)

The blog is read most by people that is not from Spain so … although I don’t like too much the idea of beginning to write in English (because my English is incredibly awesome, you will discover it) … I think it is a ‘must do’ … so how’s your English then?? xD


Last time I wrote about power consumption management system in my house I started manipulating files, arrays of characters, editing configuration files, and so on… and then I decided that I was wasting my time because I was programing a data/files management system without having any data adquiring system or even data!

Well, I have been programming since then a system with which I could store power data from everyday in a little bit organised style.

First of all I made a little modification to the program that gives all the data when capturing current (A) waveform. This program normally gave me all this info:

Captura de pantalla 2016-09-16 a las 17.50.17.png

The thing is that, for adquiring information about the power consumption I don’t need the graph, the number of samples, time, current peak, … Indeed, I only need ‘Potencia’ (power) value.

The modification I made to have only the power value, was to insert input parameters into the C program I had made before:

Captura de pantalla 2016-09-16 a las 17.54.23.png

As you can appreciate in the screen capture I ‘filtered’ the additional information with ‘argc’ input parameter in ‘main’. In addition to that, if the parameter introduced when we make the call to the program is “pg”, I give only power value and also I generate the graphic of current.

I also  made a little help screen so as to remember how to work with this program. We get to this information by typing the parameter ‘?’ on the program call. It returns this:

Captura de pantalla 2016-09-16 a las 18.00.28.png

  • Parameter ‘p’ gives only the actual power value in W.
  • Parameter ‘pg’ gives actual power value in W and generates current graphic.
  • No parameters gives all information and generates current graphic

OK then, this was the first step to start generating power information data files, now I would need to make another program that catches data every X seconds and stores all this information in files.

The initial idea was to create files with the actual day information on its name like this:

  • data_01_01_2016.txt

(The format is in Spanish DD/MM/YYYY). I was tempted to do it in Basque as it is the normal format I use (YYYY/MM/DD) but day-month-year format I think is easier for this context.

So, inside that .txt file the information would be stored in columns:

Captura de pantalla 2016-09-17 a las 11.30.15.png

First column would be time of day and second column is the Wh at that moment. For example, 16.13 with 45.62 Wh means that from 15.13 to 16.13 we have a power consumption of 45.6 W.

This would be OK but I don’t like it too much because my idea was to store this data in a file with the format:

data_DD_MM_YYYY.dat

… and also the information on every specific time of day like this:

data_DD_MM_YYYY_HHMM.dat

Probably your are thinking that storing the data with that filename is not complex, and indeed you’re right, complexity = 0… but, what would happen when you have to access to that specific hour/minute of the day to show the informatio? How could you know if you have to write in ‘HHMM’ 1613, 1713, 2134, …?

So the solution is easy: force MM to be ALWAYS ’00’:

captura-de-pantalla-2016-09-25-a-las-10-47-12

I created this function that generates a string with the specific path and name of the data file. Parameters ‘crear_ruta’ and ‘crear_ruta_hora’ will indicate this function if the returning string has in the name the actua day and also the hour or if it has only the actual day. The comment there ‘Para que se cree el fichero ….’ means: This is to force the data file to has ceros in the minute field in all cases’.

So after all this I have only created a file ‘pathing’.Let’s start with the rest of the program.

I created in the beginning of the program a ‘samples’ (muestra) tag. In my case this is 360, and it is configurable. For example, if you set 3600 this will store data every second, with 360 it will be every 10 seconds, and so on … The next screen capture shows this constant value in the beginning of the program:

captura-de-pantalla-2016-09-25-a-las-11-11-42

(360 samples means 1 sample every 10 seconds in 1 hour; 3600 samples would be 1 sample every second in 1 hour).

Now we go to main program structure.

Captura de pantalla 2016-09-25 a las 10.52.32.png

Here you can see the tags declaration. There are timing variables, buffering strings, double data arrays for storing power reads. Remember that ‘muestra’ means ‘sample’ in Spanish.

captura-de-pantalla-2016-09-25-a-las-10-55-42

We create the file that will contain Wh every hour in the beginning as you see in the previous capture. We open with “a” so as not to overwrite if the file exists and append the information in the end of it.

Captura de pantalla 2016-09-25 a las 10.58.31.png

And finally we start with the main loop.

As you see it is infinite loop that is catching the time data the whole time (first paragraph). Second paragraph named ‘CHEQUEAMOS EL DIA….’ means ‘we check that the actual day has not finished’. With this we detect a flank if the day is increasing so as to increase the path file for the new day.

captura-de-pantalla-2016-09-25-a-las-11-01-50

I got the previous piece of code from the internet as I did not really know how to get the output data of an executable file to come into another program. I thought that it coul be done by ‘./lecturaA p > potencia.dat‘ and then read ‘potencia.dat’ file but I thought there must be another more elegant method … so that is what I found and it works!.

‘lecturaA’ is the executable file I modified in the beginning. With ‘p’ parameter I get only the actual power read.

Captura de pantalla 2016-09-25 a las 11.05.50.png

Finally this bunch of code. Lots of letters, but don’t worry, most of them are comments :P. What I do here (I remind you we are inside the while loop yet) is checking if the counter is equal to the constant defined value ‘samples’ (muestras).

Normally we will be storing power data and timing data so if we pay attention to what is under ‘most-left-else’ we see an ‘IF’ that is checking that we read correctly the power value. If the reading is good it assigns ‘potencia’ (power) value we catched before. If not read a valid number it assigns 44.0 W by defect. (Need to check this last thing as my current sensor does not read less than 44 W :/ On low currents the information is not accurate).

The sprintf stores the time information in the 2D array I created in the beginning and counter (contador) increases by 1.

When ‘contador’ gets to ‘muestras-1’ then we store the information in 2 different files. The first one is the one I created before with the data ‘dat_DD_MM_YYYY.txt’ and what I make is a sum of all power data (360 values) and divide them by ‘muestras’ => this value will be the ‘Wh‘ in the just passed hour. We store this with the hour information with ’00’ in the minute (as told before, I don’t really care about the minute as I could only get troubles with it).

Next I store ALL samples taken (360 in my case) in a file ‘dat_DD_MM_YYYY_HH00.txt’ I create with the function I described before (fc_crear_ruta….). I create, then record all data and then close the file so as to restart the process again.

As you see I set ‘contador’ to 0 and store the actual power read as indeed a power has been read but I have been storing the previous ones but I need to do this for first power data within the next hour.

And YES, the code that is under ‘contador = 0’ should have been written before the ‘sleep’ as it is common for both xDDD. I will make this modification as it is very easy right now, don’t get angry…

Ok, I think I have written too much today … Next time I will talk about plotting all this information and get a monthly report of power consumption.