Python Inicial Argentina Programa 4.0 - FIUBA _________________________________________________________________________________________________ Trabajo Práctico Grupal Mensajes secretos - Parte 2 - ES#13 Objetivo General Sumar funcionalidad a la aplicación desarrollada en la Parte 1 del TP Grupal, que permite cifrar mensajes secretos para ser enviados sin poder ser interceptados. En este caso podremos asignar a nuestro mensaje un destinatario específico (un espía) y además preservaremos los datos en un archivo csv. Planificación para el desarrollo de la aplicación Para que puedan alcanzar el objetivo general exitosamente, los vamos a guiar en el proceso de modificación del código logrado para la Parte 1. Es importante que sigan las indicaciones aquí descritas y las dadas por los docentes a cargo. ➔ Deberán ir cumpliendo los objetivos en orden y a medida que los cumplan, subir lo producido al campus. ➔ Deberán preservar una versión del programa de la Parte 1, y generar una nueva versión por cada uno de los objetivos a cumplir. _________________________________________________________________________________________________ Bianchi - Espina Página 1 Python Inicial Argentina Programa 4.0 - FIUBA _________________________________________________________________________________________________ ES#13 - Objetivo 1: Destinatario En esta oportunidad agregaremos una opción de envío de mensajes cifrados pero indicando un destinatario del mensaje (un espía en particular). Para ello, agregaremos una opción a nuestro menú inicial: Que desea hacer: 1) Cifrar mensaje 2) Descifrar mensaje 3) Enviar mensaje cifrado Opción: 3) Enviar mensaje cifrado Esta opción es similar a la 1), sólo que antes de solicitar el mensaje a enviar debemos solicitar el ingreso de un destinatario: Ingrese el espía destinatario del mensaje: volador.MI6 Para el caso que el mensaje quiera ser destinado a todos y por lo tanto accedido por cualquiera de los espías de la organización, se deberá indicar con el ingreso de un asterisco “*”; de lo contrario el usuario deberá ingresar como destinatario un identificador válido. El identificador del espía destinatario debe ser validado, sólo puede estar formado por letras, números, y los caracteres “_” “-” “.”; y tener como mínimo 5 caracteres y como máximo 15. Escribir una función de validación del identificador de espía destinatario. Si el usuario ingresa un destinatario inválido, se le debe advertir mediante un mensaje de “Espía Inexistente”, y en lugar de volver a solicitar nuevamente el destinatario, se deberá volver al menú principal de opciones. Si el espía destinatario ingresado es válido, se debe proceder a solicitar el mensaje a cifrar de igual modo que se hacía anteriormente. _________________________________________________________________________________________________ Bianchi - Espina Página 2 Python Inicial Argentina Programa 4.0 - FIUBA _________________________________________________________________________________________________ ES#13 - Objetivo 2: Preservación del mensaje en un archivo Una vez que el usuario haya ingresado: el destinatario del mensaje, el mensaje y elegido el cifrado; se deben preservar los datos en el archivo mensajes.csv. El archivo csv, debe tener el siguiente formato: destinatario,cifrado,mensaje-cifrado ➔ destinatario: será el identificador válido ingresado por el usuario tal como lo ingresó, sin cifrar ➔ cifrado: si se utilizó cifrado Atbash, entonces, será una “A”; si en cambio el cifrado utilizado es el Cesar, será una “C”, y a continuación el valor de la clave utilizada, por ejemplo: “C9”, indicará que se utilizó Cesar con clave 9. ➔ mensaje-cifrado: el mensaje ingresado por el usuario pero cifrado Una vez grabados los datos en el archivo csv, se debe mostrar el mensaje: Mensaje Enviado El archivo mensajes.csv es acumulativo, todos los mensajes deben ser agregados a este archivo y preservarse tras las ejecuciones del programa. ES#13 - Objetivo 3: Consultar mensajes cifrados Ahora vamos agregar una nueva opción a nuestro menú principal: Que desea hacer: 1) Cifrar mensaje 2) Descifrar mensaje 3) Enviar mensaje cifrado 4) Consultar mensajes cifrados Opción: 4) Consultar mensajes cifrados Esta opción debe permitir leer a un espía los mensajes que hay para él y mostrárselos pero descifrados. Para ello, seleccionada la opción 4) por parte del usuario espía, debemos solicitar al usuario que se identifique mediante el ingreso de su identificador de usuario. Ingrese su identificador de espía: volador.MI6 _________________________________________________________________________________________________ Bianchi - Espina Página 3 Python Inicial Argentina Programa 4.0 - FIUBA _________________________________________________________________________________________________ Si el identificador ingresado no es válido (reutilizar la función del objetivo 1), se debe mostrar el mensaje: ALERTA: Usted es un intruso Si en cambio, el identificador fuese válido, se debe buscar en el archivo mensajes.csv todos los mensajes que pueda haber para dicho identificador, y todos aquellos mensajes que hayan sido dirigidos a cualquier destinatario espía. La forma de visualización debe ser: primero los mensajes dirigidos a cualquier espía, y luego los mensajes dirigidos al espía en particular. Separar los mensajes por líneas punteadas, y los mensajes dirigidos particularmente al usuario deben ser diferenciados anteponiendo las tres primeras letras del identificador del destinatario, o en su defecto “TODOS:” Ejemplo: Lista de Mensajes: —--------------------------------------------------------------------TODOS: reunion en cuartel central martes veinte horas —--------------------------------------------------------------------TODOS: la cia intenta obtener informacion sobre blancanieves —--------------------------------------------------------------------VOL: proxima mision asignada python y la ciencia de datos —--------------------------------------------------------------------VOL: encuentro debajo del puente con tontin miercoles cinco am —--------------------------------------------------------------------Total de Mensajes: 4 Opcional: Desafío adicional En caso que en el ES#13 logren los 3 objetivos planteados y tengan tiempo disponible, ó decidan realizarlo fuera del horario del encuentro sincrónico, podrían agregar un archivo adicional espías.csv, en el cual se encuentren los identificadores de los espías, junto con la clave de acceso. De esta forma, cuando se seleccione la opción 4) Consultar mensajes cifrados, se debe solicitar el identificador y además la clave, y sólo mostrar los mensajes si los datos ingresados son válidos. Para esto se puede reutilizar el código generado en la actividad grupal de Interfaces Gráficas. _________________________________________________________________________________________________ Bianchi - Espina Página 4