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

时间:2012-11-25 15:40:28

标签: python crypt pwd

我正在尝试获取加密的系统用户密码,以便将其与另一个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自己的解析器?

2 个答案:

答案 0 :(得分:2)

尝试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的读取权限才能使其正常工作

答案 1 :(得分:0)

在Google上搜索条款" python"和"影子"返回spwd库作为第一个结果。

由于引入了影子密码以防止普通用户暴力攻击密码文件,因此您只能使用root等特权用户帐户访问带阴影的密码。