Passwort: Nein, dies wird aus Sicherheitsgründen nicht beibehalten - es wird verwendet und dann verworfen. Sie könnten das verschlüsselte Passwort für diesen Benutzer aus der Registry abrufen, vorausgesetzt, dass Sie genügend Privilegien haben, und entschlüsseln Sie es dann mit etwas wie Rainbow-Tabellen , aber das ist extrem ressourcenintensiv und zeitaufwändig mit den aktuellen Methoden. Viel besser, den Benutzer aufzufordern.
Alternativ, wenn Sie eine Art von Single-Sign-on-System wie Novell implementieren möchten, sollten Sie dies entweder über einen GINA (Pre-Vista) oder einen Credential Provider (Vista) tun, was zu Ihrem Code führt gegeben den Benutzernamen und das Passwort bei der Anmeldung, die einzige Zeit, zu der das Passwort verfügbar ist.
Für den Benutzernamen ist es einfach, den aktuellen Benutzernamen (den Benutzer, der den Code ausführt) abzurufen: Die GetUserName-Funktion in AdvApi32.dll erledigt genau dies für Sie.
Wenn Sie als Dienst ausgeführt werden, müssen Sie sich daran erinnern, dass niemand "angemeldeter Benutzer" ist: Es gibt zu jeder Zeit mehrere, wie LocalSystem, NetworkService, SYSTEM und andere Konten, zusätzlich zu den tatsächlichen Personen . Dieser Artikel enthält Beispielcode und Dokumentation , um dies zu tun.
Sie können das Passwort eines Benutzers nicht erhalten, da es verschlüsselt ist (ganz zu schweigen davon, dass es eine Standardpraxis ist, keine Passwörter im Klartext zu speichern).
Um den Benutzernamen zu erhalten, können Sie GetUserName oder NPGetUser
GetUserName wird Ihnen den Namen, aber das Passwort erhalten Sie nicht bekommen. Es ist nicht einmal etwas, das Windows speichert, AFAIK - nur ein Hash deines Passwortes.
Je nachdem, was Sie erreichen möchten (Sie können uns ein bisschen mehr sagen ...), ist es möglich, einen angemeldeten Benutzer zu imitieren und Dinge in seinem Namen zu erledigen.
Für die vielen Kommentatoren, die glauben, dass es nicht möglich ist, das Passwort des aktuell angemeldeten Benutzers preiszugeben, siehe Dump-Klartext Passwörter der eingeloggten Benutzer , die zeigen, wie mimikatz genau das macht:
%Vor%Ich weiß nichts über das Windows-Login-Passwort ... aber Sie können Klartext-Passwörter definitiv vom Credentials-Manager abrufen. Zum Beispiel ist hier ein Programm, um das Passwort für TFS zu ziehen. In den meisten Fällen entspricht dies der Windows-Anmeldung.
%Vor%Ich habe dies als "Konsole" App unter vs 2015 mit Nuget Paket TeamFoundation ExtendedClient zusammengestellt.
Sie können den Benutzernamen mit GetUserName () erhalten, aber Sie können das Passwort nicht erhalten; Dies würde die Sicherheit für Dummies 101 verletzen.
re "Network Password Recovery" -Tool
Windows (bis zu XP) speichert eine Kopie des Passwd mit einer einfacheren, einfach zu zerbrechenden Verschlüsselung - für die Verbindung mit älteren LanManager-Netzwerkfreigaben.
Die Tools versuchen im Allgemeinen alle möglichen Passwörter dagegen, wobei Rainbow-Tabellen (vorkalibrierte verschlüsselte Versionen von Wörterbuchwörtern) dies beschleunigen.
In XPsp2 / 3 Vista wurde diese Funktion entfernt. Die neue Verschlüsselung ist viel schwieriger zu knacken und benötigt viele Stunden, um alle möglichen Werte auszuprobieren. Es gibt Online-Dienste, die es auf einer großen Anzahl von Computern ausführen, um Ihnen eine schnelle Antwort zu einem Preis zu geben.
Um das ursprüngliche Poster zu beantworten, speichern Sie das Passwort im Allgemeinen nicht und vergleichen es mit dem, was der Benutzer eingegeben hat. Sie verschlüsseln das Passwort und speichern es. Um ein Passwort zu überprüfen, führen Sie die gleiche Verschlüsselung für jeden Benutzer durch und vergleichen Sie das. Es ist im Allgemeinen unmöglich, von dem verschlüsselten Formular zurück zu dem echten Passwort zu gelangen.
BEARBEITEN Ich vermute, dass du hier die falsche Frage stellst - warum willst du das Passwort, was versuchst du zu verifizieren und wann?
Tags und Links visual-c++ winapi mfc