Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Trabalho 2

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 4

Universidade Federal de Alfenas - UNIFAL-MG

Bacharelado em Ciência da Computação


Prof. Luiz Eduardo da Silva

Trabalho de Processamento de Imagens


Atividade 2 - Esteganografia

Objetivo
O objetivo desse atividade é explorar os conceitos de cores e de codificação e decodificação
utilizados nos formatos de imagens.

Problema
O termo esteganografia1 deriva da junção das palavras gregas estegano que significa “es-
conder ou mascarar”, e grafia, que significa “escrita”. Portanto, esteganografia pode ser compre-
endida como a arte de esconder informações, tornando-as ocultas, assim como a criptografia. O
objetivo desta técnica é que esses dados não sejam percebidos por terceiros; ou seja, a presença
de mensagens escondidas dentro de arquivos é simplesmente desconhecida. Somente o receptor
da mensagem tem conhecimento de sua existência, assim como da maneira como extraı́-la.
Apesar de parecer, a esteganografia e a criptografia são duas áreas com objetivos bastante
diferentes. Enquanto o segundo tem o propósito de impedir que as pessoas saibam o conteúdo
de uma mensagem, o primeiro se baseia em evitar que as pessoas saibam que a mensagem
escondida existe. Ou seja, na criptografia, os receptores sabem da existência das mensagens,
porém não conseguem, a princı́pio, lê-las; a esteganografia tenta fazer com que os receptores
não percebam que há uma mensagem naquele meio (imagem, texto, etc.).
Existem várias formas de esconder mensagens ou arquivos em imagens. Uma das técnicas
possı́veis é modificar alguns bits (menos relevantes) dos pixels da imagem, com as informações
que se quer esconder. Por exemplo, a modificação do bit menos significativo de uma banda
(red) de um pixel de uma imagem colorida não é perceptı́vel ao olho humano. A esteganoanálise
dessa modificação, no entanto, não é difı́cil de se realizar a partir da comparação do arquivo
original e do arquivo modificado. O ruı́do, calculado como a diferença desses dois arquivos é a
mensagem codificada.
O objetivo desse trabalho é completar o código disponı́vel nesta atividade para realizar a
decodificação de um arquivo que foi esteganografado na imagem.

Descrição
1. Um arquivo está escondido na imagem .PPM. O arquivo escondido está codificado nos
pixels da imagem da seguinte forma:

ˆ o binário dos códigos ASCII do nome original do arquivo (finalizado pelo caracter
zero)
ˆ o binário do tamanho do arquivo (em quatro bytes)
ˆ e os bytes do arquivo.
1
https://www.gta.ufrj.br/grad/09 1/versao-final/stegano/introducao.html

1
2. Os bits (zero ou um) das representações binárias estão armazenados, modificando as
bandas R,G e B dos pixels em sequência. Por exemplo, considerando a imagem colorida:
r1 g1 b1 r2 g2 b2 r3 g3 b3 r4 g4 b4 r5 g5 b5 r6 g6 b6
r7 g7 b7 r8 g8 b8 r9 g9 b9 r10 g10 b10 r11 g11 b11 r12 g12 b12
Seja ’A’, a primeira letra do nome do arquivo (cujo código ASCII binário é 01000001).
Na codificação do arquivo, a letra ’A’ modifica as seguintes bandas dos pixels iniciais
(identificados em letras maiúsculas e com cores).
R1 g1 b1 r2 G2 b2 r3 g3 B3 R4 g4 b4 r5 G5 b5 r6 g6 B6
R7 g7 b7 r8 G8 b8 r9 g9 b9 r10 g10 b10 r11 g11 b11 r12 g12 b12
Onde:
ˆ R1 = r1 & 0xF E, codifica o bit zero (0)
ˆ G2 = g2 | 0x01, codifica o bit um (1)
ˆ B3 = b3 & 0xF E, codifica o bit zero (0)
ˆ R4 = r4 & 0xF E, codifica o bit zero (0)
ˆ G5 = g5 & 0xF E, codifica o bit zero (0)
ˆ B6 = b6 & 0xF E, codifica o bit zero (0)
ˆ R7 = r7 & 0xF E, codifica o bit zero (0)
ˆ G8 = g8 | 0x01, codifica o bita um (1)
3. A operação R1 = r1 & 0xF E, que executa um e-bit-a-bit com a máscara 0xF E, tem o
efeito de transformar o último bit da banda R para zero.
4. De forma simétrica, a operação G2 = g2 | 0x01 , que executa um ou-bit-a-bit com a
máscara 0x01, tem o efeito de transformar o último bit da banda G para um e assim
sucessivamente.
5. Depois da codificação do nome do arquivo, os quatro bytes seguintes definem a quantidade
de bytes do arquivo, e dessa forma, a quantidade de pixels que estão modificados no
restante da imagem.
Exemplo
Arquivo original:
1 P3
2 #C r e a t e d w i t h GIMP
3 10 10
4 255
5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7 0 0 0 140 26 26 197 40 40 197 40 40 140 26 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8 0 0 0 197 40 40 209 43 43 209 43 43 197 40 40 40 140 26 59 197 40 59 197 40 40 140 26 0 0 0
9 0 0 0 197 40 40 209 43 43 166 53 144 85 61 197 61 197 85 63 209 43 63 209 43 59 197 40 0 0 0
10 0 0 0 140 26 26 197 40 40 85 61 197 43 63 209 61 198 90 63 209 43 63 209 43 59 197 40 0 0 0
11 0 0 0 0 0 0 0 0 0 40 59 197 43 63 209 53 147 166 61 197 85 59 197 40 40 140 26 0 0 0
12 0 0 0 0 0 0 0 0 0 26 40 140 40 59 197 40 59 197 26 40 140 0 0 0 0 0 0 0 0 0
13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Arquivo modificado:
1 P3
2 = =
# CREATOR: Image P r o c e s s i n g u s i n g C A n s i ByDu
3 #
4 10 10
5 255
6 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
7 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0
8 0 0 0 141 26 26 197 40 40 197 40 40 140 26 26 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0
9 0 0 0 197 40 40 209 43 42 209 43 43 197 41 40 40 140 27 58 197 40 59 197 40 40 140 26 0 0 0
10 0 0 0 197 40 40 208 43 43 166 52 144 85 61 196 60 197 85 63 208 43 63 209 42 58 197 40 0 0 0
11 0 0 0 140 26 26 197 40 40 85 61 196 42 63 209 61 198 90 63 209 42 62 209 43 59 196 40 0 0 0
12 0 0 0 0 0 0 0 0 0 40 59 197 43 62 209 53 147 166 60 197 85 59 196 40 40 140 26 0 0 0
13 0 0 0 0 0 0 0 0 0 26 40 140 40 59 196 40 59 197 26 40 140 0 0 0 1 0 0 0 0 0
14 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
15 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

2
Para incluir o arquivo de nome ’A.txt’, com os seguintes 2 bytes:
1 42

Cuja codificação (nome, tamanho e os bytes) em binário é:


1 A( 4 1 ) 01000001 . ( 2 E) 00101110
2 t ( 7 4 ) 01110100 x ( 7 8 ) 01111000 t ( 7 4 ) 01110100 ( 0 ) 00000000 // nome
3 ( 0 ) 00000000 ( 0 ) 00000000 ( 0 ) 00000000 ( 2 ) 00000010 // tamanho
4 4 ( 3 4 ) 00110100 2 ( 3 2 ) 00110010 // b y t e s

6. Pode-se observar ainda que, considerando esse esquema de codificação, para que um ar-
quivo possa ser escondido numa imagem, o número de pixels da imagem deve ser suficiente
para a codificação do arquivo. Sejam:

ˆ TN (Tamanho do Nome) = o número de letras do nome do arquivo somado de um


(caracter zero no fim do nome);
ˆ TA (Tamanho do arquivo) = quatro bytes usados para codificar o tamanho do ar-
quivo;
ˆ NB (Número de bytes) = número de bytes do arquivo a ser ocultado;
ˆ nlinhas = número de linhas da imagem;
ˆ ncolunas = número de colunas da imagem.

Assim, o arquivo só pode ser esteganografado na imagem se:

8 × (T N + T A + N A) ≤ nlinhas × ncolunas

7. No exemplo anterior, TN = 6, TA = 4, NB = 2, o que soma 12 * 8 pixels que foram


afetados, ou seja, 96 pixels da imagem com 100 pixels (10 linhas e 10 colunas) foram
modificados para codificar o arquivo.

8. Considerando esse esquema de codificação do arquivo na imagem, a sua tarefa é desenvol-


ver o decodificador. O código a ser completado está disponı́vel junto com a atividade.
Este programa deve receber o nome do arquivo da imagem, extrair e gerar (em disco) o
arquivo que está escondido.

Entrega
1. Incluir um comentário no cabeçalho de cada programa fonte com o seguinte formato:
1 /*=============================================================
2 * UNIFAL = U n i v e r s i d a d e F e d e r a l de A l f e n a s .
3 * BACHARELADO EM CIENCIA DA COMPUTACAO.
4 * Trabalho . . : E s t e g a n o g r a f i a
5 * D i s c i p l i n a : Processamento de Imagens
6 * P r o f e s s o r . : L ui z Eduardo da S i l v a
7 * Aluno . . . . . : Fulano da S i l v a
8 * Data . . . . . . : 99/99/9999
9 *=============================================================*/

2. O projeto deverá incluir um arquivo MAKEFILE para construção da ferramenta de deco-


dificação do arquivo que está esteganografado (Já disponı́vel nos arquivos da atividade)

3
3. O programa deverá ser chamado em linha de comando da seguinte forma:
1 . / decode <nome=a r q u i v o =imagem > [ .ppm ]
2
3 por exemplo :
4 . / decode p o r t o

4. O programa deverá gerar o arquivo que está codificado na imagem, na mesma pasta onde
o decodificador for executado.

Você também pode gostar