我正在尝试获取加密的系统用户密码,以便将其与另一个 sha512 加密的密码进行比较。我试过 pwd,但似乎这个模块不处理用户密码,或者使用的系统对它来说“太现代了”(debian 挤压)。这是我得到的:
import pwd
username = 'root' #or another user
pwd_struct = pwd.getpwnam(username)
print pwd_struct
>>>pwd.struct_passwd(pw_name='root', pw_passwd='x', pw_uid=0, pw_gid=0, pw_gecos='root', pw_dir='/root', pw_shell='/bin/bash')
其中 pw_passwd='x' 而不是 sha512 字符串。
打算将此与 python crypt 模块一起使用(例如此处),我得到了异常“对不起,目前不支持影子密码”,这是正常的,因为我的 pw_passwd = 'x'。
是否有另一种获取散列密码的正确方法,或者我应该为 /etc/shadow 使用自己的解析器?