Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 31/05/2006, à 10:13

cep

décrypter et crypter un mot de passe dans un script

Si la sécurité est votre votre principal soucis, cette astuce ne vous concerne pas. wink

Pour plusieurs raisons, on peut avoir besoin de faire tourner un script qui nécessite un mot de passe, sans pour autant pouvoir entrer le mot de passe dans une fenêtre.

Je vous propose donc une solution qui a le mérite d'être assez simple à mettre en oeuvre.

Pour commencer, il faudra installer le paquet mcrypt (section: universe/utils) qui permet de crypter et décrypter des fichiers en utilisant une grande variété d'algorithmes ( BLOWFISH, TWOFISH, DES, TripleDES, 3-WAY, SAFER-sk64, SAFER-sk128, SAFER+, OKI97, GOST, RC2, RC6, MARS, IDEA, RIJNDAEL-128, RIJNDAEL-192, SERPENT, RIJNDAEL-256, CAST-128 (known as CAST5), CAST-256, ARCFOUR, ENIGMA, PANAMA, XTEA and WAKE ). On pourrait aussi utiliser ccrypt ou autre crypt.

Donc :

sudo apt-get install mcrypt

Ensuite on pourra créer un répertoire (que l'on nomme tiroir dans notre exemple), dans lequel on mettra le fichier contenant le mot de passe à crypter.

mkdir /tiroir

On crée le fichier encode contenant le mot de passe mot_pass

echo 'mot_pass' >~/tiroir/encode

On crypte le fichier encode en utilisant la clé mardi, clé que vous pourrez modifier selon votre inspiration. Le fichier crypté sera nommé encode.nc :

cd tiroir
cat "encode"| mcrypt -q -k mardi > "encode.nc"

On pourrait aussi crypter le fichier en passant la commande : mcrypt le_fichier le_fichier_new puis en entrant deux fois la clé choisie.

On supprime le fichier non crypté encode

rm encode
cd

Maintenant il faut créer le script qui va utiliser le mot de passe crypté et faire les commandes voulues. Pour cet exemple j'ai imaginé un script utilisant sudo et qui fera un apt-get autoclean et un apt-get update. Le script s'appellera sudcode.sh et sera dans le répertoire scripts (à créer s'il n'existe pas, mais c'est facultatif). On utilise l'éditeur de son choix :

mkdir scripts
nano -w ~/scripts/sudcode.sh

Et on copie / cole ceci :

#!/bin/bash
# sudcode.sh pour utiliser un mot de passe codé

KEY=mardi  # la clé choisie auparavant
DEST=~/tiroir/encode.nc # le fichier crypté
ORIG=~/tiroir/encode  # le fichier décrypté
     
      cat "$DEST"|mdecrypt -q -k $KEY > "$ORIG"

      rm $DEST

  sudo -S xargs --< $ORIG apt-get autoclean && sudo apt-get update

           cat "$ORIG"|mcrypt -q -k $KEY > "$DEST" 

	rm $ORIG
  sudo -k  # on enlève la temporisation du mot de passe
 exit

Pour appeler le script il suffira de faire :

bash scripts/sudcode.sh

Et voilà, c'est tout simple. On peut avoir d'autres utilisations que apt-get et / ou sudo, comme par exemple un ftp et le mot de passe de connexion aussi.

Il est bien évident que l'inconvénient de la formule est le fait que la clé de décryptage est en clair dans le texte. On pourrait ne pas appeler le point KEY mais sous un autre nom, et choisir une clé moins "parlante" aussi.

Mais il ne faut pas oublier aussi qu'il existe par ailleurs des paquets comme crack, melussa, john et bien d'autres.

Dernière modification par cep (Le 31/05/2006, à 10:17)

Hors ligne

#2 Le 31/05/2006, à 10:48

dawar

Re : décrypter et crypter un mot de passe dans un script

Heuu c'est interessant, mais je comprends pas l'interet du truc par rapport a un script shell ou l'on mets en clair le mot de passe, la sécurité est la même qu'ici, sauf que la on a une étape supplémentaire...


S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadoks)

Hors ligne

#3 Le 31/05/2006, à 11:02

cep_

Re : décrypter et crypter un mot de passe dans un script

Ça se discute smile

Le mot de passe n'est pas en clair dans le fichier.

Il faut décrypter le fichier contenant pour avoir le mot de passe.

#4 Le 31/05/2006, à 13:44

abetsic

Re : décrypter et crypter un mot de passe dans un script

Salut,

Je rejoins dawar concernant la sécurité, il suffit de quelques connaissances pour retrouver le mot de passe, enfin comme tu l'as dit ce n'est pas pour un système ou la sécurité est le principal soucis.

J'ai une question sur ton script :
cat "$DEST"|mdecrypt -q -k $KEY > "$ORIG"
ça je comprend, c'est pour récupérer le mot de passe en clair dans le fichier ORIG, ce que je ne comprend pas c'est ça :
rm $DEST
suivi de ça :
cat "$ORIG"|mcrypt -q -k $KEY > "$DEST"

ça revient à défaire quelque chose pour le refaire après... à moins que mcrypt donne quelque chose de différent à chaque execution avec le même couple (clé,chaîne à chiffrer) ?

Et une autre question de détail, pourquoi cette indentation plutôt qu'une indentation plus classique comme on a l'habitude d'en voir dans les codes sources ?

Dernière modification par abetsic (Le 31/05/2006, à 13:47)

Hors ligne

#5 Le 31/05/2006, à 15:14

cep_

Re : décrypter et crypter un mot de passe dans un script

abetsic a écrit :

J'ai une question sur ton script :
cat "$DEST"|mdecrypt -q -k $KEY > "$ORIG"
ça je comprend, c'est pour récupérer le mot de passe en clair dans le fichier ORIG

oui.

ce que je ne comprend pas c'est ça :
rm $DEST

$DEST existe déjà puis il est décrypté, ce qui produit $ORIG dans lequel le mot de passe peut être lu en clair.

Le titre est "décrypter et crypter un mot de passe".
Bien entendu qu'il n'est pas nécessaire à priori de recrypter ce qui est déjà dans $DEST.
Mais je voulais montrer les possibilités de mcrypt en cas de besoin, et dans ce cas la ligne mcrypt n'aurait pas pu fonctionner sans le rm $DEST, sauf à créer un nom de fichiers différent à chaque fois.
Si on veut décrypter un mot de passe, on peut très bien se limiter à une seule ligne et à un rm $ORIG

Là, tout est décomposé, y compris la réalisation (écriture). Donc, à priori, le script ne s'adresse pas à des personnes qui ont l'habitude de lire et "voir dans les codes sources" wink

#6 Le 31/05/2006, à 17:02

seb0uil

Re : décrypter et crypter un mot de passe dans un script

cep_ a écrit :

Le mot de passe n'est pas en clair dans le fichier.

Ben presque

cat "$DEST"|mdecrypt -q -k $KEY

c'est qd même le mot de passe presque en clair

Donc c'est vrai que c'est sympa pour crypter simplement un fichier, mais pas forcement top pour un script...
Enfin, je dis ca....


Java stuff ::
tPortal.. ma petite implémentation de la JSR168
jlibParam.. pooling, paramétrage etc...

Hors ligne

#7 Le 31/05/2006, à 17:16

cep_

Re : décrypter et crypter un mot de passe dans un script

Vous avez lu l'avertissement au tout début du poste ?

Sur vos machines, vous avez "blindé" passwd et compagnie ? vous avez reconfiguré le boot ? grub ? le bios ? les partitions ?

Amenez-moi votre machine, on va voir combien de temps elle résiste wink

Maintenant, on peut aussi faire "plus serieux", mais alors pas forcément dans ce contexte, ni utilisable ou exploitable par tout le monde roll

#8 Le 03/06/2006, à 08:01

phoenix818

Re : décrypter et crypter un mot de passe dans un script

mdp bios au boot, grub bloqué, le tout en reiserfs, shadow et tout.... j'ai pas trouvé de gugus capable de me le cracker (sauf en faisant un reset de la CM, mais là, j'ai refusé, faut pas pousser, hein ^^)

-> vu ton avertissement en haut, c'est bon ^^ juste éviter qu'un newbie le prenne comme bible pour tous ses scripts et vienne se plaindre s'il voit qu'il a un "petit" soucis wink


Serveur: http://voltaic.is-a-geek.org
Site: http://www.phoenix818.ch

Hors ligne