Lendo o arquivo BMP para Steganografia
Pergunta
Estou tentando ler um arquivo BMP em C ++ (Turbo). Mas não consigo imprimir fluxo binário.
Eu quero codificar o arquivo txt nele e descriptografá -lo. Como posso fazer isso. Eu li que o cabeçalho do arquivo BMP é de 54 byte. Mas como e onde devo anexar o arquivo txt no arquivo BMP. ?
Conheço apenas turbo C ++, por isso seria útil para mim se você fornecer solução ou sugestão relacionada ao tópico para o mesmo.
int main()
{
ifstream fr; //reads
ofstream fw; // wrrites to file
char c;
int random;
clrscr();
char file[2][100]={"s.bmp","s.txt"};
fr.open(file[0],ios::binary);//file name, mode of open, here input mode i.e. read only
if(!fr)
cout<<"File can not be opened.";
fw.open(file[1],ios::app);//file will be appended
if(!fw)
cout<<"File can not be opened";
while(!fr)
cout<<fr.get(); // error should be here. but not able to find out what error is it
fr.close();
fw.close();
getch();
}
Este código está funcionando bem quando passo o arquivo txt no modo binário
Editar:
while(!fr)
cout<<fr.get();
Não consigo ver dados binários no console, isso estava funcionando bem para o texto quando eu estava passando pelo parâmetro de caractere em Fr.get (c)
Solução
Eu acho que sua pergunta já foi respondida:Imprima um int em representação binária usando C
Converta seu char em um INT e você terminou (pelo menos para a parte de saída)
Outras dicas
Com a Steganografia, o pouco que sei sobre isso, você não está "anexando" texto. Você está fazendo mudanças sutis nos pixels (sombreamento, etc.) para ocultar algo que não é visualmente óbvio, mas deve ser capaz de ser descrito reverso examinando os pixels. Não deve ter nada a ver com o cabeçalho. De qualquer forma, o objetivo da minha resposta que não é de isso é incentivá-lo e aprender sobre o tópico que você busca respostas, para que você possa projetar sua solução e depois pedir detalhes sobre a implementação.
Você precisa modificar o padrão de bits, não anexar nenhum texto ao arquivo. Um exemplo simples: leia o conteúdo do bitmap (após o cabeçalho) e sacrifique um pouco de cada byte para manter seu conteúdo
Se no Windows, recoda para usar o createfile e ver qual é o erro real. Se no Linux, idem para o Open (2). Depois de depurar o problema, você provavelmente poderá voltar para os formas iost.