CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

passer un argument à un programme

sd460
sd460
Niveau 10
03 janvier 2011 à 21:18:31

Bonjour,

J'utilise un programme en ligne de commande qui demande un mot de passe pour chiffrer des données. Je ne peux pas passer ce mot de passe en argument puisque ce n'est pas prévu pour. Or c'est ce que j'aurais besoin de faire dans le but de scripter mon programme.

Quand je lance ma ligne de commande, le programme me renvoit "Enter encryption key:" ou un truc du genre.
J'ai naïvement essayé de le transmettre avec un " | echo password " après ma ligne de commande, mais sans succès^^
Ma question est donc : comment faire pour que je puisse donner ce mot de passe sans nécessiter une intervention utilisateur ?

J'ai trouvé ca sur le net en rapport avec mon problème : "you can pipe a password into vnconfig, if you block it from opening /dev/tty, eg. with systrace. " Mais je ne vois pas ce que ca signifie... Si vous pouviez m'éclairer un peu :)

deepblue
deepblue
Niveau 16
03 janvier 2011 à 21:44:27

foo | bar

bar reçoit dans l'entrée standard ce que foo envoi dans la sortie standard donc ce que tu as fait ne peux pas fonctionner.

Tu fais joujou avec vnc ?

chris_27
chris_27
Niveau 10
03 janvier 2011 à 23:31:14

« Je ne peux pas passer ce mot de passe en argument puisque ce n'est pas prévu pour. » :d) et heureusement que ce n'est pas prévu pour sinon ton mot de passe traînerait en clair dans ton historique. :-)))

Cela dit, faire "echo password | ton_prog" (tu pipais dans le mauvais sens visiblement) c'est tout aussi problématique du point de vue de la sécurité. :(

sd460
sd460
Niveau 10
03 janvier 2011 à 23:40:05

:honte:
Bon, le coup du pipe dans le mauvais sens, on va mettre ca sur le coup du post 31 pas encore complètement oublié^^ Je pense bien que je l'ai fait dans ce sens en plus quand je faisais mes tests :doute: enfin...

Effectivement, je ne comprenais pas en quoi ca faisait une faille de sécu, cela dit c'est évident une fois que tu as souligné le problème.
Il y a un moyen d'effacer l'historique de façon sécurisée après ? (bof, quitte a essayer de faire un truc propre, autant le faire un peu correctement^^)

Et non je ne fais pas joujou avec vnc meme si on aurait pu croire :) (en fait je joue avec vnconfig qui n'a rien a voir avec vnc sinon ses 3 premières lettres ;) )

chris_27
chris_27
Niveau 10
03 janvier 2011 à 23:43:51

« Il y a un moyen d'effacer l'historique de façon sécurisée après ? » :d) en vrai, je ne connais pas de moyen absolument propre à part lancer 10000 fois "ls" (mais ça flingue toute l'historique). :(

Sinon, c'est quoi vn ?

sd460
sd460
Niveau 10
04 janvier 2011 à 00:08:24

c'est du bsd, c'est pour ... je me permets de te mettre la man page d'open, elle expliquera mieux que moi :-) : http://www.openbsd.org/cgi-bin/man.cgi?query=vnconfig&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=i386&format=html

Sinon je me demandais : si je fait un script en autre chose qu'en shell (disons python par exemple...) : est-ce que je m'affranchis des problèmes d'historique meme si je fais appel à os.system("vnconfig blablabla") :question:

chris_27
chris_27
Niveau 10
04 janvier 2011 à 00:32:10

Script python dont le lancement apparaîtra dans l'historique et qui contiendra le mot de passe en clair… à part ajouter connement* du python, ça ne change rien.

  • : je n'aime pas python, et je haïs les gens qui nous imposent d'installer python juste pour lancer un pauvre script qui aurait été tout aussi bien fait en shell.

Pour ton problème de mot de passe, il n'y a pas d'autre solution que de taper le mot de passe à la main.

godrik
godrik
Niveau 30
04 janvier 2011 à 00:41:14

"Pour ton problème de mot de passe, il n'y a pas d'autre solution que de taper le mot de passe à la main."

Il y a plein de programme qui prennent les mdp sur l'entree standard et donc une redirection fonction ou alors qui peut lire le mdp depuis un fichier ce qui peut eviter d'autre utilisateurs de lire de mdp.

"je n'aime pas python, et je haïs les gens qui nous imposent d'installer python juste pour lancer un pauvre script qui aurait été tout aussi bien fait en shell."

j'ai le probleme avec des physiciens qui ne connaissent rien d'autre que csh... :(

Dargor
Dargor
Niveau 10
04 janvier 2011 à 08:21:26

Si tu es sur du Open il vaut mieux utiliser softraid que vnconfig.

Après la plupart des programmes qui requièrent un mot de passe le lisent directement depuis /dev/tty, pas sûr qu'une redirection fonctionne (Open semble fallbacker sur stdin, néanmoins).

cf /usr/src/lib/libc/gen/readpassphrase.c :
61 /*
62 * Read and write to /dev/tty if available. If not, read from
63 * stdin and write to stderr unless a tty is required.
64 */

chris_27
chris_27
Niveau 10
04 janvier 2011 à 09:26:09

godrik: non, ça ne fait que décaler le problème : si ton mdp est dans un fichier, soit il est en clair dans ce fichier, soit il faut une clé de déchiffrement (aka mot de passe) pour lire le fichier.

Sankukai
Sankukai
Niveau 10
04 janvier 2011 à 09:37:15

Il existe un petit programme très simple pour ce genre de choses : expect http://expect.sourceforge.net/
Un exemple d'utilisation trouvé sur le web :

  1. !/usr/local/bin/expect

spawn sftp -b cmdFile user@yourserver.com
expect "password:"
send "shhh!\n";
interact

J'ai hésité à répondre car c'est une solution dangereuse de gros goret à ne jamais utiliser. N'hésite pas à effacer ce post Chris_27 si tu estimes qu'il vaut mieux ne pas mettre en évidence ce genre de solution.

chris_27
chris_27
Niveau 10
04 janvier 2011 à 10:12:18

C'est bon, j'ai compris… il n'y a que moi qui tape ses mots de passe à chaque fois. :o))

Dargor
Dargor
Niveau 10
04 janvier 2011 à 10:16:35

Non, il n'y a pas que toi... :o))

dnob700
dnob700
Niveau 10
04 janvier 2011 à 22:18:09

À ma connaissance mettre un mdp sur la ligne de commande, ça ne pose pas trop de problème avec l'historique, parce que le fichier .bash_history à des droits du type 600 (et aussi, parce que dans mon .bashrc il y a un "unset HISTFILE" qui fait que de toutes manières rien n'est sauvegardé).

Par contre, les lignes de commandes sont lisibles par tout le monde dans /proc/pid/cmdline (chez moi ces fichiers sont 444). Donc il ne faut surtout pas passer des mot de passe sur la ligne de commande (sur une machine multi-utilisateur).

  1. Chris_27 : "godrik: non, ça ne fait que décaler le problème : si ton mdp est dans un fichier, soit il est en clair dans ce fichier, soit il faut une clé de déchiffrement (aka mot de passe) pour lire le fichier."

Mais il est par contre possible de mettre en cache cette unique clef et/ou ce fichier crypté, qui contiendrait les mots de passes de tout les autres programmes qui ensuite lise leur mot de passe dans ce fichier plutôt que de le demander sur l'entrée standard. C'est relativement sûr et ça évite d'avoir à taper des mots de passe "à chaque fois" (il le faut une fois à chaque démarrage de session, à la gnome-keyring, gpg-agent ou autre).

godrik
godrik
Niveau 30
04 janvier 2011 à 23:16:13

Je pensais surtout que si le fichier de mdp n'est pas accessible par d'autre utilisateur, il ne reste que root et l'utilisateur qui y ont access. Que si root est verole tu es mort de toute facon et que si l'utilisateur est compris tu es probablement cuit de toute facon.

Il ne reste que les gens qui vont demonte mon laptop pour recuperer le disque dur. Si c'est un access a un service serieux ca peut etre problematique, mais je prefere tapper le mdp d'access aux services serieux.

Mais en effet ssh-agent fait des merveilles.

sd460
sd460
Niveau 10
05 janvier 2011 à 00:06:47

mmmmh...
Réaction par rapport au script python : je pensais demander le mot de passe dans le script python pour que justement celui ci n'apparaisse pas dans l'historique du shell.
Genre :
début pyhon
...
pass = demander mot de passe
os.system("vnconfig blabla"+pass)
fin python

Ce serait correct dans ce cas non ? et je pensais à python mais ca pourrait etre n'importe quoi d'autre qui permette de scripter sans etre enregistré dans l'historique.

Après il semble que ce ne soit pas trop possible dans le cas de mon problème. Je vais relire vos réponse demain parceque je suis pas trop sur d'avoir tout capté :)

chris_27
chris_27
Niveau 10
05 janvier 2011 à 00:10:52

Ce serait correct dans ce cas non ? :d) non, ce n'est jamais correct d'utiliser python là où il ne sert à rien. (ceci valait pour perl ou autre bien entendu). :oui:

dnob700: tu as confiance en gnome-keyring toi ? Moi pas du tout.

sd460
sd460
Niveau 10
17 janvier 2011 à 23:21:37

mode redéterrage de topic...
le probleme avec expect, c'est également l'historique ou il y en a un autre ?

chris_27
chris_27
Niveau 10
17 janvier 2011 à 23:33:14

"le probleme avec expect" ?

Ha oui, le message de Sankukai que je n'avais pas effacé. :rouge:
(Note pour moi-même : je savais bien que j'aurais du l'effacer…)

Le problème avec expect c'est que tu dois écrire ton mot de passe en clair dans un fichier. Alors certes, ce n'est pas l'historique de ton shell et tu peux sans doute t'arranger pour mettre des droits très restrictifs dessus, mais c'est quand même le mal à mon avis.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment