Wie kann ich auf den verschlüsselten Wert eines lokalen Benutzerkontokennworts in OSX zugreifen? Wäre es möglich, es damit abzugleichen oder sogar auf ein anderes Konto zu kopieren?
Antwort1
Die Hashes waren /var/db/shadow/hash/
in 10.6 und früher enthalten, sind aber /var/db/dslocal/nodes/Default/users/username.plist
in 10.7 und 10.8 gespeichert.
Sie können die Hash-Daten ausdrucken mitDave Grohl( sudo dave -s $USER
) oder so ähnlich:
sudo defaults read /var/db/dslocal/nodes/Default/users/$USER.plist ShadowHashData | tr -dc '0-9a-f ' | xxd -p -r | plutil -convert xml1 - -o -
Wenn die automatische Anmeldung aktiviert ist, wird das Kennwort des Anmeldeschlüsselbunds zusätzlich /etc/kcpassword
mit XOR-Verschlüsselung gespeichert.
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*") }'
Antwort2
Ich weiß nicht viel darüber, aber soweit ich es herausfinden konnte opensnoop
,
login
greift auf den lokalen Verzeichnisdienst zu (möglicherweise im Zusammenhang mit Kerberos-Sachen – vielleicht ist das die zugrunde liegende Implementierung für das lokale Verzeichnis, es liest /Library/Preferences/edu.mit.Kerberos
, /etc/krb5.conf
, /usr/etc/krb5.conf
usw.).
dscl
, das Befehlszeilenprogramm des Verzeichnisdienstes, zeigt dann cd Local/Default/Users/yourusername
die read
üblichen Dinge an, die mit Unix-Konten zu tun haben, und außerdem: GeneratedUID: 1A5EF9B7-4DB6-4C01-919A-xxxxx
(ich kenne die Auswirkungen nicht, deshalb habe ich ein wenig zensiert) – Sie können diese UUID auch über Accounts.prefPane
in lesen System Preferences.app
.
Das entspricht einem Dateinamen in/private/var/db/shadow/hash/
auch zugänglich über login
!
Ich schätze, am besten benennen Sie die Dateien mit dem GeneratedUID
Namen um/kopieren sie oder ändern den Verweis im Verzeichnisdienst.
Habe meine gesamte „Recherche“ einbezogen, damit Sie meine Schritte nachvollziehen und widerlegen können.
Ich habe keine Zeit, meine Benutzerkonten zu löschen und wiederherzustellen, also sind Sie jetzt auf sich allein gestellt. Viel Glück.
Kurz zusammengefasst: Öffnen Sie Accounts.prefPane
, überprüfen Sie Ihren UUID
(klicken Sie mit der rechten Maustaste auf Ihren Benutzer in der Liste) und suchen Sie nach einer Datei mit diesem Namen in /private/var/db/shadow/hash/
. Ich weiß nicht, ob es funktioniertüberhaupt. Viel Glück.