V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
sbmzhcn
V2EX  ›  Linux

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

  •  
  •   sbmzhcn · 2015-11-12 19:19:27 +08:00 · 2562 次点击
    这是一个创建于 3299 天前的主题,其中的信息可能已经有所发展或是发生改变。

    网上有段代码生成密码的

    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 都这样的,还是怎么回事。

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

    13 条回复    2015-11-21 10:04:27 +08:00
    typcn
        1
    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
        2
    cloudzhou  
       2015-11-12 19:36:13 +08:00
    cat /proc/sys/kernel/random/uuid | md5sum
    ooxxcc
        3
    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
        4
    mcfog  
       2015-11-12 19:38:44 +08:00
    LZ 你去查下 /dev/urandom 是什么就知道为什么这样了
    nirocfz
        5
    nirocfz  
       2015-11-12 20:03:20 +08:00
    @mcfog /dev/urandom 还是能产生随机内容的,没那么不堪。

    这个问题难道不是因为只生成了一次 /var/lib/radom_salt 文件,因为那个 if 判断,文件存在就不在生成新的了。
    msg7086
        6
    msg7086  
       2015-11-12 21:29:11 +08:00
    猜到用户名就能算密码?咋算的?难不成你还把 salt 发给别人了?
    ryd994
        7
    ryd994  
       2015-11-13 06:21:57 +08:00 via Android
    1. 谁让你用 md5 来着
    2. 这就是个教科书级的错误实现,重用 salt
    mengzhuo
        8
    mengzhuo  
       2015-11-13 08:07:29 +08:00 via iPhone
    salt 也不能重用啊!
    像我司都是有特定算法把用户的 uuid 的一部分拿来做 salt 的
    jings
        9
    jings  
       2015-11-13 13:35:41 +08:00
    tr -dc "\041"-"\176" < /dev/urandom |head -c 60|md5sum
    jings
        10
    jings  
       2015-11-13 13:38:36 +08:00
    openssl rand -hex 10
    rootit
        11
    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
        12
    Arthur2e5  
       2015-11-16 13:12:46 +08:00
    @typcn 不会。 PIPE 的重定向对象是 stdout ,而 cat 报错在 stderr 。
    sbmzhcn
        13
    sbmzhcn  
    OP
       2015-11-21 10:04:27 +08:00
    我有个 VPS 上的 FTP 账号密码全部被黑客破解,我怀疑是这个脚本的问题。
    get_password username 如果 username 不变密码就不会变。

    现在比较明白了,每个 VPS 生成的 /var/lib/radom_salt 应该都不一样的,黑客应该不可能知道 /var/lib/radom_salt 的内容。 所以账号泄露应该还有其它原因。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1221 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 18:20 · PVG 02:20 · LAX 10:20 · JFK 13:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.