/*
  Esteganografia (Steganography)

  Language: C

  Author: Tulio Faria - www.tuliofaria.net

*/
#include "stdio.h"
main(ns,params)
  int ns;
  char *params[];
{
  FILE *sourcefile,*thedata;
  int ch=0;
  int nChar1, nChar2;
  int k, n,i, CC, index, resto, vcasa;
  int cont = 0;

if (ns==2){

  char alfabeto[3];
  int tamAlfabeto = 3;
  int nBits = 6;

  alfabeto[0] =    0;
  alfabeto[1] =   32;
  alfabeto[2] = 160;

  //sourcefile = fopen("cobaia cod.txt", "r");
  sourcefile = fopen(params[1], "r");

   char mensagem[100];
   char mensagemC[100];
    

   if (sourcefile != NULL ){
       // descobrindo quanto de informacao poder guardar...
        n = 0;
       while (( (ch = getc(sourcefile)) != EOF )&&(n<100)){ 
            if ((ch==32)||(ch==160)||(ch==0)){
              mensagemC[n] = ch;
              //printf(": %d", ch);
              n++;
            }
         }
/*
       printf("mensagem codificada: ");
       for(i=0; i<n; i++){
          printf("%d ", mensagemC[i]);
       }
*/

       // transformando a mensagem de caracteres: 0, 32 e 160 em 0, 1 e 2
       for(i=0; i<100; i++){
          for(k=0; k<tamAlfabeto; k++){
            if(mensagemC[i]==alfabeto[k]){
              mensagemC[i] = k;
            }
          }
       }
/*
       printf("---------\n");
       for(i=0; i<100; i++){
          printf("%d ", mensagemC[i]);
       }       
*/
       char caracter;
       int fim = 0;
           printf("\n\n\nMensagem revelada com sucesso!\n\nA mensagem:\n\n");
       for(i=0; i<n; i++){
          fim = 0;
          caracter =0;
          for(k=nBits-1; k>=0;k--){
             vcasa = pow(tamAlfabeto, k);
             caracter+=vcasa*mensagemC[i*nBits+k];
             if (mensagemC[i*nBits+k]==2)
              fim++;
          }
          //printf("%d=%c ", caracter, caracter);
          if (fim==6)
            break;
          printf("%c", caracter);
       }      
        printf("\n\n\n");
        printf("\n\n");
       
   }else{
       printf("\nErro ao abrir o arquivo..\n");
   }
       fclose(sourcefile);
  }else{
      printf("\nParametros invalidos.\n\nExecute da seguinte maneira:\n lertexto.exe <nome do arquivo com a mensagem>\n\n ");
  }

      system("pause");
}
