Browse Source

README-es.md edited online with Bitbucket

Jose R Ortiz Ubarri 8 years ago
parent
commit
ff00d1b31d
1 changed files with 21 additions and 21 deletions
  1. 21
    21
      README-es.md

+ 21
- 21
README-es.md View File

4
 ![main2.png](images/main2.png)
4
 ![main2.png](images/main2.png)
5
 ![main3.png](images/main3.png)
5
 ![main3.png](images/main3.png)
6
 
6
 
7
-[Verano 2016 - Ive]
7
+[Verano 2016 - Ive - Tatiana]
8
 
8
 
9
-Una de las ventajas de utilizar programas de computadoras es que podemos realizar tareas repetitivas fácilmente. Los ciclos como `for`, `while`, y `do-while` son estructuras de control que nos permiten repetir un conjunto de instrucciones. A estas estructuras también se les llama *estructuras de repetición*.  En la experiencia de laboratorio de hoy completarás una aplicación de esteganografía para practicar el uso de ciclos anidados en la manipulación de arreglos bi-dimensionales.
9
+Una de las ventajas de utilizar programas de computadoras es que podemos realizar tareas repetitivas fácilmente. Los ciclos como `for`, `while`, y `do-while` son estructuras de control que nos permiten repetir un conjunto de instrucciones. A estas estructuras también se les llama *estructuras de repetición*.  En la experiencia de laboratorio de hoy, completarás una aplicación de esteganografía para practicar el uso de ciclos anidados en la manipulación de arreglos bi-dimensionales.
10
 
10
 
11
 
11
 
12
 ## Objetivos:
12
 ## Objetivos:
22
 
22
 
23
 Antes de llegar al laboratorio debes haber:
23
 Antes de llegar al laboratorio debes haber:
24
 
24
 
25
-
26
 1. Repasado los conceptos básicos relacionados a estructuras de repetición, arreglos bi-dimensionales y estructuras de control.
25
 1. Repasado los conceptos básicos relacionados a estructuras de repetición, arreglos bi-dimensionales y estructuras de control.
27
 
26
 
28
-2. Estudiado los conceptos de componentes de color de los pixeles de imágenes.
27
+2. Estudiado los conceptos de componentes de color de los píxeles de imágenes.
29
 
28
 
30
 3. Estudiado la representación binaria de caracteres.
29
 3. Estudiado la representación binaria de caracteres.
31
 
30
 
33
 
32
 
34
 5. Estudiado los conceptos e instrucciones de la sesión de laboratorio.
33
 5. Estudiado los conceptos e instrucciones de la sesión de laboratorio.
35
 
34
 
36
-6. Tomado el quiz Pre-Lab que se encuentra en Moodle.
35
+6. Tomado el quiz Pre-Lab, disponible en Moodle.
37
 
36
 
38
 ---
37
 ---
39
 
38
 
43
 
42
 
44
 ## Esteganografía
43
 ## Esteganografía
45
 
44
 
46
-La esteganografía es la ciencia de camuflar la presencia de mensajes ocultos en portadores legítimos (archivos que parecen inofensivos). Esta ciencia ha sido utilizada por delincuentes cibernéticos para ocasionar daños a sistemas de computadoras, y por terroristas para codificar mensajes ocultos en transmisiones de internet. Se dice que Al-Qaeda puede haber utilizado esteganografía para codificar mensajes en imágenes y luego transportarlos por correo electrónico, y posiblemente por USENET, para preparar y ejecutar los ataques terroristas del 11 de septiembre de 2001.
45
+La esteganografía es la ciencia de camuflar la presencia de mensajes ocultos en portadores legítimos (archivos que parecen inofensivos). Esta ciencia ha sido utilizada por delincuentes cibernéticos para ocasionar daños a sistemas de computadoras, y por terroristas para codificar mensajes ocultos en transmisiones de internet. Se dice que Al-Qaeda puede haber utilizado la esteganografía para codificar mensajes en imágenes y luego transportarlos por correo electrónico, posiblemente por USENET, para preparar y ejecutar los ataques terroristas del 11 de septiembre de 2001.
47
 
46
 
48
 La esteganografía también tiene algunos usos legales [1]:
47
 La esteganografía también tiene algunos usos legales [1]:
49
 
48
 
50
 * Un laboratorio de imágenes médicas puede empotrar información del paciente en las imágenes y así prevenir fraude y/o errores en los diagnósticos del paciente.
49
 * Un laboratorio de imágenes médicas puede empotrar información del paciente en las imágenes y así prevenir fraude y/o errores en los diagnósticos del paciente.
51
-* Podemos usar información oculta para identificar los dueños legítimos de un documento o imagen. Si el documento se filtra o se distribuye sin autorización, se puede trazar su origen hasta el dueño legítimo y quizás descubrir quién rompió el acuerdo de distribución.
50
+* Podemos usar información oculta para identificar los dueños legítimos de un documento o una imagen. Si el documento se filtra o se distribuye sin autorización, se puede trazar su origen hasta el dueño legítimo y quizás descubrir quién rompió el acuerdo de distribución.
52
 
51
 
53
-En esta experiencia de laboratorio implementarás un algoritmo simple para extraer mensajes ocultos en imágenes usando técnicas de esteganografía.
52
+En esta experiencia de laboratorio, implementarás un algoritmo simple para extraer mensajes ocultos en imágenes usando técnicas de esteganografía.
54
 
53
 
55
 ---
54
 ---
56
 
55
 
61
 
60
 
62
 ### Píxeles
61
 ### Píxeles
63
 
62
 
64
-Al elemento más pequeño de una imagen se le llama un *píxel*. Esta unidad consiste de un solo color. Como cada color es una combinación de tonalidades de los colores primarios rojo, verde y azul,   se codifica como un entero sin signo cuyos bytes  representan los tonos de rojo, verde y azul del pixel  (Figura 1). A esta combinación se le llama el *RGB* del color por las siglas de "Red-Green-Blue". Por ejemplo, un píxel de color rojo (puro) tiene una representación RGB `0x00ff0000`, mientras que un píxel de color blanco tiene una representación RGB de `0x00FFFFFF` (ya que el color blanco es la combinación de los tonos rojo, verde y azul en toda su intensidad).
63
+Al elemento más pequeño de una imagen se le llama *píxel*. Esta unidad consiste de un solo color. Como cada color es una combinación de tonalidades de los colores primarios rojo, verde y azul, se codifica como un entero sin signo cuyos bytes representan los tonos de rojo, verde y azul del píxel  (Figura 1). A esta combinación se le llama el *RGB* del color por las siglas de "Red-Green-Blue". Por ejemplo, un píxel de color rojo (puro) tiene una representación RGB `0x00ff0000`, mientras que un píxel de color blanco tiene una representación RGB de `0x00FFFFFF` (ya que el color blanco es la combinación de los tonos rojo, verde y azul en toda su intensidad).
65
 
64
 
66
 ---
65
 ---
67
 
66
 
75
 
74
 
76
 ### Biblioteca
75
 ### Biblioteca
77
 
76
 
78
-La experiencia de laboratorio de hoy utilizará la clase `QImage`. Esta clase permite acceder a los datos de los pixeles de una imagen para poder manipularla. La documentación de la clase `QImage` se encuentra en http://doc.qt.io/qt-4.8/qimage.html.
77
+La experiencia de laboratorio de hoy utilizará la clase `QImage`. Esta clase permite acceder a los datos de los píxeles de una imagen para poder manipularla. La documentación de la clase `QImage` se encuentra en http://doc.qt.io/qt-4.8/qimage.html.
79
 
78
 
80
 El código que te proveemos en el archivo `steganography.cpp` contiene los siguiente objetos de la clase `QImage`:
79
 El código que te proveemos en el archivo `steganography.cpp` contiene los siguiente objetos de la clase `QImage`:
81
 
80
 
109
     `int greenContent = qGreen(origImage.pixel(1,1));`.
108
     `int greenContent = qGreen(origImage.pixel(1,1));`.
110
 
109
 
111
 
110
 
112
-3. El siguiente programa crea un objeto de clase `QImage` e imprime los componentes rojo, verde y azul del pixel en el centro de la imagen. La imagen utilizada es la que se especifica dentro del paréntesis durante la creación del objeto, esto es, el archivo `chuck.png`.
111
+3. El siguiente programa crea un objeto de clase `QImage` e imprime los componentes rojo, verde y azul del píxel en el centro de la imagen. La imagen utilizada es la que se especifica dentro del paréntesis durante la creación del objeto, esto es, el archivo `chuck.png`.
113
 
112
 
114
         #include <QImage>
113
         #include <QImage>
115
         #include <iostream>
114
         #include <iostream>
123
 
122
 
124
            cout << hex;
123
            cout << hex;
125
 
124
 
126
-           cout << “Los componentes rojo, verde y azul del pixel central son: “
125
+           cout << “Los componentes rojo, verde y azul del píxel central son: “
127
                 << qRed(centralPixel) << “, “
126
                 << qRed(centralPixel) << “, “
128
                 << qGreen(centralPixel) << “, “
127
                 << qGreen(centralPixel) << “, “
129
                 << qBlue(centralPixel) << endl;
128
                 << qBlue(centralPixel) << endl;
135
 
134
 
136
 Uno de los métodos más simples para esconder un mensaje en una imagen es codificando el mensaje en los bits menos significativos de los componentes de los colores de los píxeles de la imagen. Este método esconde el mensaje en la imagen eficientemente porque el efecto al cambiar el bit menos significativo en un color de 8 bits es casi imperceptible para el ojo humano.
135
 Uno de los métodos más simples para esconder un mensaje en una imagen es codificando el mensaje en los bits menos significativos de los componentes de los colores de los píxeles de la imagen. Este método esconde el mensaje en la imagen eficientemente porque el efecto al cambiar el bit menos significativo en un color de 8 bits es casi imperceptible para el ojo humano.
137
 
136
 
138
-Por ejemplo, la Figura 2 muestra dos píxeles gigantes, el de la izquierda  es de color `0xff0000`y el de la derecha es de color `0xfe0101`. Recuerda que el **byte** más significativo (esto es, los dos dígitos hexadecimales más a la izquierda) representan la intensidad del color rojo, el segundo **byte** representa la intensidad del color verde, y el **byte** menos significativo representa la intensidad del color azul. En la Figura 2, los **bits** menos significativos de los componentes rojo, verde y azul de los dos píxeles son diferentes, sin embargo, ambos píxeles se ven del mismo color. El píxel de la derecha es el resultado de codificar el mensaje de tres bits `011` en los bits menos significativos de cada color en el píxel original. Esto es, codificar el `0` en el bit menos significativo del componente rojo, codificar el `1` en el bit menos significativo del componente verde, y  codificar el `1` en el bit menos significativo del componente azul del píxel.
137
+Por ejemplo, la Figura 2 muestra dos píxeles gigantes, el de la izquierda es de color `0xff0000` y el de la derecha es de color `0xfe0101`. Recuerda que el **byte** más significativo (esto es, los dos dígitos hexadecimales más a la izquierda) representan la intensidad del color rojo, el segundo **byte** representa la intensidad del color verde, y el **byte** menos significativo representa la intensidad del color azul. En la Figura 2, los **bits** menos significativos de los componentes rojo, verde y azul de los dos píxeles son diferentes, sin embargo, ambos píxeles se ven del mismo color. El píxel de la derecha es el resultado de codificar el mensaje de tres bits `011` en los bits menos significativos de cada color en el píxel original. Esto es, codificar el `0` en el bit menos significativo del componente rojo, codificar el `1` en el bit menos significativo del componente verde, y  codificar el `1` en el bit menos significativo del componente azul del píxel.
139
 
138
 
140
 ---
139
 ---
141
 
140
 
245
 
244
 
246
 ## Sesión de laboratorio:
245
 ## Sesión de laboratorio:
247
 
246
 
248
-En la experiencia de laboratorio de hoy completarás una aplicación de esteganografía para extraer mensajes ocultos en imágenes.
247
+En la experiencia de laboratorio de hoy, completarás una aplicación de esteganografía para extraer mensajes ocultos en imágenes.
249
 
248
 
250
 ### Ejercicio 1 - Extraer el mensaje binario
249
 ### Ejercicio 1 - Extraer el mensaje binario
251
 
250
 
252
-#### Instrucciones:
253
-
251
+#### Instrucciones
254
 
252
 
255
 1. Carga a `QtCreator` el proyecto `Steganography`. Hay dos maneras de hacer esto:
253
 1. Carga a `QtCreator` el proyecto `Steganography`. Hay dos maneras de hacer esto:
256
 
254
 
259
 
257
 
260
      El proyecto contiene el esqueleto de una aplicación para recuperar mensajes empotrados en imágenes. Los mensajes que estarás recobrando se empotraron utilizando la técnica del bit menos significativo. El final de cada mensaje se codificó utilizando el caracter ASCII con código binario `00000000`.
258
      El proyecto contiene el esqueleto de una aplicación para recuperar mensajes empotrados en imágenes. Los mensajes que estarás recobrando se empotraron utilizando la técnica del bit menos significativo. El final de cada mensaje se codificó utilizando el caracter ASCII con código binario `00000000`.
261
 
259
 
262
-2. Compila y corre el programa. Debes obtener una interface que luce parecida a:
260
+2. Compila y corre el programa. Debes obtener una interfaz que luce parecida a:
263
 
261
 
264
      ![img1.png](images/img1.png)
262
      ![img1.png](images/img1.png)
265
 
263
 
277
       Nota que tu algoritmo debe tener algún mecanismo para detectar si el último bloque de 8 caracteres extraídos eran todos `0`. Cuando esto pase, el algoritmo debe parar de leer los píxeles.
275
       Nota que tu algoritmo debe tener algún mecanismo para detectar si el último bloque de 8 caracteres extraídos eran todos `0`. Cuando esto pase, el algoritmo debe parar de leer los píxeles.
278
 
276
 
279
       
277
       
280
-      El "string" de dígitos binarios debe ser enviado a otra función `binaryStringToMessage` (ver Ejercicio 2) que interprete los `0`'s  y `1`'s como los bits de caracteres ASCII. En el ejemplo, si pasaras  el argumento `”010001000110111101100111000000000”` a la función  `binaryStringToMessage`, debería devolver "Dog" (porque `01000100` corresponde a `D`, `01101111` es 'o',  `01100111` es 'g', y un `00000000` simboliza que se terminó el “string”.)
278
+      El "string" de dígitos binarios debe ser enviado a otra función `binaryStringToMessage` (ver Ejercicio 2) que interprete los `0`'s  y `1`'s como los bits de caracteres ASCII. En el ejemplo de arriba, si pasaras el argumento `”010001000110111101100111000000000”` a la función  `binaryStringToMessage`, debería devolver "Dog" (porque `01000100` corresponde a `D`, `01101111` es 'o',  `01100111` es 'g', y un `00000000` simboliza que se terminó el “string”.)
281
 
279
 
282
 
280
 
283
       Para poder implementar el algoritmo de extracción del mensaje, debes entender cómo fue empotrado el mensaje. Si es necesario, repasa la sección “Empotrando un mensaje en una imagen”.
281
       Para poder implementar el algoritmo de extracción del mensaje, debes entender cómo fue empotrado el mensaje. Si es necesario, repasa la sección “Empotrando un mensaje en una imagen”.
285
 
283
 
286
 ### Ejercicio 2 - Interpretar el mensaje
284
 ### Ejercicio 2 - Interpretar el mensaje
287
 
285
 
288
-#### Instrucciones:
286
+#### Instrucciones
289
 
287
 
290
 
288
 
291
-1. Completa la función `binaryStringToMessage` que recibe el "string" de `0`'s y `1`'s extraido de la imagen para que devuelva el mensaje oculto. Puedes aprovechar la función `binStringToChar` para convertir "substrings" de 8 `0`'s y `1`'s en el caracter que le corresponde.
289
+1. Completa la función `binaryStringToMessage` que recibe el "string" de `0`'s y `1`'s extraidos de la imagen para que devuelva el mensaje oculto. Puedes aprovechar la función `binStringToChar` para convertir "substrings" de 8 `0`'s y `1`'s en el caracter que le corresponde.
292
 
290
 
293
 2. Prueba tu código usando las siguientes imágenes
291
 2. Prueba tu código usando las siguientes imágenes
294
 
292
 
308
 
306
 
309
 ##Entrega
307
 ##Entrega
310
 
308
 
311
-Utiliza "Entrega" en Moodle para entregar el archivo `steganography.cpp` que contiene las funciones `ExtractMessage` y `binaryStringToMessage`. Recuerda utilizar buenas prácticas de programación, incluir el nombre de los programadores y documentar tu programa.
309
+Utiliza "Entrega" en Moodle para entregar el archivo `steganography.cpp` que contiene las funciones `ExtractMessage` y `binaryStringToMessage`. Recuerda utilizar buenas prácticas de programación, incluye el nombre de los programadores y documenta tu programa.
312
 
310
 
313
 
311
 
314
 ---
312
 ---
325
 ---
323
 ---
326
 
324
 
327
 ---
325
 ---
326
+
327
+