Español | English
rss facebook linkedin Twitter

Solución al reto 6

Ha pasado ya un tiempo considerable desde la publicación del reto 6, por lo que vamos a publicar las dos soluciones recibidas, de mano de Dani Kachakil y Oriol Carreras junto con Jose Carlos Luna.

El reto consta de 3 fases (absténgase de continuar quien todavía quiera intentarlo):
  • La primera consiste en interpretar un pequeño programa escrito en BrainFuck y oculto en un comentario HTML dentro del post. En primer lugar se debe arreglar el código, ya que se encuentra desordenado, pero se dispone de una pista dentro del mismó comentario HTML.
  • La segunda fase consiste en descifrar el código obtenido en la primera fase, que se encuentra cifrado con Vigenére. El texto resultante indicaba de donde descargarse el fichero para la tercera y última parte de la prueba.
  • Enla última fase se debe reconocer el formato de un fichero del que no se tiene información. Resulta ser un fichero de audio en raw,que se puede reproducir, por ejemplo, con sox.
Las dos excelentes soluciones:
Como tan solo puede haber un ganador, en este caso el libro se lo llevan Oriol y Jose Carlos por su detallado análisis de cada fase.

Ahora nos toca pensar como enviamos la páginas pares a Oriol y las impares a Jose Carlos xD

Muchas gracias a todos,

Mikel Gastesi
S21sec e-crime

6 comentarios:

Dani Kachakil dijo...

Lo primero, dar la enhorabuena a los ganadores por su merecidísimo premio, ya que ellos lo han estado peleando desde el principio (yo me enteré del reto cuando ya tenía demasiadas pistas). Menos mal que no me ha tocado a mí, porque no lo consideraría justo aunque solo fuera por ese hecho.

Por otro lado, hay que reconocer que su solución es muy buena y está muy bien explicada. Personalmente me ha gustado mucho el análisis estadístico aplicado para sacar la fase 3, lo que demuestra que muchas veces se puede obtener información aplicando una metodología de trabajo (no todo son ideas felices, por más que algunos se empeñen en desviar nuestra atención con cabeceras engañosas y transposiciones raras, jeje). ;-)

Lo que me parece muy "freak" es añadirle a pelo una cabecera al PCM y también ese análisis un tanto rebuscado del cifrado de la fase 2 (si al César no vale la pena ni hacerle un criptoanálisis y el Vigenere también es de lo más trivial). Con razón no teníais la contraseña del zip, jeje...

Saludos!

Trancek dijo...

Muy buenas soluciones, la verdad que como dice kachakil lo habéis hecho de una forma...que queda totalmente enreversada ejej, pero muy buena claro, así que felicidades a ambos!!

Yo me quedé donde la pista y pensé que me iba a llevar más trabajo y por eso dejé el reto, pero la 2º parte se veía fácil y la 3º no se cómo se me hubiera dado pero tarde o temprano hubiera salido porque he visto retos bastante parecidos jeje :P, bueno ahí les dejo algo más raro que el Brainfuck.

http://compsoc.dur.ac.uk/whitespace/

Anónimo dijo...

Me quedo con lo que pone en las ventajas de whitespace:

"Whitespace is a particularly useful language for spies. Imagine you have a top secret program that you don't want anyone to see. What do you do? Simply print it out and delete the file, ready to type in at a later date. Nobody will know that your blank piece of paper is actually vital computer code!"

genial XDDD

Uri dijo...

Gracias dani, tu solucion tambien esta curradisima, la verdad.

Sobre la segunda parte, supongo que si tienes un programa que ataque vigenere/ sabes que es vigenere saldra directo. Pero en ese momento no teniamos nada, y hicimos lo que pudimos "a mano".
Es decir, no fuimos mirando distintos metodos de cifrado especificos :( De los clasicos, la wikipedia enumera : ADFGVX | Affine | Alberti | Atbash | Autokey | Bifid | Book | Caesar | Four-square | Great | Hill | Keyword | Nihilist | Permutation | Pigpen | Playfair | Polyalphabetic | Polybius | Rail Fence | Reihenschieber | Reservehandverfahren | ROT13 | Running key | Scytale | Smithy code | Solitaire | Straddling checkerboard | Substitution | Tap Code | Transposition | Trifid | Two-square | VIC cipher | Vigenère ) :s.

Si no, que intentamos ir descartando grupos : transposicion, substitucion monoalfabetica ...

Sobre la tercera, simplemente utilizamos lo que teniamos mas a mano. El python lo tenia de otra historia y adaptarlo fue question de 1 minuto : ).

Saludos,

CrazyBoSS dijo...

Me apetecia aportar algo, sólo decir que no se me hubiara ocurrido hacer todo esto sólo!

aquí el código en java que invierte el código permutado:

public static void main(String[] args) {
ArrayList>Character> salida = new ArrayList>Character>();
String entrada = "312645978";
char vEntrada[] = new char[entrada.length()];
System.out.print("Secuencia permutada: ");
vEntrada = entrada.toCharArray();
System.out.print(vEntrada);
System.out.println("\n\t---");

int i = 0;
while (i < entrada.length()) {
salida.add(vEntrada[++i]);
salida.add(vEntrada[++i]);
salida.add(vEntrada[i - 2]);
i++;
}

System.out.print("\nSecuencia normal: ");
for (int a = 0; a < salida.size(); a++) {
if (salida.get(a) == '.') {
System.out.print(salida.get(a));
System.out.println();
} else {
System.out.print(salida.get(a));
}
}
System.out.println("\n\t---");
}

Se puede hacer sólo con vectores, pero he aprovechado un poco lo que nos da java :)

No me deja poner "<"Character> se cree que es una etiqueta HTML así que he puesto >Character>, sustituyan lo por lo de arriba sin las comillas!

PD: Me he guiado por el método de Kachakil

salu2!

S21sec e-crime dijo...

Gracias CrazyBoSS

Me alegra ver que todavía alguien lee los retos :)

Mikel,


(+34 902 222 521)


24 horas / 7 días a la semana



© Copyright S21sec 2013 - Todos los derechos reservados


login