Substituição de Bits em arquivo [RESOLVIDO]

5 respostas
L

Bom dia.

Estou fazendo um trabalho para a faculdade e manipulando arquivos do formato .WAV
Eu consigo abrir o arquivo e obter os bits. No caso eu consigo, por exemplo, fazer um output em txt imprimindo os valores, porém estou com uma dificuldade para fazer o seguinte:
Como o byte do áudio é composto por 7 bits, preciso substituir o último bit e apenas ele.
Quando faço isso, a alteração de qualquer bit e reescrevo ele para .WAV, o arquivo está corrompido e não funciona mais.
Gostaria de saber como posso fazer a alteração de forma a não estragar o arquivo. Tem alguma biblioteca que pode me ajudar neste tipo de manipulação?

Obrigado.


Informação adicional:

Seria como fazer a alteração via um editor de HEX, por exemplo.

Obrigado novamente

5 Respostas

ViniGodoy

Não deveria ser um problema, a menos que você altere o cabeçalho do wav. Esse você deve deixar intocado.

Para alterar os bits, simplesmente leia os bytes numa variável qualquer e use os operadores bitwise.
Você pode fazer um & com 0xFE se quiser garantir que o último bit esteja zerado, ou um | com 0x01 se quiser garantir que o último bit de um byte valha 1.

ViniGodoy

Se quiser ver um exemplo de manipulação de bits interessante, veja esse exemplo de esteganografia em imagens:

L

É exatamente para esteganografia que quero, mas pra esteganografia em som.

Valeu. Vou dar uma estudada no link que passou.

Abraço

ViniGodoy

Não é muito diferente. Você provavelmente só está errando pois o wav contém um cabeçalho, e você deve estar mexendo nesse cabeçalho. Dê uma olhada na especificação do formato. O legal é que qualquer arquivinho de áudio de poucos segundos já poderá esconder um monte de informações, principalmente se for estereo (5.1 nem se fala).

L

Obrigado, consegui fazer uma implementação para alterar os bits, agora só melhorar e criar interface pra apresentar. (TCC hehehe)
Valeu

Abraço

Criado 8 de outubro de 2011
Ultima resposta 12 de out. de 2011
Respostas 5
Participantes 2