python,从阴影获取加密的用户密码

我正在尝试获取加密的系统用户密码,以便将其与另一个sha512加密密码进行比较.我试过pwd,但似乎这个模块不处理用户密码,或者用过的系统对它来说太“现代”(debian squeeze).这是我获得的:

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模块(example here)中使用它,我得到了异常“抱歉,目前不支持阴影密码”,这是正常的,因为我的pw_passwd =’x’.

是否有另一种正确的方法来获取散列密码,或者我应该将我自己的解析器用于/ etc / shadow?

最佳答案 试试
spwd module

平台:Unix

版本2.5中的新功能.

该模块提供对Unix影子密码数据库的访问.它适用于各种Unix版本.

您必须具有足够的权限才能访问影子密码数据库(这通常意味着您必须是root用户).

影子密码数据库条目报告为类似元组的对象,其属性对应于spwd结构的成员(下面的属性字段,请参阅):

>>> import spwd
>>> spwd.getspnam('root')
spwd.struct_spwd(sp_nam='root', sp_pwd='!', sp_lstchg=15238, sp_min=0, sp_max=99999, sp_warn=7, sp_inact=-1, sp_expire=-1, sp_flag=-1)

请记住,您需要具有/ etc / shadow的读取权限才能使其正常工作

点赞