Abrufen des Benutzernamens / Kennworts des angemeldeten Benutzers in Windows

8

Gibt es eine API, um den Namen und das Passwort des aktuell angemeldeten Benutzers in Windows abzurufen?

Vielen Dank im Voraus.

    
dennisV 22.09.2008, 07:18
quelle

10 Antworten

28

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.

    
James Sutherland 22.09.2008, 07:29
quelle
4

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

    
MrValdez 22.09.2008 07:22
quelle
3

Ich würde es als eine große Sicherheitslücke betrachten, wenn das möglich wäre!

    
Chii 22.09.2008 07:21
quelle
3

Beachten Sie, wie es gemacht wird, aber "Network Password Recovery" Tool von Ссылка scheint das Passwort zu erhalten von einem Cache.

    
Kishork 22.09.2008 07:29
quelle
2

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.

    
Assaf Lavie 22.09.2008 07:22
quelle
2

Ausführliche Informationen zur Authentifizierung in der Windows-API finden Sie auf MSDN: Ссылка

    
Ged Byrne 22.09.2008 07:30
quelle
2

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%     
Miles Wolbe 25.07.2015 19:39
quelle
1

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.

    
John Henckel 26.07.2016 20:25
quelle
0

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.

    
Mike Thompson 22.09.2008 07:23
quelle
0

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?

    
Martin Beckett 22.09.2008 15:58
quelle

Tags und Links