cat /var/lib/radom_salt | md5sum 不生成随机字符

2015-11-12 19:19:27 +08:00
 sbmzhcn

网上有段代码生成密码的

function get_password() {
# Check whether our local salt is present.
SALT=/var/lib/radom_salt
if [ ! -f "$SALT" ]
then
head -c 512 /dev/urandom > "$SALT"
chmod 400 "$SALT"
fi
password=`(cat "$SALT"; echo $1) | md5sum | base64`
echo ${password:0:13}
}

cat /var/lib/radom_salt | md5sum 这段代码生成的每次结果都一样的,所以上面的代码,只要知道参数,密码都是唯一的,这是所有的 linux 都这样的,还是怎么回事。

自己写的代码用到它了,结果出现严重问题,只要猜到用户名,我的密码就能算出来。

2582 次点击
所在节点    Linux
13 条回复
typcn
2015-11-12 19:29:22 +08:00
如果 /var/lib/radom_salt 是这个脚本, cat /var/lib/radom_salt 会返回你这个脚本的内容
如果不是,会返回 "cat: /var/lib/radom_salt: No such file or directory" 的 MD5
cloudzhou
2015-11-12 19:36:13 +08:00
cat /proc/sys/kernel/random/uuid | md5sum
ooxxcc
2015-11-12 19:36:15 +08:00
脚本不是先
head -c 512 /dev/urandom > /var/lib/radom_salt

然后才
cat /var/lib/radom_salt | md5sum

要先更新这个文件然后再 md5sum 啊……你直接来后面这句干嘛
mcfog
2015-11-12 19:38:44 +08:00
LZ 你去查下 /dev/urandom 是什么就知道为什么这样了
nirocfz
2015-11-12 20:03:20 +08:00
@mcfog /dev/urandom 还是能产生随机内容的,没那么不堪。

这个问题难道不是因为只生成了一次 /var/lib/radom_salt 文件,因为那个 if 判断,文件存在就不在生成新的了。
msg7086
2015-11-12 21:29:11 +08:00
猜到用户名就能算密码?咋算的?难不成你还把 salt 发给别人了?
ryd994
2015-11-13 06:21:57 +08:00
1. 谁让你用 md5 来着
2. 这就是个教科书级的错误实现,重用 salt
mengzhuo
2015-11-13 08:07:29 +08:00
salt 也不能重用啊!
像我司都是有特定算法把用户的 uuid 的一部分拿来做 salt 的
jings
2015-11-13 13:35:41 +08:00
tr -dc "\041"-"\176" < /dev/urandom |head -c 60|md5sum
jings
2015-11-13 13:38:36 +08:00
openssl rand -hex 10
rootit
2015-11-15 18:05:55 +08:00
完美生成随机:
head -10 < /dev/urandom|tr -dc 'a-zA-Z0-9^&()!@.^%'|cut -c 1-15

想生成多长就 cut 多长
Arthur2e5
2015-11-16 13:12:46 +08:00
@typcn 不会。 PIPE 的重定向对象是 stdout ,而 cat 报错在 stderr 。
sbmzhcn
2015-11-21 10:04:27 +08:00
我有个 VPS 上的 FTP 账号密码全部被黑客破解,我怀疑是这个脚本的问题。
get_password username 如果 username 不变密码就不会变。

现在比较明白了,每个 VPS 生成的 /var/lib/radom_salt 应该都不一样的,黑客应该不可能知道 /var/lib/radom_salt 的内容。 所以账号泄露应该还有其它原因。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/235731

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX