La lettura di file bmp per la steganografia
Domanda
Sto cercando di leggere un file bmp in C ++ (Turbo). Ma io non sono in grado di stampare flusso binario.
Voglio codificare file txt in esso e decodificarlo. Come posso fare questo. Ho letto che intestazione del file BMP è di 54 byte. Ma come e dove devo aggiungere file txt in file BMP. ?
So solo Turbo C ++, quindi sarebbe utile per me se u fornire soluzioni o suggerimenti relative a soggetti per la stessa.
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();
}
Questo codice sta funzionando benissimo quando passo txt file in modalità binaria
Modifica
while(!fr)
cout<<fr.get();
Io non sono in grado di vedere i dati binari a console questo stava lavorando bene per il testo, quando passavo parametro personaggio fr.get (c)
Soluzione
Credo che si domanda è giá risposto: Stampa un int nella rappresentazione binaria utilizzando C
convertire il char in un int e si è fatto (almeno per la parte di output)
Altri suggerimenti
Con la steganografia, quel poco che so su di esso, non si sta "aggiungendo" testo. Stai facendo piccole modifiche al pixel (ombreggiatura, ecc ..) per nascondere qualcosa che non è visivamente evidente, ma dovrebbe essere in grado di essere reverse-decifrato esaminando i pixel. non dovrebbe avere nulla a che fare con l'intestazione. Comunque, il punto della mia risposta altrimenti non-utile è quello di incoraggiare si va a e conoscere il tema che si cercano risposte, in modo che è possibile progettare la vostra soluzione, e poi tornare e chiedere specifiche sulla implementazione.
È necessario modificare la stringa di bit, non accodare testo al file. Un semplice esempio: Leggere il contenuto Bitmap (dopo il colpo di testa), e sacrificare un po 'di ciascuno dei byte per tenere il vostro contenuti
Se su Windows, ricodificare utilizzare CreateFile e vedere qual è il vero errore è. Se su Linux, idem per aprire (2). Una volta che avete il debug il problema probabilmente si può spostare di nuovo a iostreams.