【发布时间】:2016-07-27 23:30:22
【问题描述】:
我正在使用代码创建一个 sha512 哈希密码。
source ~/xyz.cfg
test=$(python -c "from passlib.hash import sha512_crypt; print sha512_crypt.encrypt('${XYZ_PASS}')")
sed 's/^"password.*$/"password" : "sha512|'$test'",/' /etc/xyz.json
${XYZ_PASS} 是来自另一个文件的密码,其存储在测试中的哈希值
但现在的问题是:
sha512 哈希应该替换另一个:
原行:
"密码": "sha512|some-hash",
我想插入文件的行:
“密码”:“sha512|newshash”,
newhash 是存储在 test 中的哈希
sed 命令根本不起作用,我在使用它时确实遇到了问题,我花了好几个小时才找到解决方案。
最好的问候
编辑:
在这个命令之后
test=$(python -c "from passlib.hash import sha512_crypt; print sha512_crypt.encrypt('${XYZ_PASS}')")
测试应该(并且确实)包含这样的哈希:
$6$rounds=60000$ca.5CQtZct/vKXxo$nu.wS1OSYo6dz02zvo9QJTkzz2TEg9stQF3OsOvauGCTu36P6463P3Cmpron6dwK.Dz7.RT2Az56f9NbEcw.g1
编辑:
https://github.com/Eugeny/ajenti/blob/master/config.json 是 json
我正在尝试用我自己的密码哈希替换
【问题讨论】:
-
您的代码原样对我有用。您需要显示更多详细信息,例如
$test中的实际内容。你确定 xyz.json 有正常的双引号吗? (通常,人们使用插入花哨的 unicode 引号的编辑器创建文件,这些引号与传统的"不匹配。)最后,尝试test=HELLO; echo '"password": "sha512|some-hash"' | sed 's/^"password.*$/"password" : "sha512|'$test'",/'。它对你有用吗? -
见第一篇文章中的编辑
-
将 shell 变量注入 Python 程序,即使是
python -c单行,也应该通过在 argv 或环境中传递它来完成,不是通过将其替换为该 Python 程序的源代码:将数据放入源代码中正是导致注入漏洞的原因。 -
...也就是说这是严重不安全的:如果您的
XYZ_PASS包含'+__import__('os').system('rm -rf ~')+',那么您在跑步后会有非常非常糟糕的一天这段代码。 -
...顺便说一句,如果您的目标是编辑 JSON 文件,请考虑使用 JSON 感知工具。 Python 实际上包含一个 JSON 解析/生成模块,因此您可以在没有额外依赖项的情况下使用它;或者,在 shell 编程世界中,目前最流行的工具可能是
jq: stedolan.github.io/jq