Encrypter un fichier facilement

Tags:: linux :: gnome :: bureau :: cryptage

On discutait sur le canal fedora-fr (IRC, sur freenode.net) quand une question anodine m'a fait jouer avec bash et gnome. La question était de savoir comment encrypter un fichier facilement sous Linux. Casper, un ami du net, parla alors de gpg, puis on a doucement dérivé sur openssl. Et je me suis amusé à faire un truc simple: une icone sur le bureau qui accèpte un fichier à déposer dessus et qui l'encrypte directement. C'est simple comme tout, à condition de connaitre un peu le bash.

Le cahier des charges est le suivant:

  • une icone simple, juste un drag and drop
  • encrypte ou décrypte le fichier selon le type
  • mot de passe demandé, écriture sur le bureau

C'est le second point qui m'a posé un petit souci mais je me suis rendu compte qu'on pouvait tricher. D'abord voyons comment on encrypte avec openssl (j'ai choisi un cryptage des3, assez fiable):


openssl des3 -salt -in fichier1 -out fichier2
 

Ici, le fichier fichier2 est le fichier encrypté, si je veux le décrypter:


openssl des3  -d -salt -in fichier2 -out fichier3
 

le fichier fichier3 est alors le résultat, c'est à dire le même fichier que fichier1

Pour savoir reconnaitre un fichier crypté, j'ai triché. Comme j'ai utilisé l'option -salt un sel est ajouté. Cela enrichi le fichier à sa première ligne d'un "Salted_" qui apparait... par contre le type de fichier est "data":


$ file -b fichier2
data
 

Voilà comment je sais si le fichier est encodé par ma méthode. Et bien faisons un script:


#!/bin/bash

IN="$@"
mime=$(file -b "$IN")
encrypted=1

if [[ "$mime" == "data" ]]; then
        head -n1 "$IN" | grep "Salted" > /dev/null
        encrypted=$?
fi

if [ "$encrypted" == "1" ]; then
        #openssl encryption
        pass=$(zenity --entry --text "Password to encrypt")
        openssl des3 -salt -in "$IN" -out ~/Bureau/$(basename $IN).encrypted -pass pass:$pass
else
        #openssl decrypt
        pass=$(zenity --entry --text "Password to decrypt")
        #remove dirname and extension
        out=$(basename $IN)
        out=${out%*.*}
        openssl des3 -d -salt -in "$IN" -out ~/Bureau/$out -pass pass:$pass
        if [[ "$?" != "0" ]]; then
                zenity --error --text "Incorrect Password"
        fi
fi

 

Ce script prend un fichier en argument et écrit le fichier résultant dans le bureau. Vous allez le sauver dans $HOME/bin/encrypter.sh et le rendre exécutable:


chmod +x ~/bin/encrypter.sh
 

Reste alors à faire un lanceur dans le bureau, tapez cette commande:


cat >  $HOME/Bureau/Encrypter.desktop <<EOF
#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[fr_FR]=gnome-panel-launcher
Exec=$HOME/bin/encrypter.sh
Name[fr_FR]=Encrypter
Name=MonTest
Icon=/usr/share/icons/gnome/scalable/status/security-high-symbolic.svg
EOF

chmod +x $HOME/Bureau/Encrypter.desktop
 

Dans le bureau apparait une icone nommé Encrypter, glisser un fichier (pas un répertoire) sur cette icone, on vous demande un mot de passe pour encrypter le fichier. Dans le bureau apparait alors un fichier suffixé par ".encrypted"

Reglissez ce fichier sur l'icone, on vous demande le mot de passe et si l'opération à marché vous voyez le fichier apparaitre.

Bref, c'est juste un bricolage là, mais c'est intéressant de voir à quel point on peut jouer avec Linux sur ce genre de travail.

Utilisez le code barre pour ouvrir le ticket dans votre mobile:
This ticket on you mobile
1 Mercredi 02 Mars 2011 09:25:25, webozor

Article intéressant, comme d'hab.

2 petites coquilles en début d'article

décrupter -> décrypter
fichier" -> fichier3

2 Mercredi 02 Mars 2011 14:58:04, Metal3d

Merci :) et effectivement je relis pas assez mes articles avant de poster... Je répare ça :)

3 Samedi 24 Septembre 2011 21:46:29, yub fongarnand

Et sinon, il y a bcrypt http://bcrypt.sourceforge.net/

marche tout seul... pas besoin de script autour... je l'ai utilisé dans mon ancienne vie!

Ajouter un commentaire
Veuillez répondre à la question suivante : Tapez en minuscule le nom de l'animal qui fait wouaf wouaf

Trackbacks

Pour ajouter un trackback (retrolien) sur ce ticket, utilisez cette adresse: http://www.metal3d.org/index.php/trackback/default/tb?id=blog%2F276

Tags

Blog Copix Communication PC Config Fedora Vidéo Humour Autre Web Materiel Informatique PHP Développement Mootools HTML Linux WEB IE CSS Vista Microsoft Sympa XHTML Quizz Widget Klik CWE Voeux Bonne année Musique CCRMA Son Audio MAO Reconnaissance vocale Windows Mac Compiz MacOS Mysql Sun Base de données BD Screenlets Screenlet RPM compiz Ubuntu Live FireFox Derambarsh Facebook media informations Sécurité javascript SSH Commande Marketing concours ipod wii QT Trooltech Nokia Libre Logiciels GPL Attali Gnome Dock Compiler Bench undelete reiserfs recovery recover Thread Serveur Optimisation Server Apache Album RSS Flash Air XML Firefox Blender Opensource Orange Internet LiveBox Animaux Droits Logiciels Libres Google Loi RBS netcat Bash Téléphone Spam 3D NIDIA Standards Widgets Merise UML Streaming Developpement Perl MySQL Firewall Parfeu Bayes Novell Réseau Python LVS Salon FTP Dedibox Chrome Administration IRC Gentoo troll video Nouveauté Finance Etudiant spéctacle OpenOffice Javascript Java Info Eclpise ATI design mootools KDE Bureau Design GNU C Pages Jaunes Fun Bijoux Art mail Admin vmware fedora linux VirtualBox VMWare Qemu KVM vim Grep Fglrx Webkit GTK google web JQuery Coup de gueule coup de gueule Lois SVG Raycaster Canvas Hadopi Desktop Jeux Les Sims développement astuces Screen firefox Mobile Safaru Wine bash commande astuce Wave ooc C++ C# Netbook Hercules Bureautique Twitter Safari W3C chrome kazehakaze midori navigateur gecko webkit Links Liens Pyhon Nouvelles Metal Perso Conférence JDLL PCC Roadsend OOC News Acteur Cinéma Chanteur Seven windows orthographe pcc php jdll Slide Application mysql Html twitter python screen curses SVN Android Gphone iPhone OpenGL MindMap Projet Javascrtip Ajax Guitare Tab Tablature JSON firebug Chromium Iphone Titanium music sound android ogg ogv streaming Arkyne svn subversion gnome VLC Tv encoder ffmpeg Cryptage apple microsoft HTML5 Max Apple code youtube quvi git uzbl webgl chromium

  Catalogue professionnel de musique libre


  • twitter entries...
follow me on Twitter

Valid XHTML 1.0 Strict

tumblr visitor