Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Benutzerkennwort auslesen ?? (https://www.delphipraxis.net/116819-benutzerkennwort-auslesen.html)

kuba 7. Jul 2008 09:04


Benutzerkennwort auslesen ??
 
Hallo,

ich möchte das Kennwort eines Benutzers auslesen um damit ein Programm zu starten (RunAs).
Bisher habe ich keine Möglichkeit gefunden an das Kennwort heranzukommen, hat jemand eine Idee ?

KUBA

SirThornberry 7. Jul 2008 09:06

Re: Benutzerkennwort auslesen ??
 
Es ist nicht möglich das Kennwort auszulesen weil es in dein meisten Fällen gar nicht gespeichert wird sondern nur eine aus dem Kennwort generierte Zeichenfolge.

Luckie 7. Jul 2008 09:13

Re: Benutzerkennwort auslesen ??
 
Zitat:

Zitat von kuba
Hallo,

ich möchte das Kennwort eines Benutzers auslesen um damit ein Programm zu starten (RunAs).
Bisher habe ich keine Möglichkeit gefunden an das Kennwort heranzukommen, hat jemand eine Idee ?

KUBA

Ähm, hast du dir mal überlegt, was es für die Sicherheit bedeuten würden, wenn man so einfach das Kennwort auslesen könnte? Wenn du das könntest, dann könnte das jeder Malware erst recht.

chaosben 7. Jul 2008 09:15

Re: Benutzerkennwort auslesen ??
 
Zitat:

Zitat von SirThornberry
Es ist nicht möglich das Kennwort auszulesen

... es sei denn, man registriert einen eigenen Netzwerk-Provider. Dann bekommt man bei der System-Anmeldung das Kennwort im Klartext geliefert.

kuba 7. Jul 2008 09:25

Re: Benutzerkennwort auslesen ??
 
OK, OK ...

Der Benutzer ist bereits am Computer angemeldet und ich möchte in "seinem Namen" ein Programm starten.
Jemand eine Idee wie man das realisieren könnte ?

KUBA

Luckie 7. Jul 2008 09:29

Re: Benutzerkennwort auslesen ??
 
Lass den Benutzer das Kennwort eintippen, wenn dein Programm gestartet werden soll.

Sherlock 7. Jul 2008 09:37

Re: Benutzerkennwort auslesen ??
 
Da muss es auch andere Möglichkeiten geben, wie funktionieren denn single-sign-on-Systeme? Da wird doch auch das Windowskonto verwendet.

Braucht man dafür ActiveDirectory oder sowas?

Edit: http://de.wikipedia.org/wiki/Single_Sign-On

Sherlock

RavenIV 7. Jul 2008 09:42

Re: Benutzerkennwort auslesen ??
 
Zitat:

Zitat von kuba
OK, OK ...

Der Benutzer ist bereits am Computer angemeldet und ich möchte in "seinem Namen" ein Programm starten.
Jemand eine Idee wie man das realisieren könnte ?

KUBA

Wenn der Benutzer angemeldet ist und es wird ein Programm gestartet, läuft es immer in seinem Conext.
D.h. es wird "in seinem Namen" gestartet.

Anderst sieht es aus, wenn ein Dienst ein anderes Programm starten soll.
Der Dienst wird vom Administrator installiert und läuft (meistens) mit dem System-Konto.
Da SYSTEM jedoch (fast) alle Rechte hat, kann der Dienst auch in den Benutzerkontext (Eigene Dateien) schreiben.

Was willst Du denn genau machen?

kuba 7. Jul 2008 10:13

Re: Benutzerkennwort auslesen ??
 
Zitat:

Zitat von Luckie
Lass den Benutzer das Kennwort eintippen, wenn dein Programm gestartet werden soll.

Der Benutzer kennt sein Kennwort evtl. nicht ! (Autom. Anmeldung)

KUBA

kuba 7. Jul 2008 10:18

Re: Benutzerkennwort auslesen ??
 
Zitat:

Zitat von RavenIV

Was willst Du denn genau machen?

Ich habe einen Systemdienst programmiert, dieser prüft ob ein bestimmter Benutzer angemeldet ist. Falls der Benutzer angemeldet ist soll ein Programm gestartet werden (Mit benutzerrechten). Mit diesem Programm soll der Benutzer dann arbeiten.

KUBA

RavenIV 7. Jul 2008 10:25

Re: Benutzerkennwort auslesen ??
 
Wenn der Benutzer automatisch angemeldet wird, wozu dann die Prüfung, ob er angemeldet ist?

Wie wäre es mit "Autostart" oder mit "Run" in der Registry?
Dann wird das Programm automatisch gestartet, wenn sich der Benutzer anmeldet.

Beides kannst Du für den Userkontext beschränken.
Jeder User hat ein eigenes User-Verzeichnis mit eigenem Startmenu.
Und der Run-Eintrag kann auch in den Benutzerkontext der Registry geschrieben werden.

kuba 7. Jul 2008 10:51

Re: Benutzerkennwort auslesen ??
 
Zitat:

Zitat von RavenIV
Wenn der Benutzer automatisch angemeldet wird, wozu dann die Prüfung, ob er angemeldet ist?

Es könnte sein, dass sich zwischendurch jemand anderes anmeldet !

Zitat:

Zitat von RavenIV
Wie wäre es mit "Autostart" oder mit "Run" in der Registry?
Dann wird das Programm automatisch gestartet, wenn sich der Benutzer anmeldet.

Beides kannst Du für den Userkontext beschränken.
Jeder User hat ein eigenes User-Verzeichnis mit eigenem Startmenu.
Und der Run-Eintrag kann auch in den Benutzerkontext der Registry geschrieben werden.

Alle Autostartmechanismen sind deaktiviert...

KUBA

RavenIV 7. Jul 2008 10:55

Re: Benutzerkennwort auslesen ??
 
Zitat:

Zitat von kuba
Es könnte sein, dass sich zwischendurch jemand anderes anmeldet !

Dann muss der aber schon so clever sein und das Auto-Login unterbinden.
Das geht nämlich nur, wenn man die richtige Taste kurz vor dem Auto-Anmelden drückt.

Zitat:

Zitat von kuba
Alle Autostartmechanismen sind deaktiviert...

Wie deaktiviert man das "Run" aus der Registry?

sakura 7. Jul 2008 11:02

Re: Benutzerkennwort auslesen ??
 
Zitat:

Zitat von RavenIV
Wie deaktiviert man das "Run" aus der Registry?

Gruppenrichtlinien (AD).

Ansonsten muss Du Dich damit abfinden, dass Du das Kennwort nicht auslesen kannst. Du solltest Dir also einen anderen Ansatz überlegen und Dein Problem somit neu überdenken. Evtl. hast Du gar keines ;)

...:cat:...

generic 7. Jul 2008 11:09

Re: Benutzerkennwort auslesen ??
 
sso-system arbeiten mit einen authentifizierungsserver z.b. kerberos.
dort werden tickets erzeugt mit welchen ein prozess in den usercontext impersonated werden kann.
also alles ohne usename/passwort.

funktionen die genutzt werden (teilmenge):
InitializeSecurityContext
AcquireCredentialsHandle
AcceptSecurityContext
CompleteAuthToken
ImpersonateSecurityContext

damit kannst du ja mal auf das msdn los gehen.

mkinzler 7. Jul 2008 11:28

Re: Benutzerkennwort auslesen ??
 
Oder du klinckst dich in die GINA-Chain ein.

kuba 7. Jul 2008 11:30

Re: Benutzerkennwort auslesen ??
 
Zitat:

Zitat von RavenIV
Wie deaktiviert man das "Run" aus der Registry?

The RestrictRun subkey contains a list of programs that restricted users can still run. This list is used only when the value of the RestrictRun entry is 1.

KUBA

PS: Ich versuche einen anderen Ansatz, vielen Dank für die Tips !!

Apollonius 7. Jul 2008 12:25

Re: Benutzerkennwort auslesen ??
 
Zum Starten des Programms kannst du CreateProcessAsUser verwenden, dazu brauchst du allerdings das Token. Falls der Benutzer der aktive ist, erhältst du es mit WTSQueryUserToken.

kuba 7. Jul 2008 13:54

Re: Benutzerkennwort auslesen ??
 
Zitat:

Zitat von Apollonius
Zum Starten des Programms kannst du CreateProcessAsUser verwenden, dazu brauchst du allerdings das Token. Falls der Benutzer der aktive ist, erhältst du es mit WTSQueryUserToken.

Das hört sich sehr gut an !!
Doch woher bekomme ich das Kennwort ? Oder brauche ich das gar nicht ?

KUBA

Apollonius 7. Jul 2008 13:56

Re: Benutzerkennwort auslesen ??
 
Das brauchst du nicht, allerdings das TCB-Privileg, was normalerweise nur System hat.

kuba 7. Jul 2008 14:11

Re: Benutzerkennwort auslesen ??
 
Hört sich auch sehr gut an !!! :wink:

Kann mir jemand ein kleines Beispiel posten ?

KUBA

generic 7. Jul 2008 14:32

Re: Benutzerkennwort auslesen ??
 
Zitat:

Zitat von mkinzler
Oder du klinckst dich in die GINA-Chain ein.

Gibt es die unter Vista noch?
Ich meine gehört zu haben, dass das alles überarbeitet wurde.

kuba 7. Jul 2008 14:42

Re: Benutzerkennwort auslesen ??
 
Beispiel hab ich schon gefunden:

Delphi-Quellcode:
uses
  Windows, SvcMgr,
  JwaWtsApi32;

...

var hToken: THandle;
  si: _STARTUPINFOA;
  pi: _PROCESS_INFORMATION;
begin
  ZeroMemory(@si, SizeOf(si));
  si.cb := SizeOf(si);
  si.lpDesktop := nil;
 
  if WTSQueryUserToken(WtsGetActiveConsoleSessionID, hToken) then
  begin
    if CreateProcessAsUser(hToken, nil, 'cmd.exe', nil, nil, False,
      CREATE_NEW_CONSOLE or CREATE_NEW_PROCESS_GROUP, nil,
      nil, si, pi) then
    begin
      // Do some stuff
    end;
  end;
  Self.DoStop;
end;
Hab mich mit den Jedi's noch nicht beschäftigt :gruebel:

KUBA

christian_u 8. Jul 2008 10:49

Re: Benutzerkennwort auslesen ??
 
Ich mach das einfach so, das ich in den Lokalen Anwendungsdaten des benutzerkontos eine Einstellungsdatei erzeuge. Wenn die da ist ist auch der richtige Benutzer angemeldet. Angelegt wird die einmalig durch eingabe des Passworts.

Luckie 8. Jul 2008 10:54

Re: Benutzerkennwort auslesen ??
 
Zitat:

Zitat von kuba
Beispiel hab ich schon gefunden:

[..]

Hab mich mit den Jedi's noch nicht beschäftigt :gruebel:

Ja und jetzt? Hast du Problem mit dem Code oder was willst du uns jetzt sagen? Wenn du Probleme mit dem Code hast, wäre es sehr hilfreich das Problem mal näher zu schildern.

Apollonius 8. Jul 2008 11:03

Re: Benutzerkennwort auslesen ??
 
Zitat:

Zitat von christian_u
Ich mach das einfach so, das ich in den Lokalen Anwendungsdaten des benutzerkontos eine Einstellungsdatei erzeuge. Wenn die da ist ist auch der richtige Benutzer angemeldet. Angelegt wird die einmalig durch eingabe des Passworts.

Das funktioniert nicht, wenn das Programm ein Service ist.

hToken solltest du mit CloseHandle wieder freigeben.

kuba 10. Jul 2008 09:30

Re: Benutzerkennwort auslesen ??
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von kuba
Beispiel hab ich schon gefunden:

[..]

Hab mich mit den Jedi's noch nicht beschäftigt :gruebel:

Ja und jetzt? Hast du Problem mit dem Code oder was willst du uns jetzt sagen? Wenn du Probleme mit dem Code hast, wäre es sehr hilfreich das Problem mal näher zu schildern.

Hy,

habe Probleme mit den JEDI´s. Ich hab die JEDI´s nach dieser Anleitung installiert: Anleitung

Ich bekomme schon Probleme wenn ich die erzeugte JwaWindows.dcu unter "uses" einbinde.
Beim Kompilieren erhalte ich Fehlermeldungen in meinem bereits funktionierendem Code.

Gibt es bei der Verwendung der JWSCL etwas besonderes zu beachten ?

KUBA

Dezipaitor 10. Jul 2008 10:01

Re: Benutzerkennwort auslesen ??
 
Du verwendest wohl auch Windows.pas oder?
Die Reihenfolge der Units in der Uses Anweisung spielt dabei eine Rolle, welche Funktion entweder aus JwaWindows oder Windows.pas verwendet wird.
Die Reihenfolge "Windows, JwaWindows" lässt die Funktionen aus JwaWindows verwenden.

Wenn du den Funktionen jedoch den Unitname mit einem Punkt voranstellst, dann wird die Funktion direkt aus der entsprechenden Unit verwendet.

kuba 10. Jul 2008 10:05

Re: Benutzerkennwort auslesen ??
 
Zitat:

Zitat von Dezipaitor
Du verwendest wohl auch Windows.pas oder?
Die Reihenfolge der Units in der Uses Anweisung spielt dabei eine Rolle, welche Funktion entweder aus JwaWindows oder Windows.pas verwendet wird.
Die Reihenfolge "Windows, JwaWindows" lässt die Funktionen aus JwaWindows verwenden.

Wenn du den Funktionen jedoch den Unitname mit einem Punkt voranstellst, dann wird die Funktion direkt aus der entsprechenden Unit verwendet.


Wie soll das aussehen, so ?

Delphi-Quellcode:
.JWAWindows function MeineFunktion;
begin
end;
KUBA

Luckie 10. Jul 2008 10:07

Re: Benutzerkennwort auslesen ??
 
Nein:
Delphi-Quellcode:
Unitname.Funktion
Ich denke, du solltest du mal mit den Grundlagen auseinandersetzen.

kuba 10. Jul 2008 10:28

Re: Benutzerkennwort auslesen ??
 
Zitat:

Zitat von Luckie
Nein:
Delphi-Quellcode:
Unitname.Funktion
Ich denke, du solltest du mal mit den Grundlagen auseinandersetzen.

Danke für den Tip !

:oops:

KUBA

Dezipaitor 10. Jul 2008 10:38

Re: Benutzerkennwort auslesen ??
 
Ich meinte natürlich dem Unitname den Punkt dahinter stellen - nicht voranstellen :wall:

kuba 10. Jul 2008 11:22

Re: Benutzerkennwort auslesen ??
 
@Ich denke, du solltest du mal mit den Grundlagen auseinandersetzen.

Das tue ich gerade, learning by doing ...

Danke nochmal für den Tip ! Ich mache in letzter Zeit gute Fortschritte, manchmal ist es sehr hilfreich wenn man jemanden fragen kann und nicht suchen muss. :love:

KUBA

Dezipaitor 10. Jul 2008 11:55

Re: Benutzerkennwort auslesen ??
 
Zitat:

Zitat von kuba
Danke nochmal für den Tip ! Ich mache in letzter Zeit gute Fortschritte, manchmal ist es sehr hilfreich wenn man jemanden fragen kann und nicht suchen muss. :love:

Aber es sollte eigentlich andersherum sein. Durch Suchen bist du viel schneller am Ziel!

Larsi 10. Jul 2008 12:01

Re: Benutzerkennwort auslesen ??
 
Es gibt auch einen Start -> Ausführen Befehl von Windows der das Passwort ausliest.

phXql 10. Jul 2008 12:05

Re: Benutzerkennwort auslesen ??
 
Klar. Und wie heißt der?

Luckie 10. Jul 2008 12:06

Re: Benutzerkennwort auslesen ??
 
Zitat:

Zitat von Larsi
Es gibt auch einen Start -> Ausführen Befehl von Windows der das Passwort ausliest.

Jetzt bin ich aber mal gespannt.

Dezipaitor 10. Jul 2008 12:29

Re: Benutzerkennwort auslesen ??
 
Die Spannung zereisst mich fast :duck:

kuba 10. Jul 2008 13:22

Re: Benutzerkennwort auslesen ??
 
Zitat:

Zitat von Dezipaitor
Aber es sollte eigentlich andersherum sein. Durch Suchen bist du viel schneller am Ziel!

Meistens ist das auch so, nur wenn ich festgefahren bin muss ich mal fragen ... :mrgreen:

KUBA

PS: Start/Ausführen rundll32 user32.dll LockWorkStation %windir% :wiejetzt:

mkinzler 10. Jul 2008 13:26

Re: Benutzerkennwort auslesen ??
 
Das Sperrt den Bildschirm, gibt dir aber nicht das Passwort des Benutzers zurück.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:18 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz