web-dev-qa-db-ja.com

Macユーザーアカウントのパスワードはどこに保存されますか?

Osxでローカルユーザーアカウントのパスワードの暗号化された値にアクセスするにはどうすればよいですか?それをチェックしたり、別のアカウントにコピーしたりすることは可能ですか?

6
user51799

ハッシュは10.6以前では_/var/db/shadow/hash/_にありましたが、10.7と10.8では_/var/db/dslocal/nodes/Default/users/username.plist_に格納されています。

DaveGrohl (_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 -_

自動ログインが有効になっている場合、ログインキーチェーンのパスワードもXOR暗号で暗号化された_/etc/kcpassword_に保存されます。

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.include?(b); print [b ^ key[i % key.size]].pack("U*") }'

6
Lri

私はそれについてあまり知りませんが、opensnoopを使用して収集できるものから:

loginはローカルディレクトリサービスにアクセスします(おそらくいくつかのKerberos関連に関連しています-おそらくそれはローカルディレクトリの基礎となる実装であり、/Library/Preferences/edu.mit.Kerberos/etc/krb5.conf/usr/etc/krb5.confなどを読み取ります。)。

dscl、ディレクトリサービスコマンドラインユーティリティ、次にcd Local/Default/Users/yourusernamereadは、通常のunixyアカウント関連のものを明らかにします。さらに:GeneratedUID: 1A5EF9B7-4DB6-4C01-919A-xxxxx(意味がわかりません)。 、少し検閲しました)-Accounts.prefPaneSystem Preferences.appからこのUUIDを読み取ることもできます。

これは/private/var/db/shadow/hash/のファイル名と一致しますloginからもアクセスされます!

最善の策は、GeneratedUID名のファイルの名前を変更/コピーするか、ディレクトリサービスの参照を変更することだと思います。

あなたが私の歩みをたどり、反証可能性を可能にするために、私のすべての「研究」を含めました。

ユーザーアカウントをゴミ箱に移動して復元する時間がないので、あなたは今あなた自身でいます。幸運を。

[〜#〜] tldr [〜#〜]Accounts.prefPaneを開き、UUIDを確認して(リストでユーザーを右クリック)、次の方法でファイルを探します。 /private/var/db/shadow/hash/のその名前。それが機能するかどうかわからないまったく。幸運を。

4
Daniel Beck