J'écris une application python qui utilise un utilitaire de ligne de commande (propietary donc il ne peut pas être modifié) pour faire une partie de son travail. Le problème est que je dois passer le mot de passe comme un argument de ligne de commande à l'outil qui serait facilement vu par n'importe quel utilisateur faisant 'ps ax'. Comment puis-je envoyer le mot de passe à l'outil de ligne de commande en toute sécurité depuis python (ou un script shell)?Envoyer un mot de passe aux outils de ligne de commande
Répondre
Si le mot de passe n'est accepté que sur la ligne de commande, vous n'avez pas vraiment de chance. Êtes-vous absolument sûr qu'il n'y a pas d'option pour envoyer le mot de passe d'une autre manière? Si vous pouvez l'envoyer via le stdin
du processus, vous pouvez lui parler via un tuyau, et envoyer le mot de passe de manière sécurisée de cette manière.
Je vais regarder, mais je ne sais pas si c'est possible. – theprole
Etes-vous sûr que la transmission de mots de passe dans des programmes via des canaux est sécurisée? Voir ma nouvelle question http://stackoverflow.com/questions/6321353/securely-passing-password-to-openssl-via-stdin peut-être vous pouvez prendre quelques points là-bas. – Enchilada
Si l'application dispose d'un mode interactif, vous pouvez utiliser quelque chose comme pyexpect.
Si elle n'accepte que les mots de passe sur la ligne de commande, l'application a été conçue pour être vulnérable à 'ps ax', comment allez-vous surmonter le mauvais design original? C'est propiétaire, les plaintes devraient aller au coupable. H H H H H H H Hauthor.
Vous pouvez obtenir plus de sécurité en ayant un argument de mot de passe crypté et en transmettant un mot de passe crypté, et le programme peut le décrypter. Au moins, il n'y aurait pas de mot de passe en clair. J'ai utilisé cette méthode lors du lancement d'un processus via un autre processus et en lui passant des arguments. Ce n'est peut-être pas faisable dans votre cas.
Ecrivez un autre script python qui acceptera le mot de passe à partir de l'invite de commande en utilisant getpass.getpass()
et stockez-le dans une variable. Puis appelez la commande du script avec cette variable ayant un mot de passe comme paramètre.
Vous pouvez forcer une enveloppe shell en ligne comme suit
somecommand --password=$(echo "Enter Password: " >&2;read -s PASSWORD;echo $PASSWORD)
L'entrée de mot de passe remplir la commande avant de l'exécuter
Le mot de passe ne sera pas apparaître dans l'histoire de votre coquille
Mais il va apparaît dans votre sortie 'ps'
Qu'en est-il à bash:
command_asking_for_password < <(command_that_prints_a_password; echo -n "\r")
Mieux vaut utiliser 'printf' - le comportement de' echo' lorsqu'on lui donne une chaîne de format en utilisant des barres obliques inverses - ou, d'ailleurs, l'argument '-n' - est [non défini par POSIX] (http: // pubs .opengroup.org/onlinepubs/9699919799/utilities/echo.html), et varie en pratique entre les shells communs (le comportement de ash et dash est différent de bash avec une config par défaut, ce qui est différent de bash avec l'option 'xpg_echo' activée). –
- 1. Java 1.5 ligne de commande Mot de passe Masking
- 2. Ligne de commande Décryptage GPG avec C# - mot de passe?
- 3. Utiliser un sous-processus pour envoyer un mot de passe
- 4. Outils de ligne de commande dans Cocoa
- 5. Script de ligne de commande pour créer un mot de passe utilisateur
- 6. Comment répondre aux invites de mot de passe avec exec()
- 7. Comment spécifier un mot de passe sur la ligne de commande d'un package SSIS exécuter
- 8. Outils d'édition vidéo en ligne de commande
- 9. ligne de commande linux, mot de passe protéger le fichier en utilisant le script
- 10. Mot de passe et confirmer le mot de passe
- 11. Hibernate JPA vers les outils de ligne de commande DDL
- 12. Comment exécuter les outils de ligne de commande Android?
- 13. Envoyer un mail via la ligne de commande et GMail
- 14. Xcode: Outils de ligne de commande UNIX Installation
- 15. Sécuriser les moyens de réinitialiser le mot de passe ou de donner un ancien mot de passe
- 16. Comment puis-je décoder (avec succès) un mot de passe codé à partir de la ligne de commande openSSL?
- 17. Cryptage de mot de passe
- 18. Envoyer des commandes à d'autres programmes de ligne de commande
- 19. accéder aux arguments de ligne de commande avec gdb
- 20. Pourquoi svn de cygwin demande un mot de passe?
- 21. envoyer des valeurs à partir de la ligne de commande?
- 22. Ligne de commande PHP: Comment lire un mot de passe tapé sans afficher les caractères tapés sur la console?
- 23. Formulaires de mot de passe multiples + complétion de mot de passe
- 24. tissu et svn mot de passe
- 25. mettre en place un mot de passe!
- 26. Envoyer un mot de passe en toute sécurité en utilisant gwt et le moteur de l'application?
- 27. des outils de requête de port COM de ligne de commande?
- 28. Comment ajouter un mot de passe à une clé privée OpenSSH générée sans mot de passe?
- 29. Traitement de l'authentification par mot de passe sur un réseau
- 30. Accéder aux arguments de la ligne de commande dans C
Cela dépend fortement de la façon dont l'outil que vous souhaitez appeler accepte les mots de passe. Par exemple, 'ssh' l'accepte de stdin, s'il s'agit d'un terminal. – khachik
Est-ce que 'sudo' serait utile? –