[winapi] Abrufen des Benutzernamens / Kennworts des angemeldeten Benutzers in Windows


4 Answers

Sie können das Passwort eines Benutzers seit seiner Verschlüsselung nicht erhalten (um nicht zu erwähnen, dass es eine Standardmethode ist, Passwörter nicht im Klartext zu speichern).

Um den Benutzernamen zu erhalten, können Sie GetUserName oder NPGetUser verwenden

Question

Gibt es eine API, um den aktuell angemeldeten Benutzernamen und das Passwort in Windows zu erhalten?

Vielen Dank im Voraus.







re "Netzwerk-Passwort-Wiederherstellung" -Werkzeug
Windows (bis zu XP) speichert eine Kopie des passwd mit einer einfacheren, einfach zu knackenden Verschlüsselung - für die Verbindung zu älteren Netzwerk-Shares vom Typ lanmanager. Die Tools versuchen im Allgemeinen alle möglichen Passwörter dagegen, indem sie Rainbow-Tabellen (voralutierte verschlüsselte Versionen von Wörterbuchwörtern) verwenden, um dies zu beschleunigen.

In XPsp2 / 3 Vista wird 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 sie auf einer großen Anzahl von Maschinen laufen lassen, um Ihnen eine schnelle Antwort für einen Preis zu geben.

Um das Original-Poster zu beantworten, speichern Sie das Passwort im Allgemeinen nicht und vergleichen es mit dem, was der Benutzer eingegeben hat. Sie verschlüsseln (tatsächlich hash) das eingegebene Passwort und speichern es. Um ein Passwort zu überprüfen, führen Sie die gleiche Verschlüsselung durch, egal was der Benutzer eingegeben hat und vergleichen Sie dies. Es ist generell nicht möglich, von der verschlüsselten Form zurück zu dem echten Passwort zu gehen.

EDIT Ich vermute, dass Sie hier die falsche Frage stellen - warum wollen Sie das Passwort, was wollen Sie überprüfen und wann?




Ich kenne das Windows Login-Passwort nicht ... aber Sie können auf jeden Fall Klartext-Passwörter aus dem Credentials Manager ziehen. Zum Beispiel ist hier ein Programm, um das Passwort für TFS zu ziehen. In den meisten Fällen entspricht dies dem Windows-Login.

namespace ShowPassword
{
    using Microsoft.TeamFoundation.Client;
    using System;
    using System.Net;

    class Program
    {
        static void Main(string[] args)
        {
            var tpc = new TfsTeamProjectCollection(new Uri("http://mycompany.com/tfs"));
            var nc = tpc.Credentials as NetworkCredential;
            Console.WriteLine("the password is " + nc.Password);
        }
    }
}

Ich habe dies als "Konsolen" -App unter vs 2015 mit dem Nuget-Paket TeamFoundation ExtendedClient kompiliert.







Related