1-C-3 - Grupo - 1 (NO ENTREGAN PDF
1-C-3 - Grupo - 1 (NO ENTREGAN PDF
1-C-3 - Grupo - 1 (NO ENTREGAN PDF
CHILE
FACULTAD DE INGENIERÍA
Fundamentos de Computación y Programación
INFORME N°1
Esteganografía
Grupo N°1
Sección : 1-C-3
Profesor de : IRENE ZUCCAR
Laboratorio PARRINI
Profesor de : FELIPE FUENTES
Teoría BRAVO
Integrantes : FELIPE MORALES
LUIS MENESES
VICENTE VERA
ROCIO URREA
RAFAEL REYES
Santiago
Mayo 2017
CONTENIDO
INTRODUCCIÓN ............................................................................................................... 1
FUNCIONALIDADES ......................................................................................................... 3
CONCLUSIONES ............................................................................................................... 9
INTRODUCCIÓN
El presente informe se refiere al tema del proyecto elegido para llevar a cabo en el
laboratorio de fundamentos de programación y computación. Analizar las primeras
problemáticas y avances surgidos en el trascurso de las semanas.
Al tener una gran variedad de opciones como grupo analizamos cada una y nos
decantamos por el proyecto más equilibrado en determinados aspectos como los son la
dificultad, monotonía y la opinión de cada integrante. Es por esto que elegimos el proyecto
que tiene como nombre “Ocultar y recuperar mensajes ocultos en imágenes” o
Estenografía.
En el ámbito de dificultad consideramos este proyecto ya que tiene objetivo claro y poco
engorroso, con extensiones diferentes en el caso de codificar o decodificar.
1
NO. EL PROBLEMA ES OCULTAR UN MENSAJE
EN LA IMAGEN: LA FORMA DE HACERLO ESTÁ
INDICADA EN EL ENUNCIADO. USTED DEBE
LOGRAR HACER AQUELLO USANDO PYTHON.
PLANTEAMIENTO DEL PROBLEMA
Nuestro principal problema, básicamente es encontrar la manera más optima de ocultar
mensajes dentro de una imagen para ello necesitamos los conocimientos del software en REDACC.
el que vamos a trabajar, pero también es necesario que el programa haga lo contrario, es
decir, conseguir montar una imagen en el programa y que además el programa detecte
que hay texto oculto dentro de esa imagen, esto en un lenguaje más técnico le llamarían
codificar y decodificar la imagen.
2.1.1. CODIFICAR
REDACC.
En cuanto a codificar la imagen, se le solicita al usuario que busque una imagen (con su
respecto formato (.bmp)) en sus archivos, luego de selección el programa la transformara REDACC.
a matriz para poder trabajar cada uno los pixeles dentro de la imagen, con esto ya
REDACC.
previamente realizado dentro del programa, se le solicita al usuario que ingrese el
mensaje que se le va introducir en la imagen, el texto debe contener solamente los REDACC.
caracteres permitidos dentro del programa de lo contrario este mandara un mensaje
diciendo, “texto no valido, por favor vuelva a intentar”. Ya con el texto bien colocado el
programa guardara la imagen con el respectivo código, para luego mostrar la imagen en
INGRESADO,
pantalla con el texto introducido en la imagen. DIGITADO
2.1.2. DECODIFICAR
Ahora en decodificar la imagen se solicitan los mismos pasos anteriores en cuanto al REDACC.
montaje de la imagen y transformación a matriz, pero en esta situación el usuario solicita (la
que el mismo programa busque si existe algún texto dentro de la imagen, si existe texto transformación a
dentro de esa imagen el programa automáticamente después de haber revisado pixel por matriz no se le
solicita al
pixel la imagen le avisara al usuario el contenido del texto que estaba puesto en esa
usuario)
imagen, en la caso contrario de que no haya texto el programa imprimirá por pantalla
“imagen sin mensaje oculto “ de esta forma sabremos si cada imagen montada en nuestro
programa tendrá mensaje oculto o no, mientras el usuario solicite la decodificación de
ella.
CUIDADO CON ESTO: NO TIENE CÓMO SABER SI POSEE O NO UN TEXTO OCULTO.
2
FUNCIONALIDADES
Nuestro programa en concreto tiene dos funcionalidades: codificar un texto en una imagen
cualquiera y decodificar un texto desde una imagen modificada pero estas se pueden
subdividir en más funcionalidades necesarias para la ejecución de cada funcionalidad. A
continuación nombramos las sub funciones más relevantes del programa:
1.
Preguntar qué operación desea realizar
2.
Pedir un archivo BMP
3.
Buscar la imagen en el ordenador he incorporarlo al programa.
Reconocer una ruta o archivo no valido. ESTO ES PARTE DE LA FUNC. ANTERIOR.
4.
5.
Pedir el texto a ocultar al usuario.
6.
Reconocer si el texto cumple las condiciones para ejecutar el programa.
7.
Transformar la imagen a matriz.
8.
Separar cada letra del texto y transformar a código ASCII, y el ASCII a binario.
9.
Transformar cada elemento de la matriz de imagen a su porción de RGV en REDACC.
binario.
10. Ingresar el texto en binario en los pixeles de la matriz de imagen.
11. Generar la imagen a partir de la matriz modificada. Y MOSTRARLA
12. Preguntar dónde guardar la imagen.Y GUARDARLA. AL USUARIO !!!!!!!!!!!!!!!!!!!!!!!!
13. Guardar la imagen en la ruta especificada.
FALTA EXPLICAR 14. Reconocer la imagen adulterada. NO ES POSIBLE. SOLO DEBE PEDIR EL NOMBRE DE LA IMAGEN
MÁS DETALLE 15. Extraer la información oculta. AL USUARIO.
16. Transformar el binario oculto a ASCII y luego a texto
17. Mostrar por pantalla el texto extraído.
3
ABSTRACCIÓN DE PROCESOS
El diagrama de abstracción que está a continuación representa gráficamente el proyecto a
desarrollar permitiéndonos tener una vista general del esqueleto del programa en cual
depende de una variedad de procesos y funciones las cuales serán explicadas a
continuación.
MUY BIEN!!!!
4
Etapa 1: Al inicio del diagrama encontramos un rombo el cual nos señalará una decisión
que deberá tomar el usuario, la cual será codificar o decodificar digitando un número que
sea representativo.
Etapa 2a: Si el usuario digita la opción codificar simultáneamente el programa pedirá una
imagen y un texto (string), los cuales tienen que cumplir con requisitos dados un hipotético
inicio de programa, al pasar esta primera barrera el programa va a proceder a transformar
el texto finalmente a código binario para introducirlo en la imagen elegida. Con la imagen
y el texto en la misma matriz se guardará la imagen preguntándole al usuario una ruta en
especifica.
5
ESTRUCTURA DE PROGRAMA
# -*- coding: cp1252 -*-
# Programa diseñado para insertar y extraer información tipo string en
una imagen tipo bmp sin que sea detectable al ojo humano.
# Autores: Rafael Reyes; Felipe Morales; Luis Meneses; Rocio Urrea;
Vicente Vera
# Version: 1.0
#Fecha: 8 de Mayo de 2017
# BLOQUE DE DEFINICIÓN
# DEFINICIÓN DE CONSTANTES
# IMPORTACIÓN DE FUNCIONES
DEBE IMPORTAR ALGÚN MÓDULO QUE LE PERMITA TRABAJAR CON
IMÁGENES... POR EJEMPLO "PIL"
# DEFINICIÓN DE FUNCIONES
#CODIFICAR
#Abrir imagen:
#Entrada: nombre del archivo.
#Salida: imagen como matriz.
def codificar(string):
# Resto de la función
#Validar Texto:
#Entrada: texto.
#Salida: texto. DEBIERA SER UN BOOL, QUE INDIQUE SI ES VÁLIDO O NO EL TEXTO.
def validarTexto(string):
# Resto de la función
#Transformar a Binario:
#Entrada: Lista con los códigos ASCII de cada letra del texto.
#Salida: Lista en binario, de cada letra del texto.
def transBinario(lista):
# Resto de la función
6
#Introducir códigos de matriz en imagen:
#Entradas: imagen (como una matriz) y lista en binario.
#Salidas: imagen (como una matriz) con el texto introducido en ella.
def introCodigoMatriz(matriz,lista):
# Resto de la función
#DECODIFICAR
#Abrir imagen:
#Entrada: nombre de archivo.
#Salida: imagen seleccionada como una matriz.
def decodificar(string):
# Resto de la función
# BLOQUE PRINCIPAL
# ENTRADA
<Aquí solicito mis entradas (¡Lo puedo hacer con funciones!)>
# PROCESO
<Aquí realizo mis procesos (Idealmente lo debo hacer con funciones)>
# SALIDA
<Aquí entrego mis salidas (No siempre salida == print)>
FALTO ESTABLECER LOS PASOS DEL BOLQUE PRINCIPAL
if OPCION == 1:
matriz = codficar(nombreImagen)
.... etc....
es decir, "orquestar" la llamada a sus funciones, según lo estableció en
el daigrama de abstracción.
8
CONCLUSIÓN
Al analizar todo, en conclusión, la estenografía es una herramienta muy útil al momento
de mandar mensajes ocultos, y muy versátil por lo demás con las tecnologías que van
cambiando cada día.
Si bien aún no sabemos todo lo necesario para adaptarlo a Python y poder crear un
programa que pueda codificar y decodificar un texto en una imagen con esta breve
investigación pudimos comprender que la funcionalidad de este es mucho más completa
para la ejecución de este, ya que, tiene muchas sub divisiones necesarias para la REDACC.
formación del esqueleto teniendo una noción más clara y concreta de lo que se debe
hacer y los pasos a seguir para poder crear un programa funcional que realice esta tarea.
LAS CONCLUSIONES DEBEN ESTAR RELACIONADAS CON EL TRABAJO DE ESTE DOCUMENTO. Y ESO NO ESTÁ
BIEN ESTABLECIDO AQUÍ. EN LA INTRODUCCIÓN SE DBE PLANTEAR OBJETIVOS DE ESTE DOCUMENTO, Y EN LAS
CONSLUSIONES SE ANALIZA EL CUMPLIMIENTO DE ELLOS.