OVH Cloud OVH Cloud

Crytper une chaine dans un script Shell (BASH)

14 réponses
Avatar
jififix
Salut à tous,

Je dois faire un script shell sous BASH qui doit demander la saisie
d'une chaine (ça c'est bon).
Ensuite cette chaine doit être cryptée et être stocké dans un fichier
txt....
C'est là que je bolque... je n'arrive pas à utiliser la commande
crypt() dans mon script....(j'ai d'ailleurs du mal à la comprendre,
oui j'ai fait un "man crypt")....

################################
echo "Saissez votre pass : "
read motdepasse
echo "Votre password est : $motdepasse"
echo "Votre mot de passe va être crypté.
crypt........ et après je bloque....

echo "Votre mot de passe crypté est : $motdepasse"
###############################

Est-ce que je fais fausse route ? Est-ce crypt() qu'il faut utiliser ?
Si oui comment ? Auriez-vous des exemples ?

Je m'en remets aux Gouroux du NG ;)))

Merci beaucoup de votre aide

J.

PS: Je précise que je dois passer à tout prix par un script shell pour
générer la chaine cryptée, si possible du Shell pur ;)

4 réponses

1 2
Avatar
Stephane Chazelas
2004-05-10, 10:34(+02), jififix:
Et par rapport à la commande openssl ? J'ai de bon résultats mais...
Est-ce plus dangeureux ? ou un peu plus propre ?
De là...je dirais que c'est pas mal... maintenant....
[...] [merci de poster a l'endroit]


ce sont deux chiffrement differents. Le chiffrement a la
/etc/passwd n'est pas censé etre dechiffré.

openssl n'est pas une commande standard. perl est fourni avec
la plupart des unix aujourd'hui. Le resultat d'openssl est
binaire, tu auras des problemes avec certaines valeurs pour les
stocker dans une variable shell.

--
Stephane

Avatar
jififix

par défaut ca s'affiche à l'écran, donc pour le metre dans une variable :
txt=`openssl enc -d -des -k $passwd < texte.crypte`


Heuuuu....
Dans la série "je suis un grod lourd", j'ai encore un soucy :

Voilà mon code :
-----------------------------------
echo "Tapez votre pass :"
read motpasse
variable=`openssl enc -d -des -k $motpasse < texte.crypt`
$variable
------------------------------------
Le fichier pass.crypt contient le password crypté (je génère le cryptage
sans aucun PB, toujours avec openssl)
Mais pour le décrypter... il me dit que "<" n'est pas un argument valide
ou bien "texte.crypt" n'est pas valide (quand je fais des essais de
quotes) ???
C'est moi ou j'ai pas les yeux en face des trous ?
Je met mon "openssl" dans un variable pour pouvoir tester son résultat
après (1 ou 0)

J'ai essayé de prendre le contenu de ma variable avec simples quotes,
doubles quotes,... même pb
Si certains ont 2 sec pour tester ce truc sous bash, c'est cool... Là je
deviens fou !

Merci

J.

NB : Je crypte en faisant :
# openssl enc -e -des -k $motpasse > texte.crypt
Et là, ça roule Raoul !

Avatar
Etienne de Tocqueville
(jififix) a écrit sur fr.comp.os.unix :

Salut à tous,

Je dois faire un script shell sous BASH qui doit demander la saisie
d'une chaine (ça c'est bon).
Ensuite cette chaine doit être cryptée et être stocké dans un fichier
txt....
C'est là que je bolque... je n'arrive pas à utiliser la commande
crypt() dans mon script....(j'ai d'ailleurs du mal à la comprendre,
oui j'ai fait un "man crypt")....

################################
echo "Saissez votre pass : "
read motdepasse
echo "Votre password est : $motdepasse"
echo "Votre mot de passe va être crypté.
crypt........ et après je bloque....

echo "Votre mot de passe crypté est : $motdepasse"
###############################


S'il n'y a pas lieu d'assurer de compatibilité entre la chaine cryptée
et la fonction crypte (c'est à dire compatible avec le cryptage du
fichier /etc/passwd), il est à mon avis beaucoup plus simple dans un
shell d'utiliser md5 :

read motdepasse
motdepasse_crypte=$(echo $motdepasse | md5sum | cut -c-16)

On peut remplacer le -16 par n'importe quoi entre -8 et -32, selon son degré
de paranoïa. Sur certaine machine, l'exécutable md5 s'appelle md5, et
s'il n'est pas disponible, le source se trouve un peu partout sur le net
et se compile très facilement sur n'importe quelle machine.

Cette méthode est aussi fiable que la fonction crypt, c'est à dire qu'on
ne peut pas retrouver la chaine d'origine à partir de la chaine
cryptée, à moins d'essayer toutes les solutions possibles et de ne pas
etre trop pressé.

Avatar
Erwann ABALEA
On Mon, 10 May 2004, Stephane Chazelas wrote:

2004-05-10, 10:34(+02), jififix:
Et par rapport à la commande openssl ? J'ai de bon résultats mais...
Est-ce plus dangeureux ? ou un peu plus propre ?
De là...je dirais que c'est pas mal... maintenant....
[...] [merci de poster a l'endroit]


ce sont deux chiffrement differents. Le chiffrement a la
/etc/passwd n'est pas censé etre dechiffré.

openssl n'est pas une commande standard. perl est fourni avec
la plupart des unix aujourd'hui. Le resultat d'openssl est
binaire, tu auras des problemes avec certaines valeurs pour les
stocker dans une variable shell.


On peut piper ça avec un 'openssl base64 -e -a' pour avoir du Base64. Dans
l'autre sens, faire un 'openssl base64 -d -a' pour décoder le Base64 avant
déchiffrement.

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
Madame <font size=+2>H</font><font size=-2> </font>as rien compris
&agrave; quelque chose qui s'appelle" <b><u>internet</u></b> "&nbsp;
-+- LP in Guide du Neuneu d'Usenet -<b>Neuneu</b> a tout compris -+-


1 2