#ifndef CHALLENGESLIB_H #define CHALLENGESLIB_H #include "challenges.h" #define MAX_CHALLENGES 12 challenge_t challenges[] = { {"Bienvenidos al TP3 y felicitaciones, ya resolvieron el primer acertijo.\n\n\ En este TP deberán finalizar el juego que ya comenzaron resolviendo los desafíos \ de cada nivel.\nAdemás tendrán que investigar otras preguntas para responder \ durante la defensa.\nEl desafío final consiste en crear un programa que se \ comporte igual que yo, es decir, que provea los mismos desafíos y que sea necesario \ hacer lo mismo para resolverlos. No basta con esperar la respuesta.\nAdemás, \ deberán implementar otro programa para comunicarse conmigo.\n\nDeberán estar atentos \ a los easter eggs.\n\nPara verificar que sus respuestas tienen el formato correcto \ respondan a este desafío con la palabra 'entendido\\n'", "¿Cómo descubrieron el protocolo, \ la dirección y el puerto para conectarse?", "entendido\n", NULL}, {"The Wire S1E5\n5295 888 6288", "¿Qué diferencias hay entre TCP y UDP y en qué casos \ conviene usar cada uno?", "itba\n", NULL}, {"https://ibb.co/tc0Hb6w", "¿El puerto que usaron para conectarse al server es el mismo \ que usan para mandar las respuestas? ¿Por qué?", "M4GFKZ289aku\n", NULL}, {"EBADF...", "¿Qué útil abstracción es utilizada para comunicarse con sockets? ¿se puede \ utilizar read(2) y write(2) para operar?", "fk3wfLCm3QvS\n", writeChallenge}, {"respuesta = strings:269", "¿Cómo garantiza TCP que los paquetes llegan en orden y no se \ pierden?", "too_easy\n", NULL}, {".data .bss .comment ? .shstrtab .symtab .strtab", "Un servidor suele crear un nuevo proceso \ o thread para atender las conexiones entrantes. ¿Qué conviene más?", ".RUN_ME\n", NULL}, {"Filter error", "¿Cómo se puede implementar un servidor que atienda muchas conexiones sin usar \ procesos ni threads?", "K5n2UFfpFMUN\n", filterChallenge}, {"¿?", "¿Qué aplicaciones se pueden utilizar para ver el tráfico por la red?", "BUmyYq5XxXGt\n", questionChallenge}, {"Latexme\n\nSi\n \\mathrm{d}y = u^v{\\cdot}(v'{\\cdot}\\ln{(u)}+v{\\cdot}\\frac{u'}{u})\n\ entonces\ny = ", "sockets es un mecanismo de IPC. ¿Qué es más eficiente entre sockets y pipes?", "u^v\n", NULL}, {"quine", "¿Cuáles son las características del protocolo SCTP?", "chin_chu_lan_cha\n", quineChallenge}, {"b gdbme y encontrá el valor mágico", "¿Qué es un RFC?", "gdb_rules\n", gdbChallenge}, {"Me conoces", "¿Fue divertido?", "normal\n", normalChallenge} }; char too_easy = 'a'; char * easter_egg1 = " _______________________\n\ < ESTO ES UN EASTER_EGG >\n\ -----------------------\n\ \\ ^__^\n\ \\ (oo)\\_______\n\n\ (__)\\ )\\/\\\n\ ||----w |\n\ || ||\n"; #endif