#1 Le 31/05/2006, à 09: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.
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, à 09:17)
Hors ligne
#2 Le 31/05/2006, à 09: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, à 10:02
- cep_
Re : décrypter et crypter un mot de passe dans un script
Ça se discute
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, à 12: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, à 12:47)
Hors ligne
#5 Le 31/05/2006, à 14:14
- cep_
Re : décrypter et crypter un mot de passe dans un script
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"
#6 Le 31/05/2006, à 16:02
- seb0uil
Re : décrypter et crypter un mot de passe dans un script
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....
Hors ligne
#7 Le 31/05/2006, à 16: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
Maintenant, on peut aussi faire "plus serieux", mais alors pas forcément dans ce contexte, ni utilisable ou exploitable par tout le monde
#8 Le 03/06/2006, à 07: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
Serveur: http://voltaic.is-a-geek.org
Site: http://www.phoenix818.ch
Hors ligne