Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: daryo en 10 Junio 2013, 20:00 pm



Título: [aporte]c++ cifrar/descifrar archivos comando
Publicado por: daryo en 10 Junio 2013, 20:00 pm
 :P
Código
  1.  
  2. #include <iostream>
  3.    #include <string>
  4.    #include <cstring>
  5.    #include <fstream>
  6.  
  7.    using namespace std;
  8.  
  9.  
  10.    void ayuda()
  11.    {
  12.    cout << "formato: cifrar.exe parametro \"archivo a cifrar\" \"archivo cifrado\"" << endl;
  13.    cout << "parametros:"<< endl << "-c cifrar" << endl << "-d descifrar" << endl;
  14.    }
  15.  
  16.  
  17.  
  18.    int main(int argc,char *argv[])
  19.       {
  20.       if(argc==4)
  21.           {
  22.               char *buf;
  23.               int tamano;
  24.               int n=1;
  25.  
  26.               char letra;
  27.               ifstream archivo(argv[2],ios::binary);
  28.               if(archivo.fail())
  29.                   {
  30.                   cout << "no fue posible abrir el archivo"<< endl;
  31.                   return 1;
  32.                   }
  33.               //-----------------------------
  34.               archivo.seekg(0,ios::end);
  35.               tamano=archivo.tellg();  //encuentro el tamano del archivo
  36.               archivo.seekg(0,ios::beg);
  37.               buf=new char[tamano];
  38.               //-----------------------------
  39.               archivo.read(buf,tamano);
  40.               archivo.close();
  41.               ofstream salida(argv[3],ios::binary);
  42.               for(int xd=0;xd<tamano;xd++)
  43.                   {
  44.                   if(strcmp(argv[1],"-c")==0)
  45.                       {
  46.                       letra=buf[xd]+n;
  47.                       }
  48.                   else if(strcmp(argv[1],"-d")==0)
  49.                       {
  50.                       letra=buf[xd]-n;
  51.                       }
  52.                   else
  53.                       {
  54.                       cout << "parametros erroneos"<<endl;
  55.                       return 1;
  56.                       }
  57.                   salida << letra;
  58.                   if(n>10)
  59.                       {
  60.                       n=1;
  61.                       }
  62.                       n++;
  63.                   }
  64.                   salida.close();
  65.                delete [] buf;
  66.               return 0;
  67.           }
  68.       else
  69.           {
  70.               ayuda();
  71.           }
  72.  
  73.  
  74.       return 0;
  75.       }
  76.  
  77.  


Título: Re: [aporte]c++ cifrar/descifrar archivos comando
Publicado por: 0xDani en 10 Junio 2013, 21:30 pm
Con qué estándar y/o compilador te compila esto? :

Código
  1. char buf[tamano];

Sé que en C99 se puede, pero no creo recordar que se pudiera en C++.

En todo caso, un array estático es normalmente ubicado en la stack. Si tratas de cifrar un archivo de algunos MB, se te puede desbordar la stack y crashear el programa.

Saludos.


Título: Re: [aporte]c++ cifrar/descifrar archivos comando
Publicado por: daryo en 10 Junio 2013, 22:08 pm
Con qué estándar y/o compilador te compila esto? :

Código
  1. char buf[tamano];

Sé que en C99 se puede, pero no creo recordar que se pudiera en C++.

En todo caso, un array estático es normalmente ubicado en la stack. Si tratas de cifrar un archivo de algunos MB, se te puede desbordar la stack y crashear el programa.

Saludos.

tienes razon me lo compilo el gcc en codeblocks con windows .
lo hice rapido casi con afan :P luego lo corrijo


Título: Re: [aporte]c++ cifrar/descifrar archivos comando
Publicado por: amchacon en 10 Junio 2013, 22:46 pm
Con qué estándar y/o compilador te compila esto? :

Código
  1. char buf[tamano];

Sé que en C99 se puede, pero no creo recordar que se pudiera en C++.

En todo caso, un array estático es normalmente ubicado en la stack. Si tratas de cifrar un archivo de algunos MB, se te puede desbordar la stack y crashear el programa.
C++ no lo tiene recogido en el estándar, pero tampoco lo prohíbe.

Con el Mingw (o g++) te lo compila sin problemas, sin warnings ni nada.


Título: Re: [aporte]c++ cifrar/descifrar archivos comando
Publicado por: daryo en 12 Junio 2013, 17:57 pm
ya correji el programa ahora uso memoria dinamica y es completamente estandar