Crypter / Décrypter à l'aide dune passphrase depuis Nautilus

14-Apr-2010 | linux

Il existe en natif sur Ubuntu la possibilité de crypter/décrypter en utilisant un système de clé privé/clé publique avec le logiciel Seahorse.

Voici une autre façon de crypter un fichier en utilisant uniquement une passphrase.

Installer les paquets suivants (normalement déjà installés) :

$ sudo aptitude install zenity gpg

Copier le script suivant dans le dossier '~/.gnome2/nautilus-scripts/' en le nommant 'encrypt_decrypt' par exemple :

#!/bin/bash
#
# Filename: encrypt_decrypt(gpg)
# Date: 2008/02/02 15:10:34
# Licence: GNU GPL
# Dependency: zenity, gpg
# Author: Martin Langasek 

case $LANG in
    fr* )
        err_title="Erreur"
        err_files="Aucun fichier sélectionné"
        encrypt="Crypter"
        decrypt="Décrypter"
        file_msg="le fichier :"
        pass_msg="Entrer la passphrase"
        ;;
    * )
        err_title="Error"
        err_files="No file selected"
        encrypt="Encrypt"
        decrypt="Decrypt"
        file_msg="file:"
        pass_msg="Enter passphrase"
        ;;
esac

if [ "$1" != "" ]
then
    i=1
    file=`echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | sed ''$i'!d'`
    while [ "$file" != "" ]
    do
        ext=`echo "$file" | grep [.]gpg$ 2>&1`
    if [ "$ext" != "" ]
    then
        pass_decrypt=`zenity --entry --entry-text "$pass_decrypt" --hide-text --title "$pass_msg" --text "$decrypt $file_msg ${file##*/}" "" 2>&1`
        if [ "$pass_decrypt" != "" ]
        then
            output=${file%.*}
            echo "$pass_decrypt" | gpg -o "$output" --batch --passphrase-fd 0 -d "$file"
        fi
    else
        pass_encrypt=`zenity --entry --hide-text --entry-text "$pass_encrypt" --title "$pass_msg" --text "$encrypt $file_msg ${file##*/}" "" 2>&1`
        if [ "$pass_encrypt" != "" ]
        then
            echo "$pass_encrypt" | gpg --batch --passphrase-fd 0 --cipher-algo aes256 -c "$file"
        fi
    fi
    i=$(($i+1))
    file=`echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | sed ''$i'!d'`
    done
else
    zenity --error --title "$err_title" --text "$err_files"
fi

# EOF

Rendre le script exécutable avec la commande suivante :

$ chmod 755 ~/.gnome2/nautilus-scripts/encrypt_decrypt

Dans cet exemple, j'ai nommé le script 'encrypt_decrypt' --> c'est le nom que l'on verra apparaître dans Nautilus en faisant un clic-droit sur un fichier et en allant dans 'scripts'.

Le fichier crypté aura l'extension '.gpg'. Pour décrypter un fichier, il faut qu'il porte cette même extension...