PODERIAM ME AJUDAR?

DRAYTON 11/11/2012 14:14:07
#413999
Pessoal, boa tarde!

Estou desenvolvendo um trabalho para a faculdade onde leio os bits de uma imagem e através da técnica LSB (Least significant bit) oculto uma mensagem ou palavra desejada pelo usuario.

Os passos para a ocultação consegui fazer com êxito, cito alguns passos utilizados abaixo:

- leio a mensagem a ser oculta e a transformo em binario;
- leio os bits da imagem escolhida pelo usuario através de um laço de repetição onde consigo os valores de RGB.
- Com esses valores lidos e armazenados em uma matriz faço a conversão para binário
- Pego os valores binários do texto lido e altero o ultimo bit de RGB para o valor correspondente do texto.
- Remonto a imagem com esses valores já com a mensagem oculta.

Ex:

Suponham que queira esconder a palavra [Ô]MARIA[Ô]... Maria em binário = 0100110101100001011100100110100101100001


A imagem escolhida pelo usuario, um bmp de 100X100 tem os seguintes valores:

R G B

168 140 120
163 140 115
160 140 112

. . .
. . .
. . .

Convertidos para binário:


10101000 10001100 01111000
10100011 10001100 01110011
10100000 10001100 01110000

. . .
. . .
. . .

Inicio a alteração do bit menos significativo, o ultimo, para os valores do texto lido:



168 EM binário = 10101000; alterando o ultimo bit para 0 (primeiro da palavra MARIA) = 10101000
140 EM binário = 10001100; alterando o ultimo bit para 1 (segundo da palavra MARIA) = 10001101
120 EM binário = 01111000; alterando o ultimo bit para 0 (terceiro da palavra MARIA) = 01111000
163 EM binário = 10100011; alterando o ultimo bit para 0 (quarto da palavra MARIA) = 10100010
140 EM binário = 10001100; alterando o ultimo bit para 1 (quinto da palavra MARIA) = 10001101
115 EM binário = 01110011; alterando o ultimo bit para 1 (sexto da palavra MARIA) = 01110011
160 EM binário = 10100000; alterando o ultimo bit para 0 (setimo da palavra MARIA) = 10100000
140 EM binário = 10001100; alterando o ultimo bit para 1 (oitavo da palavra MARIA) = 10001101
112 EM binário = 01110000; alterando o ultimo bit para 0 (nono da palavra MARIA) = 01110000

e assim sucessivamente...


A rotina de ocultação consegui realizar, porém a de descobrir, revelar qual palavra foi oculta não consigo e peço a ajuda de vocês.

O que está tornando dificil a resolução, é que quando leio esses valores de volta e pego o ultimo bit

RGB
ex: 010
011
010 <<

ele está levando um digito a mais, ou seja o 0, ficando com 9 digitos e não 8 o que deveria ser o correto. Sei que devo fazer a leitura até o número 1 do 010 e esse 0 que ele leva a mais, devo fazer com que seja o primeiro digito da proxima letra, que no caso seria o A de (MA)RIA e assim sucessivamente, mas não consegui uma rotina de solução. Por favor, alguém poderia me ajudar?
F001E 16/11/2012 10:48:16
#414321
pq vc nao tenta forçar um tamanho máximo para leitura...tipo um Mid([Ô]aa[Ô],1,8) assim sempre vai parar na 8º posição, dai para começar a leitura do próximo voce faz o primeiro digito + o ultimo digito 1 + 8 = 9, ficando Mid([Ô]aa[Ô],9,8) e assim sucessivamente
Tópico encerrado , respostas não são mais permitidas