La palabra esteganografía viene del griego y significa literalmente

Anuncio
PRÁCTICA DE LENGUAJES DE PROGRAMACIÓN
JUNIO 09
La palabra esteganografía viene del griego y significa literalmente “escritura
oculta”, pero últimamente, aplicada a la informática, su significado se ha concretado en la
ocultación de texto en imágenes, con la peculiaridad de que el texto a ocultar se mezcla
en la imagen de manera que sea imposible (a no ser conozcas el proceso inverso) siquiera
detectar que en la imagen existe un mensaje oculto.
La práctica correspondiente a junio del curso 08/09 de Lenguajes de
Programación consistirá en implementar un software, en Lenguaje C, para realizar
esteganografías. La aplicación tendrá dos partes claramente diferenciadas: ocultación de
un mensaje en una fotografía y obtención del mensaje oculto en una fotografía (proceso
inverso). Estos dos procesos se realizarán mediante dos programas en C distintos, cada
uno de ellos que realice una de las dos funciones mencionadas. A continuación se
especifican cada uno de ellos y el proceso de ocultación/extracción de la información en
la fotografía.
PROGRAMA 1. OCULTACIÓN
Este programa:
- recibirá como parámetros una fotografía en formato jpg y un fichero
de texto plano, con extensión .txt, que contiene el mensaje a ocultar
- deberá generar como resultado otro fichero jpg, con el mismo
nombre que el original pero acabado en -1, en el que se habrá
ocultado el mensaje contenido en el fichero de texto, según se
explica más adelante. Por ejm, si el original se llama “paisaje.jpg”, el
nuevo fichero se llamará “paisaje-1.jpg”
PROGRAMA 2. OBTENCIÓN DEL MENSAJE
Este programa:
- recibirá como parámetro una fotografía en formato jpg
- generará como resultado un fichero de texto plano (.txt), cuyo
nombre se pedirá por teclado, en el que dejará el mensaje obtenido
a partir de la fotografía y en base al método de ocultación
explicado a continuación
MÉTODO DE OCULTACIÓN
El método de ocultación de texto en una fotografía consistirá en ir cambiando
bits de la foto por bits del mensaje, hasta haber ocultado todo el mensaje.
El proceso de ocultación consiste en ir cambiando los dos bits de menos peso de
ciertos bytes de la foto por dos bits del mensaje, hasta que se haya ocultado todo el
mensaje. Es decir, para todos los caracteres del mensaje a ocultar, se irán cogiendo de dos
en dos bits, empezando siempre por los de mayor peso, y se irán incrustando como los
dos bits de menos peso en el correspondiente byte de la foto, teniendo en cuenta que:
- los primeros 20 Kb de la foto no se alteran y pasan directamente a
la foto resultante
- Los dos primeros bytes a ocultar, aunque no forman parte,
propiamente hablando, del mensaje, indicarán el nº total de bytes
del mensaje que se va a ocultar
- Para ocultar el mensaje, éste se irá almacenando, carácter a
carácter, de la siguiente forma:
o se toman los dos bits de mayor peso del byte que representa
el carácter y se ponen en lugar de los dos bits de menos
peso del correspondiente byte de la foto.
o el siguiente byte de la foto permanece sin alterar.
o se toman los dos siguientes bits del byte correspondiente al
carácter y se cambian por los dos de menor peso del
siguiente byte de la foto.
o el proceso se repite hasta incrustar todo el carácter.
- Los pasos anteriores hay que aplicarlos a todos los caracteres del
mensaje.
- Los bytes de la foto restantes (los que no se han usado en la
encriptación del mensaje) se copian directamente en la foto
resultante.
En la siguiente figura se muestra gráficamente el proceso
MÉTODO DE OBTENCIÓN DEL MENSAJE
Es el inverso del anterior: se irán obteniendo, de dos en dos, los bits ocultos
según el método anterior y se reconstruirá el mensaje, que se irá almacenando en el
fichero resultante, teniendo en cuenta que el nº de caracteres del mensaje almacenados en
la foto se ha codificado convenientemente y no habrá que extraer más caracteres que los
indicados por éste número.
NORMAS DE PRESENTACIÓN
•
es obligatorio construir la aplicación en base a dos proyectos, uno para
cada ejecutable, compartiendo los dos, al menos, un fichero de cabecera
(.h) y, si es el caso, los ficheros de código (.c) conteniendo la
implementación de las funciones de apoyo que sean convenientes.
•
se podrá utilizar el compilador que el alumno crea oportuno, pero es
obligatorio indicar claramente en la portada de la memoria cuál ha sido
el usado. Independientemente del compilador, será obligatorio entregar los
dos ejecutables. No se admitirá ninguna práctica que le falte algún
ejecutable.
•
se entregará un disquete o cd conteniendo obligatoriamente todos los
ficheros fuente, los ficheros de los proyectos, los ejecutables y un juego de
datos con el que se haya probado el funcionamiento de las aplicaciones.
Asimismo, se podrá entregar la práctica por correo electrónico, dirigido a
jsaenz@eui.upm.es, y adjuntando un fichero .zip o .rar conteniendo todo
lo indicado.
•
Las prácticas se entregarán al profesor en clase o en los despachos de los
profesores de la asignatura (1106 y 1127) en las horas de tutoría que cada
uno tiene establecidas, o por correo electrónico según se ha explicado. LA
FECHA TOPE DE PRESENTACIÓN SERÁ EL DÍA 5 DE
JUNIO
DE 2009 y NO SE RECOGERÁ NINGUNA
PRÁCTICA ENTREGADA CON POSTERIORIDAD A ESA
FECHA
(LAS
ENTREGADAS
POR
CORREO
ELECTRÓNICO CON FECHA POSTERIOR A LAS 23:59
DEL DÍA 5 DE JUNIO NO SE ADMITIRÁN)
•
La práctica se realizará individualmente.
•
Se exige un funcionamiento correcto y se valorará la calidad del código y
de la presentación por pantalla.
•
Las dudas que surjan durante la realización se podrán consultar con los
profesores de la asignatura.
Descargar