//*************************************//
//******** created by mamo139 *********//
//*** http://mamo139.altervista.org ***//
//*************************************//
#include <stdio.h>
#include <windows.h>
unsigned char* dammibit(unsigned char numero);
unsigned char dammichar(unsigned char *bits);
int main (void){
char nomefileb[20];
printf("nome del file base:"); scanf("%s",nomefileb);
//******************** inizio operazioni di steganografia ***************************//
long lbuffer = 3; //byte letti alla volta nella base
long lbuffer2 = lbuffer/3; //byte letti nel file
printf("buffer impostato a %d bytes\n",lbuffer
);
unsigned char *buf; //buffer di lettura
buf = new unsigned char [(lbuffer+54)]; //grandezza del buffer della base
FILE *base, *f_out;
if ((base = fopen(nomefileb, "rb")) && (f_out = fopen("decript.dcrp", "wb"))){
printf("files aperti con successo!!\n");
size_t b,c; //byte letti
long x=0; //variabile per il ciclo
b = fread( buf, 1, 54, base);
while( b = fread( buf, 1, lbuffer, base) ) {
/* ciclo di steganografia */
x=x+lbuffer; // x = numero di byte letti dalla base
unsigned char *bits_f;
bits_f = new unsigned char [8];
unsigned char *bits_b1;
bits_b1 = new unsigned char [8];
bits_b1 = dammibit(buf[0]);
unsigned char *bits_b2;
bits_b2 = new unsigned char [8];
bits_b2 = dammibit(buf[1]);
unsigned char *bits_b3;
bits_b3 = new unsigned char [8];
bits_b3 = dammibit(buf[2]);
bits_f[0]=bits_b1[5];
bits_f[1]=bits_b1[6];
bits_f[2]=bits_b1[7];
bits_f[3]=bits_b2[5];
bits_f[4]=bits_b2[6];
bits_f[5]=bits_b2[7];
bits_f[6]=bits_b3[6];
bits_f[7]=bits_b3[7];
buf[0] = dammichar(bits_f);
if(x%1048575==0)
printf("%d Mb\n",(x
/1048576
));
fwrite( buf, 1, 1, f_out);
}
}
fclose(base);
fclose(f_out);
system("PAUSE");
return 1;
}
unsigned char* dammibit(unsigned char numero){
unsigned char *bits;
bits = new unsigned char [8];
if(numero<128) bits[0] = 0; // cifra 1
else { bits[0] = 1; numero = numero - 128; }
if(numero<64) bits[1] = 0; // cifra 2
else { bits[1] = 1; numero = numero - 64; }
if(numero<32) bits[2] = 0; // cifra 3
else { bits[2] = 1; numero = numero - 32; }
if(numero<16) bits[3] = 0; // cifra 4
else { bits[3] = 1; numero = numero - 16; }
if(numero<8) bits[4] = 0; // cifra 5
else { bits[4] = 1; numero = numero - 8; }
if(numero<4) bits[5] = 0; // cifra 6
else { bits[5] = 1; numero = numero - 4; }
if(numero<2) bits[6] = 0; // cifra 7
else { bits[6] = 1; numero = numero - 2; }
if(numero<1) bits[7] = 0; // cifra 8
else { bits[7] = 1; numero = numero - 1; }
/*
FILE *prova = fopen("output.txt","wb");
fwrite( bits, 1, 8, prova);
fclose(prova);
*/
return bits;
}
unsigned char dammichar(unsigned char *bits){
unsigned char numero;
numero = bits[0]*128 + bits[1]*64 + bits[2]*32 + bits[3]*16 + bits[4]*8 + bits[5]*4 + bits[6]*2 + bits[7]*1;
return numero;
}