1-C-3 - Grupo - 1 (NO ENTREGAN PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 11

UNIVERSIDAD DE SANTIAGO DE

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

PLANTEAMIENTO DEL PROBLEMA ................................................................................ 2

2.1. CODIFICAR Y DECODIFICAR............................................................................. 2

2.1.1. CODIFICAR .................................................................................................. 2

2.1.2. DECODIFICAR ............................................................................................. 2

FUNCIONALIDADES ......................................................................................................... 3

ABSTRACCIÓN DE PROCESOS ...................................................................................... 4

ESTRUCTURA DE PROGRAMA ....................................................................................... 6

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.

¿Qué es la esteganografía? La estenografía es el arte y estudio de técnicas para ocultar


un determinado mensaje u objeto dentro de otros. A pesar de que la técnica tiene sus
orígenes en la antigua Grecia, hoy se utiliza principalmente para el envío de mensajes
ocultos de texto, en archivos de audio o imagen. En el caso de la imagen se aprovecha el
hecho de que las computadoras tienen la capacidad de visualizar una mayor cantidad de
colores que los seres humanos podemos ver. Esto nos permite hacer unas pequeñas
variaciones en los bits de cada canal de la imagen logrando ocultar líneas de textos
invisibles para el ojo del ser humano.

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.

El primer análisis abarcara las problemáticas surgidas en la investigación y posterior


entendimiento del programa requerido desde la primera exposición. Seguido de las
funcionalidades las cuales harán que el programa cumpla con el objetivo planteado en el
proyecto. Además de realizar con los antes investigado el diagrama de abstracción el cual
nos mostrara de forma resumidas el orden de como actuaran las funciones en
determinadas situaciones de entrada o salida.

FALTA EL OBJETIVO CONCRETO DE ESTE INFORME

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. CODIFICAR Y DECODIFICAR

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.

FALTÓ EXPLICAR LA FORMA EN EL QUE SE SOLICITA OCULTAR LA INFORMACIÓN


DENTRO DE LA IMAGEN, Y DE IGUAL MANERA, LA FORMA EN LA QUE USTED DEBE EXTRAER
UN TEXTO DESDE UNA IMAGEN.

EL ENUNCIADO DEL PROBLEMA ESTÁ INCOMPLETO.

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.

AGREGAR MENSAJE DE ERROR EN EL CASO QUE NO PUDO


ABRIR LA IMAGEN. O NO ERA DEL FORMATO CORRECTO.

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 2: El diagrama en este punto de divide en dos procesos y funcionalidades


diferentes ya que en esta etapa el usuario habrá elegido lo que quiere realizar.

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.

Etapa 2b: Si el usuario digita la segunda opción decodificar el programa, inmediatamente


se le pedirá una imagen (matriz) la cual deberá cumplir un requisito dado en un hipotético
inicio del programa, al cumplirlo el programa procederá mediante una función a extraer el
código impreso la imagen, para que finalmente sea mostrado el texto en pantalla.

FALTÓ ALGO DE DETALLE:


QUÉ VALIDARÁ EN EL TEXTO A OCULTAR?

¿A QUÉ SE REFIERE CON ESTO????

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

#Traspasar a código ASCII:


#Entrada: texto.
#Salida: lista con los códigos ASCII de cada letra del texto.
def traspasarCodASCII(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

#Transformar Pixel a binario:


#Entrada: números decimales de la cantidad de RGB.
#Salida: números binarios equivalentes a la cantidad de RGB presentes en
#el pixel.
def pixelABinario(int):
# Resto de la función

#Generar imagen con nueva matriz:


#Entrada: imagen como matriz con el texto introducido en ella.
#Salida: una imagen BMP con el texto oculto en ella.
def imagenNueva(matriz):
# Resto de la función

#Mostrar imagen por pantalla:


#Entrada: imagen BMP.
#Salida: imagen BMP mostrada al usuario por pantalla.
def imagenPorPAntalla(bmp):
# Resto de la función

#Guardar imagen en ruta especifica:


#Entrada: Imagen BMP.
#Salida: Imagen BMP guardada donde el usuario desee.
def guardarImagen(bmp,string):
# 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

#Extraer código matriz:


#Entrada: imagen como matriz.
#Salida: Lista en binario.
def extraerCodigoMatriz(matriz):
# Resto de la función

#Transformar pixel a binario:


#Entrada: números decimal de la cantidad de RGB presentes en el pixel.
#Salida: números binarios con la cantidad de RGB presentes en el pixel.
def transPixelBinario(int):
# Resto de la función
7
#Transformar binario a carácter:
#Entrada: Lista de números binarios correspondientes a la cantidad de RGB
presentes en el pixel.
#Salida: Texto (string).
def transBinCaracter(lista):
# 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

OPCION = raw:input("Ingrese una opción (1) codificar (2) decodificar")


nombreImagen = raw_input("Ingrese nombre de imagen: ")
if OPCION == 1:
texto = raw_input("Ingrese texto a ocultar: ")

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.

CÓMO HA TRABAJADO EL GRUPO?

También podría gustarte