Mostrando entradas con la etiqueta contraseña. Mostrar todas las entradas
Mostrando entradas con la etiqueta contraseña. Mostrar todas las entradas

lunes, 1 de octubre de 2012

Script de Nautilus o Caja para quitar la contraseña de uno o varios PDF

Aviso: Este método no crackea la contraseña, debes conocerla ya. Pero es útil para dejar un PDF limpio de protecciones de manera rápida y cómoda, con apenas dos clicks encima del archivo. Si utilizas este script con un PDF sin contraseña, lo dejará igual, le digas la contraseña que le digas.

Lo primero: Nautilus es el explorador de archivos de Gnome y Caja es el explorador de archivos de Mate, un fork de Gnome 2 que utiliza, sobre todo, la distribución Linux Mint.

Los requisitos para poder utilizar este script son simplemente instalar

  • zenity (pequeño programa para generar ventanas con información/entrada de texto/etc. en GTK, suele venir preinstalado con Gnome o Mate)
  • qpdf (programa editor de PDF, es capaz de encriptar, desencriptar, y más cosas)

mediante la manera habitual de instalar paquetes de tu distribución (sudo apt-get install zenity qpdf por ejemplo, en Debian/Ubuntu/Linux Mint, etc).


Si utilizas Nautilus, debes guardar el script en la carpeta /home/tuusuario/.gnome2/nautilus-scripts y si utilizas Caja en la carpeta /home/tuusuario/.config/caja/scripts 

Este es el script que he hecho. Cambia la parte en rojo por $NAUTILUS_SCRIPT_SELECTED_URIS en caso de utilizar Nautilus en vez de Caja, el resto del script es exactamente igual.
#!/bin/bash
# Quitar la contraseña de un PDF si ya la conocemos

for archivo in $CAJA_SCRIPT_SELECTED_URIS; do
archivo=$(echo $archivo | cut -c 8-)
archivo=$(printf "${archivo//%/\\x}")
nombre=$(echo ${archivo##*/})
error=algo  # Vale, esto es poco ortodoxo, pero funciona
while [ "$error" != "" ]; do
if [ $(echo $archivo | tail -c 4) == "pdf" ]; then
input=$(zenity --text "Se eliminará la contraseña de $nombre\n\n¿Cuál es su contraseña actual?" --entry)
retval=$?
case $retval in
0)
error=`qpdf --password=$input --decrypt "$archivo" "$archivo.o" 2>&1 && mv -f "$archivo.o" "$archivo"`
echo $error
if [ "$error" != "" ] ; then zenity --text "Contraseña incorrecta." --info; fi
;;
1)
error=""
;;
esac;
else
zenity --text "El archivo $nombre no es un pdf." --info
error="";
fi
done
done

Lo copiamos y pegamos en un archivo llamado, por ejemplo, "Eliminar contraseña PDF" en el directorio de scripts que os he dicho antes y le damos permisos de ejecución. Se puede hacer dando a propiedades en el menú del botón derecho -> Permisos -> Permitir ejecutar el archivo como un programa, o bien abriendo una consola en dicha carpeta y escribiendo:
$ chmod +x Eliminar\ contraseña\ PDF

Una vez hecho todo esto, nos vamos a donde tengamos los PDF a los que queremos quitar la contraseña y los seleccionamos (se pueden seleccionar varios a la vez). Abrimos el menú con el botón derecho y seleccionamos Scripts -> Eliminar Contraseña PDF.


El script nos irá preguntando la contraseña de cada uno de ellos y, si ponemos la correcta, se la quitará. Ojo: El PDF original con contraseña desaparece, es sustituido con la versión limpia.

Captura del efecto:


Espero que a alguien le sea tan útil como a mí, buenas noches.