BRAINFUCK

    El "Hola Mundo" del lenguaje Brainfuck

    [sourcecode language=“c”] ++++++++++ [ Bucle para iniciar las memorias (se repite 10 veces) >+++++++>++++++++++>+++++++++++>+++>+<<<<<- 70 100 110 30 10 ] >++. imprime ‘H’ (72) 1 >>+. imprime ‘o’ (111) 3 —. ’l’ (108) 3 <—. ‘a’ (97) 2 >>++. espacio (32) 4 <+. ’m’ (109) 3 ++++++++. ‘u’ (117) 3 ——-. ’n’ (110) 3 <+++. ’d’ (100) 2 >+. ‘o’ (111) 3 >+. ‘!’ (33) 4 >. ‘\n’ (10) 5 [/sourcecode]

    Aug 11, 2012
    Recursos InformáticaProgramaciónHacking

    CTF #nullcon 2012: Programación 3

    nullcon1.jpg

    En el tercer nivel nos encontramos con un trozo de código escrito en Brainfuck, un lenguaje un tanto peculiar y que claramente hace honor a su nombre. Algún le dedicaré una entrada en el blog.

    El código con en el que tenemos que lidiar es este:

    >+++++++[<+++++++>-]<---
    .
    .
    >+++++[<+++++>-]<++
    >++++++[<++++++>-]<+
    >+++++++++[<--------->-]<+++
    >++++++++[<++++++++>-]<++++++
    >++[<-->-]<-
    ++
    >++++[<++++>-]<+
    >++++++++[<-------->-]<--------
    >+++[<--->-]<---
    >+++++++++[<+++++++++>-]<---
    >+++[<--->-]<
    >++++[<++++>-]<+
    >++++[<---->-]<-
    >++++[<++++>-]<---
    >+++++++++[<--------->-]<-
    >++++++++[<++++++++>-]<+++++
    >++++[<++++>-]<+
    >++++[<---->-]<-
    >++++[<++++>-]<---
    >+++++++++[<--------->-]<-
    >+++++++++[<+++++++++>-]<++++
    --
    >++++[<---->-]<++
    >++++++++[<-------->-]<-----
    >++++++++[<++++++++>-]<+++++++
    --
    >++++[<++++>-]<-
    -
    >+++++++++[<--------->-]<++++++
    +
    >+++[<--->-]<
    >+++++++++[<+++++++++>-]<--
    +++
    >+++++++++[<--------->-]<-
    >+++++++++[<+++++++++>-]<++
    ---
    ++
    >+++[<--->-]<
    >++[<++>-]<+
    >++[<++>-]<++
    >++++[<---->-]<++
    >++++++++[<-------->-]<++
    +
    +++
    >+++[<--->-]<---
    >+++++++++[<+++++++++>-]<-
    >+++[<--->-]<--
    >++++[<++++>-]<---
    >+++[<--->-]<
    >++[<++>-]<++
    >+++[<--->-]<--
    >+++++++[<------->-]<-----
    >++++[<---->-]<++
    >++++++[<++++++>-]<+++++
    >+++++[<+++++>-]<++++
    >++++++++[<-------->-]<------
    >+++++++++[<+++++++++>-]<++++++++
    >+++[<--->-]<-
    >++[<++>-]<++
    >+++++++++[<--------->-]<----
    >++++++++[<++++++++>-]<++++
    >+++[<+++>-]<++
    >+++++++++[<--------->-]<++
    >+++++++++[<+++++++++>-]<++++++
    >++++[<---->-]<--
    >++++++++[<-------->-]<-----
    >+++++++++[<+++++++++>-]<++++++
    >++++[<---->-]<++
    +++
    .
    >+++++++++[<--------->-]<+++++
    >+++++++++[<+++++++++>-]<++
    >++++[<---->-]<++
    >+++[<+++>-]<
    >+++[<--->-]<-
    >++++++++[<-------->-]<----
    >++++++++[<++++++++>-]<+++++
    >++++[<++++>-]<+
    >++++[<---->-]<+++
    +++
    >+++++++++[<--------->-]<+++++
    >++++++++[<++++++++>-]<++++
    >++++[<++++>-]<+++
    >+++++[<----->-]<+++
    >++++[<++++>-]<+
    >+++[<--->-]<---
    >++++[<++++>-]<---
    >+++++++++[<--------->-]<--
    >++++++++[<++++++++>-]<+
    >++[<++>-]<+
    >++++[<++++>-]<--
    >++++[<---->-]<+
    >++++[<++++>-]<---
    >+++++++++[<--------->-]<-
    >+++++++++[<+++++++++>-]<++++++++
    >+++[<--->-]<-
    >++[<++>-]<++
    >++++++++[<-------->-]<-------
    .
    

    Si buscas por Google hay muchos intérpretes y conversores para este lenguaje. Si ejecutamos dicho código tal y como está, esta es la salida: ..l.. Después de mirar un rato y depurar un poco el código, la solución a la que llegué fue poner un ‘.’ (punto) al final de cada línea que no tenía punto. El punto significa poner el byte actual en la salida. Así tras haber hecho eso y ejecutar de nuevo la salida que obtenemos es:

    Jan 30, 2012
    CyberlabProgramaciónHacking