Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
sbmzhcn
V2EX  ›  Linux

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

  •  
  •   sbmzhcn · Nov 12, 2015 · 3032 views
    This topic created in 3833 days ago, the information mentioned may be changed or developed.

    网上有段代码生成密码的

    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 replies    2015-11-21 10:04:27 +08:00
    typcn
        1
    typcn  
       Nov 12, 2015
    如果 /var/lib/radom_salt 是这个脚本, cat /var/lib/radom_salt 会返回你这个脚本的内容
    如果不是,会返回 "cat: /var/lib/radom_salt: No such file or directory" 的 MD5
    cloudzhou
        2
    cloudzhou  
       Nov 12, 2015
    cat /proc/sys/kernel/random/uuid | md5sum
    47jm9ozp
        3
    47jm9ozp  
       Nov 12, 2015
    脚本不是先
    head -c 512 /dev/urandom > /var/lib/radom_salt

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

    要先更新这个文件然后再 md5sum 啊……你直接来后面这句干嘛
    mcfog
        4
    mcfog  
       Nov 12, 2015
    LZ 你去查下 /dev/urandom 是什么就知道为什么这样了
    stillness
        5
    stillness  
       Nov 12, 2015
    @mcfog /dev/urandom 还是能产生随机内容的,没那么不堪。

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

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

    现在比较明白了,每个 VPS 生成的 /var/lib/radom_salt 应该都不一样的,黑客应该不可能知道 /var/lib/radom_salt 的内容。 所以账号泄露应该还有其它原因。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1021 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 19:18 · PVG 03:18 · LAX 12:18 · JFK 15:18
    ♥ Do have faith in what you're doing.