Batch Passwortabfrage
Hallo, ich habe bei meiner Batch datei eine Passwortabfrage und das Passwort ist sichtbar. Kann man anstatt dem Passwort Sternchen o.ä. einfügen. Hoffe ihr habts kapiert und danke für hilfreiche antworten.
2 Antworten
Ja, das geht. Du fragt per SET/P-Befehl die Passworteingabe ab und überschreibst mit einem zweiten Prozess die eingegebenen Buchstaben mit Sternchen:
@echo off
if "%~1" == "Stern" goto :Sternchen
start /b cmd /c %0 Stern
set /p PW=Passwort:
type nul>InputDone.tmp 2>nul
echo.
echo %PW%
pause
exit /b
:Sternchen
if not exist InputDone.tmp set /p ".={BS}*" <nul
if exist InputDone.tmp (
del InputDone.tmp >nul 2>nul
exit /b
)
goto Sternchen
GuteFrage kann das {BS} nicht richtig darstellen. Du musst es mit ASCII-Code 08 (Alt gedrückt halten, auf dem Ziffernblock 08 eingeben, dann Alt loslassen) ersetzen.
Zuerst prüft die Datei, ob sie sich selbst mit dem Parameter "Stern" gestartet hat. Falls ja, wird der Nebenprozess :Sternchen eingeleitet, welcher das vorige Zeichen immer mit einem Stern ersetzt. Falls nicht, startet sie sich ein zweites Mal.
Anschließend fragt der Hauptprozess das Passwort ab.
Sobald der Benutzer Enter drückt, erstellt der Hauptprozess eine leere TMP-Datei. Der Nebenprozess erkennt diese, löscht sie wieder und beendet sich selbst.
Zur Prüfung habe ich im Hauptprozess das Passwort per ECHO-Befehl nochmal schreiben lassen. Das kannst du natürlich mit IF-Befehlen oder was du sonst möchtest ersetzen.
Ich rate davon ab, in :Sternchen eine PING-Pause zu machen, da der Benutzer ggf. schneller schreibt als der Nebenprozess durch Sternchen ersetzen kann.
Die Datei wurde erfolgreich getestet unter Windows XP Prof. SP 3.
Sowas geht besser mit VBScript. Ist sicherer und schwerer zu umgehen.