12 Stimmen

Was wäre das Windows-Batch-Äquivalent für die HTML-Eingabe type="password"?

Ich muss die Authentifizierungsdaten der Benutzer in einem Windows-Skript abrufen, aber mit dem klassischen Ansatz "erstes Google-Ergebnis":

SET /P USR=Username: 
SET /P PWD=Password: 

ist weniger als zufriedenstellend, also habe ich mich gefragt, ob es, sagen wir mal, ein "Äquivalent" zu HTML-Eingabe type="Passwort" ?

Für jeden Kommentar wäre ich sehr dankbar, vielen Dank im Voraus!

0 Stimmen

Können Sie ein wenig mehr Kontext zur Verfügung stellen; ist dies für Mapping/Zugriff auf eine Freigabe, Anmeldung bei einem Remotecomputer oder etwas anderes?

0 Stimmen

Grundsätzlich sollten Benutzer ihre Anmeldedaten angeben, um sich gegenüber einem Subversion-Repository zu authentifizieren. Inzwischen haben wir einen Workaround implementiert, der auf einigen Konventionen basiert, aber es wäre großartig, eine Lösung zu implementieren, ohne solche Beschränkungen aufstellen zu müssen, die die Sicherheitsstärke deutlich verringern.

0 Stimmen

Eine sehr wichtige Frage. Wir brauchen Skripte zum Starten von Anwendungen, solche Skripte müssen archiviert werden, aber Passwörter dürfen nicht in Skripten gespeichert werden, nicht in Skripten archiviert werden und bei der Eingabe nicht auf dem Bildschirm erscheinen

1voto

Keng Punkte 49933

Wir machen so etwas ständig, aber wir geben das Kennwort in die Befehlszeile ein und übergeben es an eine Variable in der Stapeldatei.

1voto

Panos Rontogiannis Punkte 4104

Ein anderer Ansatz ist der Aufruf PowerShell Befehle von Ihrem Batch Skript. Hier ist ein Beispiel, das das Anmeldekonto eines Dienstes konfiguriert:

$password = Read-Host "Enter password" -AsSecureString;
$decodedpassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($password));
& "sc.exe" config THE_SERVICE_NAME obj= THE_ACCOUNT password= $decodedPassword;

wobei THE_SERVICE_NAME der Name des zu konfigurierenden Dienstes und THE_ACCOUNT das Anmeldekonto ist.

Dann können wir es über ein solches Batch-Skript verwenden:

call powershell -Command "$password = Read-Host "Enter password" -AsSecureString; $decodedpassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($password)); & "sc.exe" config THE_SERVICE_NAME obj= THE_ACCOUNT password= $decodedPassword;"

der einfach PowerShell.exe aufruft und die drei Befehle übergibt.

Der Vorteil dieses Ansatzes besteht darin, dass die meisten Windows-Installationen heute Folgendes enthalten PowerShell Es wird also kein zusätzliches Programm oder Skript benötigt. Der Nachteil ist, dass Sie entweder das Passwort innerhalb der PowerShell Aufruf (wie in meinem Beispiel) oder speichern Sie ihn in einer Umgebungsvariablen und verwenden Sie ihn dann in Ihrem Batch-Skript. Ich bevorzuge die erste Variante, weil sie sicherer und einfacher ist.

1voto

Aacini Punkte 61728

Sie können das Unterprogramm ReadFormattedLine für alle Arten von formatierten Eingaben verwenden. Die folgenden Befehle lesen zum Beispiel einen Benutzernamen und ein Kennwort mit jeweils 8 Zeichen, zeigen Sternchen auf dem Bildschirm an und fahren automatisch fort, ohne dass die Eingabetaste gedrückt werden muss:

call :ReadFormattedLine USR="********" /M "Username: "
call :ReadFormattedLine PWD="********" /M "Password: "

Oder auf eine andere Art und Weise:

call :ReadFormattedLine nameAndPass="******** / ********" /M "Enter Username / Password: "

Wenn der Benutzer im vorherigen Beispiel den Benutzernamen eingegeben hat, zeigt das Unterprogramm den Schrägstrich an und liest das Kennwort aus; wenn der Benutzer Zeichen löscht, wird der Schrägstrich ebenfalls automatisch gelöscht.

Dieses Unterprogramm ist in reinem Batch geschrieben, so dass es kein zusätzliches Programm benötigt, und es ermöglicht mehrere formatierte Eingabeoperationen, wie z.B. nur Zahlen lesen, Buchstaben in Großbuchstaben umwandeln, usw. Sie können das Unterprogramm ReadFormattedLine herunterladen von Eine Zeile mit einem bestimmten Format lesen .

0voto

Mofi Punkte 42073

ConSet ist ein kostenloses Tool, das von Frank P. Westlake geschrieben wurde. Es ist eine erweiterte Version des Standard-Windows-Befehls set .

ConSet.exe - Zeigt die Umgebungsvariablen von cmd.exe an, setzt oder löscht sie, ändert Konsolenparameter und führt Gleitkommaberechnungen durch.

Da es sich nicht um eine Standard-Windows-Konsolenanwendung handelt, muss dieses Tool entweder zusammen mit der Batchdatei verteilt werden, oder das Tool wird auf einer Serverfreigabe gespeichert und die Batchdatei ruft das Tool direkt von der Serverfreigabe aus auf.

ConSet macht die Abfrage einer Kennwortzeichenkette mit versteckter Eingabe, die einer Umgebungsvariablen zugewiesen ist, sehr einfach:

ConSet.exe /PH "PWD=Password: "

Der zusätzliche Parameter H führt dazu, dass Benutzereingaben ausgeblendet werden.

0voto

Bill_Stewart Punkte 20760

Ich habe ein Open-Source-Tool namens editenv das mein älteres Modell ersetzt editv32 / editv64 Versorgungseinrichtungen:

https://github.com/Bill-Stewart/editenv

Sie bietet die --maskinput ( -m ) Option[*], mit der Sie die getippte Eingabe ausblenden können. Beispiel:

editenv --maskinput --prompt="Password: " PWD

Dieser Befehl zeigt eine Password: Eingabeaufforderung, und was immer Sie eingeben, wird in der PWD Umgebungsvariable.

Hier herunterladen:

https://github.com/Bill-Stewart/editenv/releases

[*] Beachten Sie, dass die --maskinput ( -m ) ist die Option nicht sicher -- getippte Eingaben werden im Klartext in die Umgebung gestellt. Diese Funktion dient nur der Bequemlichkeit.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X