Pipelao / Cripto-FJO

0 stars 0 forks source link

Recorrección Tarea 1 Pregunta 3 #1

Closed Pipelao closed 3 years ago

Pipelao commented 3 years ago

El error que salía era de dos for que decían for m in mensajes y mensajes no existía dentro de la función si no que en el jupyter general, por lo que cambié dichos for por: for m in encrypted_messages y ahí funciona. Sin embargo, tenía el retorno como la primera versión del enunciado, es decir, retornando una lista (lo pueden corroborar con los comentarios de la función que tengo), por lo que debí crear el diccionario resultados y asignarle a cada mensaje su respectivo decriptado. Esos fueron los cambios que hice, que son pequeños.

nicovsj commented 3 years ago

Hola @Pipelao , acá tu recorrección:

Aparece un nuevo error. Se deja adjunto. Si te interesa nos podemos juntar y me dices como arreglar el error y veo si corresponde darte puntaje:

Traceback (most recent call last):
  File "[...]/Pipelao/solver_corrector.py", line 120, in <module>
    test_results.append(evaluate_test(e1, k1, d1))
  File "[...]/Pipelao/solver_corrector.py", line 74, in evaluate_test
    solution = p3.break_random_otp(enc_msgs)
  File "[...]/Pipelao/pregunta3.py", line 267, in break_random_otp
    elegidos[indices[0][0]].append(llave)
IndexError: list index out of range

Quedo antento a cualquier comentario, Saludos!

Pipelao commented 3 years ago

Hola @nicovsj , Estuve revisando mi código y probando con el archivo de mensajes_p3.csv y me resulta, entonces quería saber si puedo de alguna forma probar con el archivo que estás corriendo para poder debugear mejor, porque de hecho hago prints en el else que es en la línea donde me muestras que se cae y me printea y no se cae, entonces debe ser un caso borde que hace que se caiga. Te agradezco la paciencia y buena onda para recorregir mi código :) y estoy atento a tú respuesta.

nicovsj commented 3 years ago

Hola @Pipelao,

Te puedo dar la lista de mensajes encriptados que le paso a tu break_random_otp:

['\x02\x08\x08Ir_\x1f}\x0fT',
 'jxB\x16jLW\x01=!',
 '@An^^\x1c1a(6',
 '\x04pZh\\g\x7fw)f',
 ']Z+H\x1f\x03-4-y',
 '\x02\x08\x0cOeO\x17<\x14O',
 '\x18&t+ &\x0c\x15{F',
 '<\x13l%`~\\up"',
 ';aEcxd4\x0ca<',
 'zio\x1fM7$/(D',
 'h\\u`4uX;\x1d"',
 'x\x13lq4wU9\x1d+',
 '\x0eN\x11DrY\\</R',
 'hnB\x0fp\x0fOT+d',
 '#%E$6X{\x18/+',
 'i\x08"d`6U0\\0',
 '"\x16\x16r\x10\x07\x06\x13B2',
 '4|\x05m\x01R.Y".',
 'vOT2X)y\x08Sa',
 ')(J?=S/Y#*',
 'D\\g@\x1b\x1e~`2s',
 "]\x12{jzs\x19 S'",
 'G\\\x10BeORk\x1eO',
 '|\x1c\x031C.hO\x1dN',
 'z{C(xN/\x0b &',
 'R[G?+}ee3m',
 '\x06X\x1dU7]\x1au\x18U',
 '\x1atLhi|~o8g',
 '0=\x15\x0bq\x04\x07\x15iw',
 '\x0fMXDbH\x1b\x7f\x17X',
 'io\x03\x05l\x02@\x180!',
 'a\x0cQ&X+s\rX(',
 'Y:byh=\x14PAH',
 '\x06}Mh|f~h8)',
 '4(J!4\x1d?\x16a&',
 'n\x0fgir6L%\x13c',
 'RT\x08;~jua3)',
 'z7:D\x107\x1e,aX',
 '\x04\x08\x0cRuORs\x15\x1d',
 'p|\x00\x03wLA\x06&o',
 'h<B#k\x08\x07\x00!d',
 'GG\x1e\x07cB\x17<\x08M',
 '\\\nU6^jb\tRq',
 '+\x10U<\x10\x11\x0c\x1fR$',
 "^5K'f|p`8'",
 ']Y{I\x1aZ*{=s',
 'kA\x03\x1bIjb\x15Ri',
 'r\x08"i}x\\y\x1d!',
 'yn\x11\x07vM\x07><r',
 '~x\x16\x16`\x1e\x0bT*n',
 '{\x7f,K\x06r\x16/$T',
 '?m\x0b !\x1d0\x17$*',
 'imB\x15l\x18OZiO',
 "\x177'h'<\x17Q\x12\x08",
 '2(F(x\\<\x18(!',
 'u\nkiqq\\uR%',
 'qo\x03\x06`@\x07\x00!`',
 '\x1drbm. \x18\\W\x08',
 "eOG:_'p\x18\x1c&",
 'usLBQ\x04F\x00:!',
 "z&0]U75'/T",
 '.(B+xD4\x0ca8',
 "\x0c&'|!=\x13\x15@\x03",
 '426[\x00v\x1c##\\',
 "<-0ETc\x1f'aD",
 '/\x1d\x10r\x04D\x07\x15Da',
 '2\x18K:@/1\x15Uc',
 'h=\x16\nl\x02LT>i',
 '2\x06M X8d\x02It',
 '9+q\x085y\x13b.^',
 ')\x06\n<\x0c\x02O\x08_$',
 'z09\x08\x15yW*(C',
 '@An\x0c\x1a\x0f-`zp',
 "}\t\x03'D/1\x04Dc",
 '\x13a[hikep8{',
 '3,\x7f@\x15y\x131aE',
 '\x0e3i\x7fh=\x14\x15A\x03',
 'l\x06\x10{\x0bD\x18\x14^"',
 'ht\x0c\x05%*H\x06=s',
 '\x08NXO~YRx\x1eN',
 '<\x1akb|bP;Zc',
 'w\x1cPs^+x\x12Xb',
 'sjB\x16w\x15\x07\x15.`',
 '\x0b!s+"&\x12[FF',
 '$\x10Yx\x06\x01\x1fP\x174',
 '=`_(6X?Y)*',
 '\x1az\\hxyte))',
 'R{G<+zc}4g',
 '\x18\t\\E\x10\t*{46',
 '\x15;\x08\x04dytvq)',
 '\x1e7uxh<\x15QW\x14',
 '}nB5l\x02T\x00&o',
 '\x14Z{I\x1f\x11)f3b',
 '?(R"-\x1d?\x16(!',
 '2\x1dF I$e\x0cXh',
 '\x117foh(\x15Q\x12\t',
 'z+7MTd\x1f0$G',
 'y\x0e"c{dM,\x10%',
 'Rz]<+o}h}f',
 "RbI<hf1i8'",
 "2\x7f\x08\x06U7.'2\x1c",
 'lGI< \x0c\x0e\x0cC$',
 'FB+_\n\x1b,`?r',
 '\x03QXA{E\x02l\x1eY',
 'R[dA^\x0f*`?d',
 '3,7\x08\x02x\x1e!$\x10',
 'A]c\\\x17\x1f=qv6',
 'fN\x03\x12\x0c9x\x0fZj',
 '}y\x06\x07aLB\x1a*n',
 '"U\x1as\x16\x08\x0b\\G3',
 "?\x7f;G\x17b\x1a'/D",
 ')60FTD\x1a+5X',
 'FFf\x0c\x17\x0e-47y',
 '<\x08m`g8\x19\x02Xc',
 '\tL\x1dUd\n\x1dz[M',
 '!\x10Yu\rD\x1c\x19A$',
 '\x13@\x1d\x07eC\x15t\x0f\x10',
 '5}Ym;U2\x15%=',
 "\x1a+'i-'\x0f\x15]\x10",
 'Rt\\hnobaq)',
 "?3:[\x17e\x12'/\x1e",
 '\x180h}-i\x13P@F',
 '=(B9v\x1d\x0c\x185,',
 'l\x01\x1cp\x06\x17\x0c\x0eR$',
 '\x7f\x0eJ=I.1\x02Rk',
 '\x143u`)+\x17P\x12\x08',
 'G\\\x10B7X\x1b{\x13I',
 ']Gl\x0c\t\x12;zz~',
 '\x17t[-*.Hk()',
 '\x0c\x06Xny\n\x06t\x1e\x1d',
 '\x02I\x13PeC\x06yW\x1d',
 '?f\x05m\x16R,Y- ',
 'hi\x07\x10)LT\x1c,!',
 'r=\x16\n`La\x18&`',
 '\x10I\x14Kd\n\x1dz[I',
 "\x1c 'j&-[AG\x05",
 '4|\x0b".X)Y (',
 '%\x1a\x15y\r\x10O\x10B/',
 'hR"Wq{\\8_&',
 '\x11tFhoa1f8}',
 'p\x10"nqsIu[*',
 'l\x01\x11yC\n\n\x1dE/',
 '2\x07F!\x0c+c\x0cN&',
 ";f_m,RwY2'",
 'UJgI\rT~@2s',
 "b\x03F'I&hATh",
 '2!F%I81\x12Ui',
 '}iB\x16m\t^T!`',
 '\x1a7a~$%\x02\x19\x12\x04',
 'RyG?n|=$-e',
 'zA](xU:\x1da)',
 'UGo\x0c\x0e\x0f*45x',
 '\x01d])o"1e3m',
 '?(J)<X?Y <',
 'z+7I\x007\x18!"Q',
 'u\ng%}e\x19%X1',
 ')U\x1fu\x11\x17\x1b\\C(',
 '\x1c3se-:\x08\x15S\x08',
 '59\x7f\\\x1crW$ \\',
 '\x06pZh\x7ffpj}}',
 'GG\rS7E\x14<\x0fU',
 'Y\x06on:,W\x15Q\t',
 '$U\x17s\x17D\n\nR/',
 'i\x1fjlzq\x19=T0',
 '\x14Ab_^\t.q9b',
 '>\x14\x15<\x1a\x01\x0e\x0eDo',
 '{\x1c\x035M)tAOc',
 'Q_nB\nZ6}76',
 '\x1at\\f+W~q/l',
 '(\x10\x1d<\n\nO\x08X4',
 '\x14E\x19K{\n\x11e\x17T',
 ";-&\x08\x04e\x18-'\x10",
 'aO@<Y&uAZo',
 'wOE?E)z\x04O&',
 '<n\x03\x0bi\x03U\x07ih',
 'Q\t\x7fC\t\x1b,p)6',
 '\x02yM)xk0$\ta',
 ')69A\x17v\x03+.^',
 'Z\tcI^\x0f0f5z',
 '\x0fI\x16C7Y\x1bx\x1e\x1d',
 '\\@f\x00^\x182q-6',
 'n\\mpf6[:D0',
 '8\x1a\x1coC\x13\x06\x08_a',
 '\x14 fo-:Z\x15f\x0e',
 'XLo\x0c\x1f\x14:49z',
 '>UM<4\r\x1b\x14\x175',
 'u\x12"q|s\x193O,',
 "'\x1b\x1cy\x10D\x1a\x12U$",
 "\x16&'x)0[R@\x07",
 ".0-A\x17v\x1bb'Q",
 'z\x19aqxo\x196\\3',
 "\x164'c-;[S[\x08",
 '}\x1en`4y_uI,',
 't(b xI3\x103;',
 '5c\x05m\x0bU>Y#*',
 '"\x01U<\x05\x0b\x1d\\C)',
 '}\ng%`~\\uM1',
 'd\n\x03*C?1\x00Jg',
 '\x127c+<!\x1e\x15T\x0f',
 'G@\x19C7K\x1en\x1e\\']

Ojo que son mensajes que ya están decodificados a partir de los binarios en ascii que están en el csv. El tema es que si le paso esos binarios en ascii a tu función, no me adivina ninguna llave (0/10 llaves en ambos test).

Pipelao commented 3 years ago

Hola @nicovsj ,

Siendo sincero, cuando pruebo el mensajes_p3.csv no me decripta todos los mensajes, pero algunos son bastante legibles por lo que apelaba a que iba a decriptar algunos mensajes mi función, pero si tú me comentas que en ambos test no tengo algo..., estoy bastante F al parecer. Lo que probé fue comentando el while que hice con probabilidades, ahí me va un poco mejor, que es como lo subí ahora, pero no sé si haga la diferencia. ¿Hay alguna forma de obtener puntos en la pregunta por código/idea que hice? Porque estuve corriendo la lista que me mandaste y ya sé por qué no funciona, y es que tengo un if que verifica que el xor esté entre 0 y 31 o 65 y 91, y al pasármelas como ascii no los toma como letras y me queda vacía la lista y por eso el indexError, así que definitivamente sólo funciona como binario. Espero obtener algo de puntos en el test ahora, pero si no, obtener puntos por idea/código, porque creo que tener 0 pts cuando hice algo no es justo. Estoy atento a tú respuesta y espero sean buenas noticias :)

Pipelao commented 3 years ago

Hola @nicovsj ,

Disculpa por tanto mensaje. Ayer hablando con un amigo caché que estaba retornando mal el diccionario, porque las llaves eran las llaves y los values la lista de los mensajes, y yo estaba retornando cada mensaje encriptado con su mensaje decriptado, por eso ninguna llave coincidía porque nunca retornaba la llave. Además, le agregué como a la condición dónde veo si son como del mismo tipo de mensaje que el xor estuviese entre 97 y 121 porque estuve probando nuevamente los xor. Esta modificación es pequeña, la agrego en dos líneas en un If, y ahí me mejoró un poco la decriptación. Disculpa el "mucho texto", pero en resumidas cuentas, el código que cambio es poco del que entregué la primera vez, al final modifiqué el for inicial que llamaba a una variable fuera de la función, luego el cambio de retornar las llaves y no los mensajes encriptados y por último esto del If que le agregué para que considere otros números también, son como 5 o 6 líneas en total.

Prácticamente no consideres el mensaje anterior porque el que te mando ahora es el mejor que obtuve. Nuevamente disculpa las molestias y gracias por la paciencia, estaré atento a tú respuesta y espero sean buenas noticias :)

PD: Las llaves las retorno en binario, espero que sea así o si no lo cambio a ascii :+1:

nicovsj commented 3 years ago

Hola @Pipelao,

Tranquilo, ahora ya entendí el problema que tenías. El cambio que hiciste efectivamente hace que funcione (las llaves las tenías en binario como dices en el PD, lo que no es lo que espera mi script de revisión, pero lo adapté y anda bien). Ahora tienes 10/10 llaves en test1 y 0/10 llaves en test2 (es normal que en test2 no saques buenos resultados, en general fueron muy pocos los que lograron adivinar una llave al menos ahí, y la rúbrica está diseñada con eso en mente).

Eso te da 5/6 puntos en esta pregunta ahora. Así que cierro la issue.

Saludos!