ZIP es un formato de compresión sin pérdida muy utilizado para la compresión de datos como documentos, imágenes o programas. Este artículo explica como comprimir y descomprimir archivos en formato ZIP protegidos con contraseña (encriptados) utilizando la consola/terminal/línea de comandos en GNU/Linux.

El formato ZIP fue creado originalmente por Phil Katz, fundador de PKWARE. Katz liberó al público la documentación técnica del formato ZIP, y lanzó al mismo tiempo la primera versión de PKZIP en enero de 1989.

ZIP es un formato de archivo simple, que comprime cada uno de los archivos especificados de forma separada. Comprimir cada archivo independientemente del resto de archivos comprimidos permite recuperar cada uno de los mismos sin tener que leer el resto, lo que aumenta el rendimiento. El problema, es que el tamaño resultante de agrupar un número grande de pequeños archivos es siempre mayor que el de agrupar todos los archivos y comprimirlos como si tratasen de un único archivo. La especificación de ZIP indica que cada archivo puede ser almacenado o bien sin comprimir, o utilizando una amplia variedad de algoritmos de compresión.

El formato ZIP posee un sistema de cifrado simétrico propio basado en una clave única. A pesar de que este sistema de cifrado es débil ante ataques de texto plano, diccionario y fuerza bruta, puede servirnos para establecer un nivel de protección mínimo sobre ciertos archivos que deseamos compartir, transferir o almacenar y que no necesiten un nivel de confidencialidad muy alto.

En GNU/Linux, las herramientas zip y unzip proveen la funcionalidad necesaria para trabajar con archivos ZIP. Esta herramienta está liberada bajo la licencia open-source Info-ZIP.

Ejemplos

Supongamos que estamos trabajando en el directorio /tmp/temp, dentro del cual se encuentra el subdirectorio tux que posee el archivos de imágenes:

$ pwd
/tmp/temp
$ ls -l tux/
total 52
-rwxr-xr-x 1 emi emi 43189 Nov  4 16:17 tux.png
-rw-r--r-- 1 emi emi  6617 Nov  4 16:17 tuxlogo2.png
Comprimir un directorio en formato ZIP

Para comprimir un directorio con todo su contenido de forma recursiva debemos utilizar la opción -r:

$ zip -r tux.zip tux/
  adding: tux/ (stored 0%)
  adding: tux/tuxlogo2.png (stored 0%)
  adding: tux/tux.png (deflated 1%)
$ ls -l tux.zip 
-rw-r--r-- 1 emi emi 49815 Nov  4 16:22 tux.zip
Listar el contenido de un archivo ZIP

Para listar el contenido de un archivo ZIP (sin descomprimir, sólo listar) utilizamos -sf (show files):

$ zip -sf tux.zip 
Archive contains:
  tux/
  tux/tuxlogo2.png
  tux/tux.png
Total 3 entries (49806 bytes)
Descomprimir un archivo ZIP

La herramienta unzip nos permite descomprimir el contenido de un archivo ZIP. La opción -d permite especificar un directorio destino (si no se especifica ninguno, por defecto descomprime en el directorio actual):

$ unzip tux.zip -d tux2
Archive:  tux.zip
   creating: tux2/tux/
 extracting: tux2/tux/tuxlogo2.png
  inflating: tux2/tux/tux.png
$ ls -l
total 60
drwxr-xr-x 2 emi emi  4096 Nov  4 16:17 tux
-rw-r--r-- 1 emi emi 49815 Nov  4 16:22 tux.zip
drwxr-xr-x 3 emi emi  4096 Nov  4 16:26 tux2
$ ls -l tux2/
total 4
drwxr-xr-x 2 emi emi 4096 Nov  4 16:17 tux
$ ls -l tux2/tux
total 52
-rwxr-xr-x 1 emi emi 43189 Nov  4 16:17 tux.png
-rw-r--r-- 1 emi emi  6617 Nov  4 16:17 tuxlogo2.png

También es posible descomprimir un único archivo indicándolo luego del nombre del archivo ZIP:

$ unzip tux.zip tux/tuxlogo2.png -d tux3
Archive:  tux.zip
 extracting: tux3/tux/tuxlogo2.png
$ ls -l tux3/
total 4
drwxr-xr-x 2 emi emi 4096 Nov  4 16:38 tux
$ ls -l tux3/tux/
total 8
-rw-r--r-- 1 emi emi 6617 Nov  4 16:17 tuxlogo2.png
Crear un archivo ZIP protegido con contraseña

Supongamos que deseamos proteger con contraseña el archivo tux/tux.png. Para ello es posible utilizar la opción -e (encrypt):

$ zip -e tux.png.zip tux/tux.png 
Enter password: 
Verify password: 
  adding: tux/tux.png (deflated 1%)

Por supuesto es posible combinar con la opción -r para encriptar un directorio completo.

ZIP permite listar el contenido de un archivo encriptado sin conocer la contraseña o clave:

$ zip -sf tux.png.zip 
Archive contains:
  tux/tux.png
Total 1 entries (43189 bytes)
Descomprimir un archivo ZIP protegido con contraseña

Aunque para descomprimir es necesario conocer la contraseña:

$ unzip tux.png.zip -d tux4
Archive:  tux.png.zip
[tux.png.zip] tux/tux.png password: 
password incorrect--reenter: 
password incorrect--reenter: 
   skipping: tux/tux.png             incorrect password
$ unzip tux.png.zip -d tux4
Archive:  tux.png.zip
[tux.png.zip] tux/tux.png password: 
  inflating: tux4/tux/tux.png
$ ls -l tux4
total 4
drwxr-xr-x 2 emi emi 4096 Nov  4 16:42 tux
$ ls -l tux4/tux/
total 44
-rwxr-xr-x 1 emi emi 43189 Nov  4 16:17 tux.png

Espero que les sirva!!


Tal vez pueda interesarte


Compartí este artículo