如何在 osx 中访问本地用户帐户密码的加密值?是否可以检查它甚至将其复制到另一个帐户?
答案1
哈希值存在于/var/db/shadow/hash/
10.6 及更早版本中,但它们存储/var/db/dslocal/nodes/Default/users/username.plist
在 10.7 和 10.8 中。
您可以使用以下方式打印哈希数据戴夫·格罗尔( sudo dave -s $USER
) 或者类似这样的内容:
sudo defaults read /var/db/dslocal/nodes/Default/users/$USER.plist ShadowHashData | tr -dc '0-9a-f ' | xxd -p -r | plutil -convert xml1 - -o -
如果启用了自动登录,登录钥匙串的密码也会/etc/kcpassword
以XOR密码加密的形式存储。
sudo ruby -e 'key = [125, 137, 82, 35, 210, 188, 221, 234, 163, 185, 31]; IO.read("/etc/kcpassword").bytes.each_with_index { |b, i| break if key[i % key.size]==(b); print [b ^ key[i % key.size]].pack("U*") }'
答案2
我对此了解不多,但从我所能收集的信息来看opensnoop
:
login
访问本地目录服务(可能与某些 Kerberos 内容相关 —— 也许这是本地目录的底层实现,它读取/Library/Preferences/edu.mit.Kerberos
、/etc/krb5.conf
等/usr/etc/krb5.conf
)。
dscl
然后,目录服务命令行实用程序cd Local/Default/Users/yourusername
会read
显示通常的与 unixy 帐户相关的内容,另外还有:(GeneratedUID: 1A5EF9B7-4DB6-4C01-919A-xxxxx
不知道其含义,所以我稍微审查了一下)——您也可以通过 读取此Accounts.prefPane
UUID System Preferences.app
。
与文件名匹配/private/var/db/shadow/hash/
也可以通过 访问login
!
我想最好的办法是重命名/复制带有该名称的文件GeneratedUID
,或者更改目录服务中的引用。
包括我所有的“研究”,以便您可以追溯我的步骤并允许反驳。
我没有时间删除和恢复我的用户帐户,所以你现在只能靠自己了。祝你好运。
结论:打开Accounts.prefPane
,检查您的UUID
(右键单击列表中的用户)并在中查找同名文件/private/var/db/shadow/hash/
。不知道它是否有效根本。 祝你好运。