AW: Passwort Char umgangen
Wie wäre es mit der Vorgehensweise ganz nach dem Prinzip: Ein Paßwort kann über das Handle des Edits und EM_SETPASSWORDCHAR nicht abgefangen werden, wenn man es gar nicht eingibt. Also das Paßwort auf einem USB-Dongle ablegen und zum Identifizieren des Users den Dongle kurz in den USB-Slot stecken lassen.
Meine Idee ist bestimmt einfältig und umständlich... Andreas |
AW: Passwort Char umgangen
Zitat:
Ich würde sogar noch weiter gehen und dem Benutzer direkt in deinem Programm eine Möglichkeit geben, das Passwort sichtbar zu machen - und wenn auch nur temporär für die jeweilige Eingabe. Wie oft habe ich mich schon über ein falsches Passwort gewundert, nur weil Caps-Lock eingeschaltet war oder das Tastaturlayout auf einer falschen Sprache stand. Das wäre alles sofort ersichtlich, wenn man das eingegebene Passwort sehen könnte. Wer das Passwort nicht sichtbar haben will, der lässt es eben bei den Sternchen. |
AW: Passwort Char umgangen
Zitat:
|
AW: Passwort Char umgangen
Hier der code einer einfachen aber sicheren Passwort Eingabekomponente.
Da es nicht von TEdit abstammt kann man es auch nichts auslesen.
Code:
Kann man natürlich erweitern, z.b. um CTRL+V für Einfügen zu unterstützen:
type
TWPGeheim = class(TCustomControl) private FText : String; protected procedure CreateParams(var Params: TCreateParams); override; procedure MouseDown(Button: TMouseButton; Shift: TShiftState;X, Y: Integer); override; public procedure Paint; override; procedure KeyPress(var Key: Char); override; property Text : String read FText write FText; end; { TWPGeheim } procedure TWPGeheim.KeyPress(var Key: Char); begin if Key=#8 then FText := Copy(FText,1,Length(FText)-1) else if Key>#32 then FText := FText + Key; invalidate; end; procedure TWPGeheim.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin inherited; SetFocus; end; procedure TWPGeheim.Paint; var s : string; i : Integer; begin inherited; if Focused then Canvas.Font.Color := clHighlight else Canvas.Font.Color := clWindowText; SetLength(s, Length(FText)); for I := 1 to Length(s) do s[i] := '*'; Canvas.TextOut( 1,1,s); end; procedure TWPGeheim.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); Params.Style := Params.Style or WS_BORDER or WS_TABSTOP; end;
Code:
procedure TWPGeheim.KeyPress(var Key: Char);
begin if Key=#8 then FText := Copy(FText,1,Length(FText)-1) else if Key>#32 then FText := FText + Key else if Key=Char(22) then // ^V begin Clipboard.Open; try SetLength(FText,30); SetLength(FText,Clipboard.GetTextBuf(PChar(FText),30)); finally Clipboard.Close; end; end; invalidate; end; |
AW: Passwort Char umgangen
Warum nicht einfach per Timer alle paar MS selber die EM_SETPASSWORDCHAR Nachricht an das betreffende Edit schicken?
Dann kann das Tool daas ruhig mal ausschalten, gleich danach ist's halt wieder an ;-) |
AW: Passwort Char umgangen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:15 Uhr. |
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