es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Modificar un byte de un archivo PNG

Para mi proyecto de estudios, necesito modificar algunos bytes en un archivo png.

Es para un proyecto de esteganografía donde tengo que modificar ligeramente un byte y ocultar un mensaje en una foto.

En el código de abajo, cuando lo ejecuto, convierte todos los bytes a 0 y el archivo se corrompe. En un archivo bmp funcionó, pero no sé cómo hacerlo en formatos png.

Desafortunadamente no puedo usar ninguna biblioteca de terceros. Solo necesito ayuda para encontrar una forma de leer correctamente cada byte, y luego modificarlo usando C++. Gracias por la ayuda.

string path = "C:\\Users\\sth....";
fstream file(path, ios::binary | ios::in | ios::out);
char buffer[1000];
file.seekp(300);
file << char(0);
file.read(buffer, 1000);
for(char c : buffer)
    cout << int(c) << " ";
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para modificar un byte en un archivo PNG con fines de esteganografía utilizando C++, deberás comprender el formato de archivo PNG y cómo leer y escribir datos binarios correctamente en C++.

    Para comenzar, debes investigar la estructura de un archivo PNG y entender cómo difiere de un archivo BMP. Luego, puedes utilizar un enfoque similar al código proporcionado pero con las posiciones de bytes correctas para el formato de archivo PNG.

    Aquí tienes algunos pasos que puedes seguir:

    1. Abre el archivo PNG en modo binario usando ios::binary.
    2. Ve a la posición del byte que deseas modificar utilizando file.seekp().

    3. Escribe el nuevo byte utilizando file << char(new_byte_value).

    4. Lee los bytes restantes en un búfer utilizando file.read().

    5. Recorre el búfer para imprimir los valores de byte utilizando int(c).

    Ten en cuenta que modificar directamente un archivo PNG puede corromper el archivo y hacer que sea ilegible. Para evitar esto, debes hacer una copia del archivo original y modificar la copia en su lugar.

    Además, la esteganografía implica ocultar un mensaje dentro del archivo sin alterar su apariencia. Simplemente establecer un byte en 0 puede no ser suficiente para ocultar un mensaje de manera efectiva. Deberás utilizar técnicas más sofisticadas, como manipular los bits menos significativos de los píxeles, para ocultar tu mensaje.

Comments are closed.