elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda abrir fichero c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Duda abrir fichero c++  (Leído 6,575 veces)
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Duda abrir fichero c++
« en: 30 Enero 2013, 20:14 pm »

Hola, estaba creando una especie de encriptador y de momento solo cifra textos planos por que cuando intento cifrar imagenes,videos,exes pues en el código fuente tiene valores nulos que mi programa no cifra, entonces pense que si se podría abrir un fichero como hexadecimal, busque un poco y solo encontre como pasar de char a hexadecimal, pero no como abrir ficheros en hexadecimal.

RESUMEN:Como puedo abrir un fichero como hexadecimal en C++


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Duda abrir fichero c++
« Respuesta #1 en: 30 Enero 2013, 20:23 pm »

Fácil, abrelo en modo binario:
Código
  1. ifstream Lectura;
  2. Lectura.open(Nombre,ios::binary);

Lees un byte cualquiera:

Código
  1. int Byte;
  2. Lectura.read((char*) &Byte,1);

Y obtienes su valor en decimal, luego ya trasteas con el como quieras.

 Para escribir lo mismo:

Código
  1. Escritura.open(Nombre,ofstream::binary);
  2. Escritura.write((char*) &Byte,1);


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Duda abrir fichero c++
« Respuesta #2 en: 31 Enero 2013, 16:01 pm »

De hecho ponerse a diferenciar entre ficheros de texto y binarios es una tonteria, si quieres hacer un encriptador simplemente abre todos los ficheros en binario.

Saludos.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Duda abrir fichero c++
« Respuesta #3 en: 31 Enero 2013, 16:23 pm »

Ok, los NUL ya los lee y los escrive,  pero encripte una imagen y a partir de un SUB, ya no cifra nada más.

No se lo que significa SUB pero cuando abro el fichero con notepad++ me sale eso y a partir de ese punto no cifra nada más.

Cuelgo una imagen

En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Duda abrir fichero c++
« Respuesta #4 en: 31 Enero 2013, 16:26 pm »

Usa mejor un editor hexadecimal (Yo uso HxD).

Has comprobado si se ha activado el EOF?
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Duda abrir fichero c++
« Respuesta #5 en: 31 Enero 2013, 16:33 pm »

Parece que el sub indique cuando se finaliza el fichero, si que se activa y deja de leer.

En hexa el sub es el 1A

por eso decia de intentar abrir directamente el archivo como hexadecimal para poder leer  sin problemas el archivo.
« Última modificación: 31 Enero 2013, 16:41 pm por Stakewinner00 » En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Duda abrir fichero c++
« Respuesta #6 en: 31 Enero 2013, 16:53 pm »

Lo has advierto en modo binario como te dije?.

Una cosa que puedes hacer es calcular el tamanyo del archivo y leerlo del tiron:

Código
  1. ifstream Lectura;
  2. Lectura.open(Nombre,ios::binary);
  3. Lectura.seekg (0, ios::end);
  4. int Tamanyo =Lectura.tellg();
  5. Lectura.seekg (0,ios::beg);
  6.  
  7. int* Datos = new int[Tamanyo];
  8.  
  9. Lectura.read((char*)& Datos,Tamanyo);

Todo lo que quieras trastear está en el array "datos". Y despues para escribir igual:

Código
  1. Escritura.write((char*) &Datos,Tamanyo);

por eso decia de intentar abrir directamente el archivo como hexadecimal para poder leer  sin problemas el archivo.
Ese modo "hexadecimal" es el modo binario... Con eso puedes obtener el valor de cada Byte (en formato decimal que es más fácil).
« Última modificación: 31 Enero 2013, 16:57 pm por amchacon » En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Duda abrir fichero c++
« Respuesta #7 en: 31 Enero 2013, 17:11 pm »

Ok, ya esta arreglado, muchas gracias por todo, el fallo lo tenia en una función, donde hay 2 archivos de textos que los abro y cierro múltiples veces y en una de esas veces no puse el ,ios::binary.

En concreto me olvide de lo suiguiente.

Código
  1.  ifstream is;
  2.    is.open (str,ios::binary); //Str es el archivo a cifrar
  3.    if (!is)
  4.    {
  5.        cout << endl << endl << "ERROR EN EL ARCHIVO"; return 0;
  6.    }
  7.    string mens2="";
  8.    cout << endl << endl << "PUEDE TARDAR SEGUNDOS DEPENDIENDO DE LA LONGITUD DEL TEXTO" << endl << endl;
  9.    is.seekg(0, ios::end);
  10.    long size = is.tellg();
  11.    is.seekg(0, ios::beg);
  12.    is.close();
  13.    is.open (str,ios::binary); // Aki no había el ios::binary
  14.    double long index2=0;
  15.    int ch;
  16.    ofstream myfile;
  17.    myfile.open ("CR1M2.txt",ios::binary);
  18.  
  19.  
  20.    while (index!=size)
« Última modificación: 31 Enero 2013, 17:16 pm por Stakewinner00 » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Duda abrir fichero c++
« Respuesta #8 en: 31 Enero 2013, 17:48 pm »

Cuando declaras un objeto de la clase string su valor inicial es una cadena vacía, esto no es necesario:
Código
  1. string mens2="";
Basta con la declaración:
Código
  1. string mens2;

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Duda abrir fichero c++
« Respuesta #9 en: 31 Enero 2013, 17:51 pm »

A si, es verdad, pero como estaba inseguro lo puse por si acaso, ahora lo quito.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
common dialog abrir/seleccionar mas de un fichero
Programación Visual Basic
luiski 3 2,131 Último mensaje 13 Octubre 2006, 07:48 am
por luiski
Abrir (Ejecutar) un archivo (fichero) contenido en un Jar
Java
1mpuls0 5 8,857 Último mensaje 8 Noviembre 2009, 17:01 pm
por 1mpuls0
Manejo de ficheros: Me da el error al abrir el fichero, por que?
Programación C/C++
Firos 2 2,769 Último mensaje 11 Abril 2011, 16:15 pm
por Firos
[Ayuda] Abrir fichero de imagen en c « 1 2 3 »
Programación C/C++
Mioshi 23 14,518 Último mensaje 14 Enero 2015, 08:21 am
por jackleo1995
Problema abrir fichero en ruta distinta
Desarrollo Web
astrojohan 1 2,003 Último mensaje 21 Diciembre 2017, 19:26 pm
por Tusso4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines