Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: RayHack en 22 Marzo 2014, 21:20 pm



Título: [C++] ¿Como empaquetar y desempaquetar archivos?
Publicado por: RayHack en 22 Marzo 2014, 21:20 pm
Buenas amigos hoy vengo con una duda que llevo hace dias y que eh investigado pero no encuentro exactamente lo que busco.

Hay muchos programas que eh observado los cuales contienen varios archivos empaquetados en uno como si fuesen comprimidos en .rar o .zip, estos archivos son desempaquetados por el programa esto para evitar que el usuario modifique los archivos.

¿Como podria hacer algo similar y que el usuario no pueda abrir el archivo con ningún descomprimidor como Winrar o ZIP?

Un saludo.


Título: Re: [C++] ¿Como empaquetar y desempaquetar archivos?
Publicado por: amchacon en 22 Marzo 2014, 23:59 pm
Yo me hize un empaquetador de esos, los creaba en formato AMC (patente por registrar ;D).

Hacer un empaquetador sin compresión no es muy dificil. Para empaquetar:

- Te pones una carpeta donde estarán los archivos a empaquetar, los vas listando uno a uno. Para cada archivo:
       - Coges tu tamaño y lo escribes en el paquete.
       - Escribes el tamaño del nombre, apto seguido escribes el nombre.
       - Copias el contenido del archivo al paquete.
       - Mientras queden archivos por listar vuelve al paso 1.

Y para desempaquetar algo parecido:

- Te coges una carpeta de destino, abres el paquete y procedes a la inversa:

        - Lees el tamaño (llamemoslo TAM_S) , lees el tamaño del nombre (llamemoslo TAM_M).
        - Los siguientes TAM_M bytes serán del nombre, los lees y creas un archivo con ese nombre.
        - Los siguientes TAM_S bytes serán del archivo, vuelcalos al nuevo archivo que has creado.
        - Repetir hasta que hayas recorrido el paquete entero.


Título: Re: [C++] ¿Como empaquetar y desempaquetar archivos?
Publicado por: RayHack en 25 Marzo 2014, 00:02 am
Muchas gracias por su ayuda, aunque mejor decidí comprimir los archivos en ZIP y cambiarles extension y ponerles passwords.

Un saludo y muchas gracias.