我正在编写一个python应用程序,它使用命令行实用程序(propietary,因此无法修改)来完成其部分工作。问题是我必须将密码作为命令行参数传递给工具,任何做'ps ax'的用户都可以轻松看到。如何从python(或shell脚本)中安全地将密码发送到命令行工具?
答案 0 :(得分:5)
如果应用程序具有某种交互模式,您可以使用类似pyexpect的内容。
如果它只接受命令行上的密码,应用程序被设计为容易受到'ps ax'的影响,您希望如何克服原始的糟糕设计?它是专属的,投诉应该是有罪的^ H ^ H ^ H ^ H ^ H ^ Hauthor。
答案 1 :(得分:2)
如果只在命令行上接受密码,那你就差点不走运了。您是否绝对确定没有其他方式发送密码?如果您可以通过流程stdin
发送它,您可以通过管道与它通信,并以这种方式安全地发送密码。
答案 2 :(得分:0)
您可以通过使用加密密码参数并传递加密密码来获得更高的安全性,并且程序可以对其进行解密。至少没有漂浮的纯文本密码。我在通过另一个进程启动进程并传递参数时使用了此方法。但是在你的情况下可能不太可行。
答案 3 :(得分:0)
编写另一个python脚本,它将使用getpass.getpass()
从命令提示符接受密码并将其存储在变量中。然后使用该密码作为参数的变量从脚本中调用该命令。
答案 4 :(得分:0)
您可以强制使用内嵌shell包装,如下所示
somecommand --password=$(echo "Enter Password: " >&2;read -s PASSWORD;echo $PASSWORD)
密码输入将在执行前填充命令
密码不会出现在您的shell历史记录中
但它会出现在你的' ps'输出
答案 5 :(得分:0)
在bash中这是怎么回事:
command_asking_for_password < <(command_that_prints_a_password; printf "\r")