|
|
|
|
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
|
-One of the advantages of using computer programs is that we can easily implement repetitive tasks. Structures such as the `for`, `while`, and `do-while` allow us to repeat a block of instructions as many times as needed. These structures are also referred to as *repetition structures*. In today's laboratory experience you will complete a steganography application to practice the use of nested loops and the manipulation of bidimensional arrays.
|
|
|
|
|
9
|
+One of the advantages of using computer programs is that we can easily implement repetitive tasks. Structures such as the `for`, `while`, and `do-while` allow us to repeat a block of instructions as many times as needed. These structures are also referred to as *repetition structures*. In today's laboratory experience, you will complete a steganography application to practice the use of nested loops and the manipulation of bidimensional arrays.
|
10
|
|
10
|
|
11
|
##Objectives:
|
11
|
##Objectives:
|
12
|
|
12
|
|
|
|
|
|
31
|
|
31
|
|
32
|
5. Studied the concepts and instructions related to the laboratory session.
|
32
|
5. Studied the concepts and instructions related to the laboratory session.
|
33
|
|
33
|
|
34
|
-6. Taken the Pre-Lab quiz available in Moodle.
|
|
|
|
|
34
|
+6. Taken the Pre-Lab quiz, available in Moodle.
|
35
|
|
35
|
|
36
|
---
|
36
|
---
|
37
|
|
37
|
|
|
|
|
|
40
|
|
40
|
|
41
|
## Steganography
|
41
|
## Steganography
|
42
|
|
42
|
|
43
|
-Steganography is the science of camouflaging the presence of hidden messages in legitimate carriers (seemingly harmless files). This science has been used by cybercriminals to inflict damage to computer systems and by (old style) terrorists to encode hidden messages transmitted through the internet. There is claim that Al-Qaeda may have used steganography to encode messages into images, and then transport them via e-mail, and possibly via USENET, to prepare and execute the September 11, 2001 terrorist attack.
|
|
|
|
|
43
|
+Steganography is the science of camouflaging the presence of hidden messages in legitimate carriers (seemingly harmless files). This science has been used by cybercriminals to inflict damage to computer systems and by (old style) terrorists to encode hidden messages transmitted through the internet. There is claim that Al-Qaeda may have used steganography to encode messages into images, and then transport them via e-mail, and possibly via USENET, to prepare and execute the September 11, 2001 terrorist attack.
|
44
|
|
44
|
|
45
|
Steganography has some lawful uses too [1]:
|
45
|
Steganography has some lawful uses too [1]:
|
46
|
|
46
|
|
47
|
* A medical imaging laboratory can embed a patient's information into the images, thus preventing against fraud and/or patient misdiagnosis.
|
47
|
* A medical imaging laboratory can embed a patient's information into the images, thus preventing against fraud and/or patient misdiagnosis.
|
48
|
* We can use hidden information to identify the legitimate owner of a document or image. If the document is leaked, or distributed to unauthorized parties, one can trace it back to the rightful owner and perhaps discover which party broke the license distribution agreement.
|
48
|
* We can use hidden information to identify the legitimate owner of a document or image. If the document is leaked, or distributed to unauthorized parties, one can trace it back to the rightful owner and perhaps discover which party broke the license distribution agreement.
|
49
|
|
49
|
|
50
|
-In this laboratory experience you will implement a simple algorithm to extract hidden messages from steganography images.
|
|
|
|
|
50
|
+In this laboratory experience, you will implement a simple algorithm to extract hidden messages from steganography images.
|
51
|
|
51
|
|
52
|
---
|
52
|
---
|
53
|
|
53
|
|
54
|
## Image Editing
|
54
|
## Image Editing
|
55
|
|
55
|
|
56
|
-In this laboratory experience, you will recover secret messages that have been hidden in an image. To be able to carry out your task, you should understand some concepts related to images, be familiar with the methods of the `QImage` class in `Qt`, and with functions to work with data of the `QRgb` type.
|
|
|
|
|
56
|
+In this laboratory experience, you will recover secret messages that have been hidden in an image. To be able to carry out your task, you should understand some concepts related to images, be familiar with the methods of the `QImage` class in `Qt`, and using functions that works with data of type `QRgb`.
|
57
|
|
57
|
|
58
|
### Pixels
|
58
|
### Pixels
|
59
|
|
59
|
|
60
|
-The smallest element in an image is called a *pixel*. This unit consists of a single color. Since each color is a combination of tones for the primary red, green and blue colors, it is coded as an unsigned integer whose bytes represent the tones of red, green and blue of the pixel (Figure 1). This combination is called the color's *RGB* which is an acronym for "Red-Green-Blue". For example, a pure red pixel has an RGB representation of `0x00ff0000`, while a white pixel has an RGB representation of `0x00FFFFFF` (since the color white is a combination of tones of red, green and blue in all of their intensity).
|
|
|
|
|
60
|
+The smallest element in an image is called *pixel*. This unit consists of a single color. Since each color is a combination of tones for the primary red, green and blue colors, it is coded as an unsigned integer whose bytes represent the tones of red, green and blue of the pixel (Figure 1). This combination is called the color's *RGB* which is an acronym for "Red-Green-Blue". For example, a pure red pixel has an RGB representation of `0x00ff0000`, while a white pixel has an RGB representation of `0x00FFFFFF` (since the color white is a combination of tones of red, green and blue in all of their intensity).
|
61
|
|
61
|
|
62
|
---
|
62
|
---
|
63
|
|
63
|
|
|
|
|
|
71
|
|
71
|
|
72
|
### Library
|
72
|
### Library
|
73
|
|
73
|
|
74
|
-In today's laboratory experience you will use the `QImage` class. This class allows you to access the data in the pixels of an image to manipulate it. The documentation for the `QImage` class can be found in http://doc.qt.io/qt-4.8/qimage.html.
|
|
|
|
|
74
|
+In today's laboratory experience, you will use the `QImage` class. This class allows you to access the data in the pixels of an image to manipulate it. The documentation for the `QImage` class can be found in http://doc.qt.io/qt-4.8/qimage.html.
|
75
|
|
75
|
|
76
|
The code provided in the file `steganography.cpp` contains the following objects of the `QImage` class:
|
76
|
The code provided in the file `steganography.cpp` contains the following objects of the `QImage` class:
|
77
|
|
77
|
|
|
|
|
|
247
|
|
247
|
|
248
|
## Laboratory Session
|
248
|
## Laboratory Session
|
249
|
|
249
|
|
250
|
-In today's laboratory experience you will complete a steganography application to extract hidden messages from images.
|
|
|
|
|
250
|
+In today's laboratory experience, you will complete a steganography application to extract hidden messages from images.
|
251
|
|
251
|
|
252
|
### Exercise 1 - Extract the binary message
|
252
|
### Exercise 1 - Extract the binary message
|
253
|
|
253
|
|
254
|
-#### Instructions:
|
|
|
|
|
254
|
+#### Instructions
|
255
|
|
255
|
|
256
|
1. Load the project `Steganography` into `QtCreator`. There are two ways to do this:
|
256
|
1. Load the project `Steganography` into `QtCreator`. There are two ways to do this:
|
257
|
|
257
|
|
|
|
|
|
264
|
|
264
|
|
265
|
![img1.png](images/img1.png)
|
265
|
![img1.png](images/img1.png)
|
266
|
|
266
|
|
267
|
-3. The button `Load Image` has already been programmed to allow the user to load an image and display it. Your task is to program the functionality of the button `Retrieve Message` to analyze the image and extract the hidden message. The hidden message should be displayed in the `Write a message` window.
|
|
|
|
|
267
|
+3. The button `Load Image` has already been programmed to allow the user to load an image and display it. Your task is to program the functionality of the button `Retrieve Message` so that it analyzes the image and extracts the hidden message. The hidden message should be displayed in the `Write a message` window.
|
268
|
|
268
|
|
269
|
4. You will be working with the `steganography.cpp` file. Complete the `ExtractMessage` function that receives a steganography image so it extracts the digits of the binary message encoded in the image and stores them in a string. The function should invoke another function `binaryStringToMessage` that converts the string from `0`'s and `1`'s in the message's characters and returns the hidden message.
|
269
|
4. You will be working with the `steganography.cpp` file. Complete the `ExtractMessage` function that receives a steganography image so it extracts the digits of the binary message encoded in the image and stores them in a string. The function should invoke another function `binaryStringToMessage` that converts the string from `0`'s and `1`'s in the message's characters and returns the hidden message.
|
270
|
|
270
|
|
|
|
|
|
285
|
|
285
|
|
286
|
### Exercise 2 - Interpreting the message
|
286
|
### Exercise 2 - Interpreting the message
|
287
|
|
287
|
|
288
|
-
|
|
|
289
|
-#### Instructions:
|
|
|
|
|
288
|
+#### Instructions
|
290
|
|
289
|
|
291
|
1. Complete the `binaryStringToMessage` function that receives the string of `0`'s and `1`'s extracted from the image so it returns the hidden message. You can use the `binStringToChar` function to convert substrings of 8 `0`'s and `1`'s in its corresponding character.
|
290
|
1. Complete the `binaryStringToMessage` function that receives the string of `0`'s and `1`'s extracted from the image so it returns the hidden message. You can use the `binStringToChar` function to convert substrings of 8 `0`'s and `1`'s in its corresponding character.
|
292
|
|
291
|
|
|
|
|
|
308
|
|
307
|
|
309
|
##Deliverables
|
308
|
##Deliverables
|
310
|
|
309
|
|
311
|
-Use "Deliverable" in Moodle to upload the `steganography.cpp` file that contains the `ExtractMessage` and `binaryStringToMessage` functions. Remember to use good programming techniques, include the names of the programmers involved, and to document your program.
|
|
|
|
|
310
|
+Use "Deliverable" in Moodle to upload the `steganography.cpp` file that contains the `ExtractMessage` and `binaryStringToMessage` functions. Remember to use good programming techniques, include the names of the programmers involved, and document your program.
|
312
|
|
311
|
|
313
|
---
|
312
|
---
|
314
|
|
313
|
|
|
|
|
|
318
|
##References
|
317
|
##References
|
319
|
|
318
|
|
320
|
[1] Rocha, Anderson, and Siome Goldenstein. "Steganography and steganalysis in digital multimedia: Hype or hallelujah?." Revista de Informática Teórica e Aplicada 15.1 (2008): 83-110.
|
319
|
[1] Rocha, Anderson, and Siome Goldenstein. "Steganography and steganalysis in digital multimedia: Hype or hallelujah?." Revista de Informática Teórica e Aplicada 15.1 (2008): 83-110.
|
|
|
320
|
+
|
|
|
321
|
+
|
|
|
322
|
+
|