Batch: Passwort verdeckt eingeben
Batchdatei mit Passwortabfrage zur Verbindung von Netzlaufwerken
Habe eine Batchdatei gemacht die Username und Passwort abfragt und anschliessend die Netzlaufwerke verbindet ohne vorherige Domainenanmeldung. Störend ist im moment nur, dass die Passwortabfrage nicht verdeckt erfolgt. Hat jemand so ein Tool mit dem ich Umgebungsvariablen mit verdeckter Eingabe (Ersatzzeichen z.Bsp. Stern) definieren kann.
mfg Peter
Batchdatei mein Bsp.
@echo off
Echo Laufwerke verbinden
Echo.
Echo Username:
set /P UNAME=
Echo Password:
set /P PW=
if not exist g:\. net use G: \\server\resource /USER:domain\%UNAME% %PW% /PERSISTENT:NO
REM Bemerkung:Die beiden letzten Zeilen gehören zusammen
pause
Habe eine Batchdatei gemacht die Username und Passwort abfragt und anschliessend die Netzlaufwerke verbindet ohne vorherige Domainenanmeldung. Störend ist im moment nur, dass die Passwortabfrage nicht verdeckt erfolgt. Hat jemand so ein Tool mit dem ich Umgebungsvariablen mit verdeckter Eingabe (Ersatzzeichen z.Bsp. Stern) definieren kann.
mfg Peter
Batchdatei mein Bsp.
@echo off
Echo Laufwerke verbinden
Echo.
Echo Username:
set /P UNAME=
Echo Password:
set /P PW=
if not exist g:\. net use G: \\server\resource /USER:domain\%UNAME% %PW% /PERSISTENT:NO
REM Bemerkung:Die beiden letzten Zeilen gehören zusammen
pause
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 22859
Url: https://administrator.de/contentid/22859
Ausgedruckt am: 15.11.2024 um 05:11 Uhr
14 Kommentare
Neuester Kommentar
Moin ham0099,
na, ein witziger Titel für Deine Frage...
Es gibt Freewareutilies für den Zweck, aber ich kann Dir auch eine McGuyver-Lösung mit Bordmitteln posten.
...(im Batch)
...
Echo.
Echo Username:
set /P UNAME=
Echo Password:
Set pw=
format/f:160 a: >%temp%\#pass#
for /f "tokens=6" %a in ('find "EINGABETASTE" %temp%\#pass#') do Set pw=%%a
del %temp%\#pass#
if not exist g:\. net use G: \\server\resource /USER:domain\%UNAME% %PW% /PERSISTENT:NO
~~
Etwas "üblicher" mit Ausgabe von einem Sternchen je eingegebenen Zeichen ginge es mit einem kleinen VBS/JS-Schnipsel.
Der ist aber bestimmt schon hundertfach erfunden, suche doch mal im Netz nach GetHidden.vbs oder GetPass.vbs oder ähnlich.
HTH Biber
P.S. Wäre nett, wenn Du Deinen Titel in "Batch: Passwort verdeckt eingeben" oder ähnlich änderst.
na, ein witziger Titel für Deine Frage...
Es gibt Freewareutilies für den Zweck, aber ich kann Dir auch eine McGuyver-Lösung mit Bordmitteln posten.
...(im Batch)
...
Echo.
Echo Username:
set /P UNAME=
Echo Password:
Set pw=
format/f:160 a: >%temp%\#pass#
for /f "tokens=6" %a in ('find "EINGABETASTE" %temp%\#pass#') do Set pw=%%a
del %temp%\#pass#
if not exist g:\. net use G: \\server\resource /USER:domain\%UNAME% %PW% /PERSISTENT:NO
~~
Etwas "üblicher" mit Ausgabe von einem Sternchen je eingegebenen Zeichen ginge es mit einem kleinen VBS/JS-Schnipsel.
Der ist aber bestimmt schon hundertfach erfunden, suche doch mal im Netz nach GetHidden.vbs oder GetPass.vbs oder ähnlich.
HTH Biber
P.S. Wäre nett, wenn Du Deinen Titel in "Batch: Passwort verdeckt eingeben" oder ähnlich änderst.
Ich habe das vor zwei, drei Jahren einmal ganz pragmatisch gelöst. NET USE fordert zur Kennworteingabe auf, wenn in der Befehlszeile ein Stern als Kennwort übergeben wird. Während der Eingabe des Kennwortes werden allerdings keine Ersatzzeichen wie Sterne angezeigt, was den einen oder anderen Anwender verwirren könnte.
Weitere Netzlaufwerke können nun ohne erneute Angabe von Benutzerkennung und Kennwort verbunden werden - sofern der im ersten NET USE-Befehl angegebene Benutzer auch auf die anderen Ressourcen berechtigt ist.
Nur so am Rande: Wenn man die mit NET USE hergestellte Netzlaufwerksverbindung nicht im Profil speichern möchte, wird bekanntlich die Option /PERSISTENT:NO verwendet. Bei einer Folge von NET USE-Befehlen kann man sich Tipparbeit sparen und vor den Laufwerksmappings einmalig die folgende Befehlszeile ausführen:
...
set /p MyName=Username:
echo.
echo Hallo %MyName%.
echo.
echo Sie werden unten aufgefordert, Ihr Kennwort einzugeben.
echo Das Kennwort wird bei der Eingabe nicht angezeigt!
echo.
net use g: \\server\sharename * /user:%MyName%
...
Weitere Netzlaufwerke können nun ohne erneute Angabe von Benutzerkennung und Kennwort verbunden werden - sofern der im ersten NET USE-Befehl angegebene Benutzer auch auf die anderen Ressourcen berechtigt ist.
Nur so am Rande: Wenn man die mit NET USE hergestellte Netzlaufwerksverbindung nicht im Profil speichern möchte, wird bekanntlich die Option /PERSISTENT:NO verwendet. Bei einer Folge von NET USE-Befehlen kann man sich Tipparbeit sparen und vor den Laufwerksmappings einmalig die folgende Befehlszeile ausführen:
Net Use /PERSISTENT:NO
Moin Moin nach Bremen,
cool, den kannte ich noch nicht.
Hasta luego
Net Use /P:No (umgekehrt: Net Use /P:Yes; Status anzeigen: .../P)
cool, den kannte ich noch nicht.
Hasta luego
http://home.arcor.de/homemg/main/hilfe/lantool/
http://www.c-plusplus.de/forum/viewtopic-var-t-is-49050.html (Erklärung für Passwörter als Sterne).
Dies ein selbsterstelltes Programm für Netzlaufwerke (Aber 1. Version).
Es wird weiterentwickelt, geschrieben in c++ (Quelltext auf Anfrage)
Gruß mghelp
http://www.c-plusplus.de/forum/viewtopic-var-t-is-49050.html (Erklärung für Passwörter als Sterne).
Dies ein selbsterstelltes Programm für Netzlaufwerke (Aber 1. Version).
Es wird weiterentwickelt, geschrieben in c++ (Quelltext auf Anfrage)
Gruß mghelp
Hallo,
ist mein erstes mal hier. also hoffentlich geht alles was ich will...
Ich habe mich knapp ein jahr (mit großen Pausen) damit beschäftigt.
Wer Windows Vista/7 sollte kein Problem damit haben:
Choice in eine Schleife setzen:
%test% ist die Passwortvariable die von pw.bat übergeben wird.
%test% wird in %password% übertragen und dann gelöscht
D.H.: es kommt am ende die Variable %password% raus
das doofe an der sache ist (wie man vielleicht sieht) man muss mit drücken auf "ä" bestätigen.
Ich versuche zurzeit eine umgehung davon. Wenn es klappt melde ich mich.
erfahrene Batch-scripter werden sich das anpassen können sollen
Wer Choice.exe NICHT hat einfach downloaden.
Wenn ich zeit habe werde ich eine .zip erstellen und diese dann uploaden. Choice wird !nicht! enthalten sein
OHNE Choice.exe:
Choice.exe entweder in C:\Windows\system32\ kopieren oder in den Startordner der Batch!
NICHT in das gleiche verzeichnis wie pw.bat oder trpw.bat wenn diese nicht im Startverzeichnis sind!
Wäre froh wenn das jemand vereinfachen könnte. Die For-Schleife will bei mir nicht so recht...
Wäre auch schön wenn jmd antworten würde!
ist mein erstes mal hier. also hoffentlich geht alles was ich will...
Ich habe mich knapp ein jahr (mit großen Pausen) damit beschäftigt.
Wer Windows Vista/7 sollte kein Problem damit haben:
Choice in eine Schleife setzen:
REM --- pw.bat START ---
@echo off
:start
cls
choice /C:1234567890abcdefghijklmnopqrstuvwxyzä /n /m "Passwort: %star%"
REM VORSICHT! ä NICHT in eine .bat Datei einfach schreiben! es ist KEIN "ä" ich habe es via könsole echo äöü>>temp.txt und dann aus temp.txt rauskopiert
REM OPTIONEL: %star%
set now=%errorlevel%
set now=0%now%
set now=%now:~-2,2%
set test=%test%$%now%
cls
REM OPTIONAL: set star=%star%*
if "%now%"=="37" goto ende
goto start
:ende
call trpw.bat
REM trpw steht für "Translate Password"
REM --- pw.bat ENDE ---
REM --- trpw.bat START ---
@echo off
if not defined test goto failed
set test=%test:$01=1%
set test=%test:$02=2%
set test=%test:$03=3%
set test=%test:$04=4%
set test=%test:$05=5%
set test=%test:$06=6%
set test=%test:$07=7%
set test=%test:$08=8%
set test=%test:$09=9%
set test=%test:$10=0%
set test=%test:$ä=37%
set test=%test:$11=a%
set test=%test:$12=b%
set test=%test:$13=c%
set test=%test:$14=d%
set test=%test:$15=e%
set test=%test:$16=f%
set test=%test:$17=g%
set test=%test:$18=h%
set test=%test:$19=i%
set test=%test:$20=j%
set test=%test:$21=k%
set test=%test:$22=l%
set test=%test:$23=m%
set test=%test:$24=n%
set test=%test:$25=o%
set test=%test:$26=p%
set test=%test:$27=q%
set test=%test:$28=r%
set test=%test:$29=s%
set test=%test:$30=t%
set test=%test:$31=u%
set test=%test:$32=v%
set test=%test:$33=w%
set test=%test:$34=x%
set test=%test:$35=y%
set test=%test:$36=z%
set test=%test:$37=%
set password=%test%
goto unset
:failed
cls
echo Setting the password has failed!
pause>nul
:unset
set test=
REM --- trpw.bat ENDE ---
%test% ist die Passwortvariable die von pw.bat übergeben wird.
%test% wird in %password% übertragen und dann gelöscht
D.H.: es kommt am ende die Variable %password% raus
das doofe an der sache ist (wie man vielleicht sieht) man muss mit drücken auf "ä" bestätigen.
Ich versuche zurzeit eine umgehung davon. Wenn es klappt melde ich mich.
erfahrene Batch-scripter werden sich das anpassen können sollen
Wer Choice.exe NICHT hat einfach downloaden.
Wenn ich zeit habe werde ich eine .zip erstellen und diese dann uploaden. Choice wird !nicht! enthalten sein
OHNE Choice.exe:
Choice.exe entweder in C:\Windows\system32\ kopieren oder in den Startordner der Batch!
NICHT in das gleiche verzeichnis wie pw.bat oder trpw.bat wenn diese nicht im Startverzeichnis sind!
Wäre froh wenn das jemand vereinfachen könnte. Die For-Schleife will bei mir nicht so recht...
Wäre auch schön wenn jmd antworten würde!
@echo off
set pwchars=12
:pwschleife
choice /c abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 /n /cs /m "Passwort: %stern%"
cls
if %errorlevel% equ 1 set pw=%pw%a
if %errorlevel% equ 2 set pw=%pw%b
if %errorlevel% equ 3 set pw=%pw%c
if %errorlevel% equ 4 set pw=%pw%d
if %errorlevel% equ 5 set pw=%pw%e
if %errorlevel% equ 6 set pw=%pw%f
if %errorlevel% equ 7 set pw=%pw%g
if %errorlevel% equ 8 set pw=%pw%h
if %errorlevel% equ 9 set pw=%pw%i
if %errorlevel% equ 10 set pw=%pw%j
if %errorlevel% equ 11 set pw=%pw%k
if %errorlevel% equ 12 set pw=%pw%l
if %errorlevel% equ 13 set pw=%pw%m
if %errorlevel% equ 14 set pw=%pw%n
if %errorlevel% equ 15 set pw=%pw%o
if %errorlevel% equ 16 set pw=%pw%p
if %errorlevel% equ 17 set pw=%pw%q
if %errorlevel% equ 18 set pw=%pw%r
if %errorlevel% equ 19 set pw=%pw%s
if %errorlevel% equ 20 set pw=%pw%t
if %errorlevel% equ 21 set pw=%pw%u
if %errorlevel% equ 22 set pw=%pw%v
if %errorlevel% equ 23 set pw=%pw%w
if %errorlevel% equ 24 set pw=%pw%x
if %errorlevel% equ 25 set pw=%pw%y
if %errorlevel% equ 26 set pw=%pw%z
if %errorlevel% equ 27 set pw=%pw%A
if %errorlevel% equ 28 set pw=%pw%B
if %errorlevel% equ 29 set pw=%pw%C
if %errorlevel% equ 30 set pw=%pw%D
if %errorlevel% equ 31 set pw=%pw%E
if %errorlevel% equ 32 set pw=%pw%F
if %errorlevel% equ 33 set pw=%pw%G
if %errorlevel% equ 34 set pw=%pw%H
if %errorlevel% equ 35 set pw=%pw%I
if %errorlevel% equ 36 set pw=%pw%J
if %errorlevel% equ 37 set pw=%pw%K
if %errorlevel% equ 38 set pw=%pw%L
if %errorlevel% equ 39 set pw=%pw%M
if %errorlevel% equ 40 set pw=%pw%N
if %errorlevel% equ 41 set pw=%pw%O
if %errorlevel% equ 42 set pw=%pw%P
if %errorlevel% equ 43 set pw=%pw%Q
if %errorlevel% equ 44 set pw=%pw%R
if %errorlevel% equ 45 set pw=%pw%S
if %errorlevel% equ 46 set pw=%pw%T
if %errorlevel% equ 47 set pw=%pw%U
if %errorlevel% equ 48 set pw=%pw%V
if %errorlevel% equ 49 set pw=%pw%W
if %errorlevel% equ 50 set pw=%pw%X
if %errorlevel% equ 51 set pw=%pw%Y
if %errorlevel% equ 52 set pw=%pw%Z
if %errorlevel% equ 53 set pw=%pw%1
if %errorlevel% equ 54 set pw=%pw%2
if %errorlevel% equ 55 set pw=%pw%3
if %errorlevel% equ 56 set pw=%pw%4
if %errorlevel% equ 57 set pw=%pw%5
if %errorlevel% equ 58 set pw=%pw%6
if %errorlevel% equ 59 set pw=%pw%7
if %errorlevel% equ 60 set pw=%pw%8
if %errorlevel% equ 61 set pw=%pw%9
if %errorlevel% equ 62 set pw=%pw%0
set /a pwchars=%pwchars%-1
set stern=%stern%*
if not %pwchars% equ 0 goto pwschleife
cls
Das Passwort entspricht der Variable pw. Kann ich meine 60 Errorlevel Einträge durch eine Schleife ersetzen?
Hi,
abgesehen davon, dass der Thread schon starken Verwesungsgeruch aufweist und die letzten beiden Versionen erst ab Vista funktionieren, geht das schon .
Du verwendest die Variable %errorlevel% als Index für ein Zeichen aus dem für choice verwendeten String.
Eine fertige Lösung gibt's dann hier.
Gruß
Zitat von @activedirectory:
Das Passwort entspricht der Variable pw. Kann ich meine 60 Errorlevel Einträge durch eine Schleife ersetzen?
Das Passwort entspricht der Variable pw. Kann ich meine 60 Errorlevel Einträge durch eine Schleife ersetzen?
abgesehen davon, dass der Thread schon starken Verwesungsgeruch aufweist und die letzten beiden Versionen erst ab Vista funktionieren, geht das schon .
Du verwendest die Variable %errorlevel% als Index für ein Zeichen aus dem für choice verwendeten String.
Eine fertige Lösung gibt's dann hier.
Gruß
REM alter sind da VIELE schreibfehler bei mir... Grammatik: 6...
Wenn du es dir vereinfachen willst:
ACHTUNG
1. DAS LEERZEICHEN IN DER VARIABLE CHARS MUSS SEIN!!!
2. %NUM% kann auch extern gesetzt werden oder via %1 %2 %* oder wie auch immer
3. CLS sollte vorhanden sein... sonst bringen die Sternchen nichts -.-
4. Für Windows XP kann man es sich downloaden (+soucecode)
5. (@ollidolli) In XP wurde es abgeschafft und ab Vista wieder eingeführt. XP ist somit das einzige Windows ohne CHOICE.
6. Viel spass!
Wenn du es dir vereinfachen willst:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "CHARS= abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
SET "NUM=8"
:PWLOOP
CLS
CHOICE /C %CHARS% /N /CS /M "Passwort: %STARS%"
FOR /L %%A IN (1,1,62) DO IF ERRORLEVEL %%A SET PW=%PW%!CHARS:~%%A,1!
SET "STARS=%STARS%*"
SET /A NUM = %NUM% - 1
IF NOT %NUM% LEQ 0 GOTO PWLOOP
1. DAS LEERZEICHEN IN DER VARIABLE CHARS MUSS SEIN!!!
2. %NUM% kann auch extern gesetzt werden oder via %1 %2 %* oder wie auch immer
3. CLS sollte vorhanden sein... sonst bringen die Sternchen nichts -.-
4. Für Windows XP kann man es sich downloaden (+soucecode)
5. (@ollidolli) In XP wurde es abgeschafft und ab Vista wieder eingeführt. XP ist somit das einzige Windows ohne CHOICE.
6. Viel spass!
@activedirectory
Es wird im letzten Beispiel von tDwtp416 eine Variable innerhalb einer Variablen verwendet: %%A innerhalb von %CHARS%, ich habe in meinem (im anderen Thread) geposteten Besipiel %arr% und %ind% benutzt. Versuche das mal nur mit %-Zeichen.
Seine Version funktioniert übrigens nicht, beim Passwort kommt immer "aaaaaaaa" raus. Da ist noch ein kleiner Bug in seiner Version, mal sehen, ob er den findet. *gg
Wenn du das noch weiter optimieren möchtest, könntest du für die Parameter in der For-Schleife an Stelle der 62 auch noch die Länge des "CHARS"- bzw. arr-Strings ermitteln und die in eine Variable packen.
Es wird im letzten Beispiel von tDwtp416 eine Variable innerhalb einer Variablen verwendet: %%A innerhalb von %CHARS%, ich habe in meinem (im anderen Thread) geposteten Besipiel %arr% und %ind% benutzt. Versuche das mal nur mit %-Zeichen.
Seine Version funktioniert übrigens nicht, beim Passwort kommt immer "aaaaaaaa" raus. Da ist noch ein kleiner Bug in seiner Version, mal sehen, ob er den findet. *gg
Wenn du das noch weiter optimieren möchtest, könntest du für die Parameter in der For-Schleife an Stelle der 62 auch noch die Länge des "CHARS"- bzw. arr-Strings ermitteln und die in eine Variable packen.
Moin alle,
jetzt haben wir schon zwei Uralt-Beiträge zu diesem Thema, an denen die ursprünglichen Threadowner das Interesse verloren haben und in denen nach dem x-ten Wiederbelebungsversuch nun doch eine (durchaus schlanke) Lösung erarbeitet wurde.
Ich verweise hier in diesem Thread auch noch mal freundlich aud Passworteingabe Nicht Anzeigen und setze diesen auch auf "Gelöst".
Grüße und dank an alle Wiederbeatmer
Biber
jetzt haben wir schon zwei Uralt-Beiträge zu diesem Thema, an denen die ursprünglichen Threadowner das Interesse verloren haben und in denen nach dem x-ten Wiederbelebungsversuch nun doch eine (durchaus schlanke) Lösung erarbeitet wurde.
Ich verweise hier in diesem Thread auch noch mal freundlich aud Passworteingabe Nicht Anzeigen und setze diesen auch auf "Gelöst".
Grüße und dank an alle Wiederbeatmer
Biber
moin,
auch wenn dieses Thema immer wieder mal "Brandheiss" diskutiert wird, letztendlich aber doch klar ist - mit choice ist es eine Krücke.
Ich verwende in meinen Passworten auch Sonderzeichen, wo ich aber nur genau weiss, welche ich nutzen könnte bei Verwendung von choice.
Dann kann nur eine im vorraus vorgegebene Passwortlänge zum Erkennen bis zur "fertigen Eingabe" genutzt werden.
Ist schon ein mögliches Sicherheitsrisiko!?
Oder ein Zeitfenster zur Eingabe nutzen. Da Choice keine Eingabetaste erkennt.
Es liese sich aber auch auf ein oder zwei Spezielle Zeichen am Ende des Eingebenen Strings vergleichen und niemand wüsste eine Passwortlänge.
Die Letzten Zeichen können ja auch vom String entfernt werden, wenn nötig.
Und wenn ich weiss, dat Ding geht nur ab Vista dann brauch ich es doch nicht woanners hinschleppen.
Für irgend ein Zeugs wirds schon gehen. Hach ich wollt doch gar net
PS: Warum ist denn der Olli auf einmal wech? War wohl zu heiss - obwohl wird ja noch diesen Sommer...
Gruß Phil
auch wenn dieses Thema immer wieder mal "Brandheiss" diskutiert wird, letztendlich aber doch klar ist - mit choice ist es eine Krücke.
Ich verwende in meinen Passworten auch Sonderzeichen, wo ich aber nur genau weiss, welche ich nutzen könnte bei Verwendung von choice.
Dann kann nur eine im vorraus vorgegebene Passwortlänge zum Erkennen bis zur "fertigen Eingabe" genutzt werden.
Ist schon ein mögliches Sicherheitsrisiko!?
Oder ein Zeitfenster zur Eingabe nutzen. Da Choice keine Eingabetaste erkennt.
Es liese sich aber auch auf ein oder zwei Spezielle Zeichen am Ende des Eingebenen Strings vergleichen und niemand wüsste eine Passwortlänge.
Die Letzten Zeichen können ja auch vom String entfernt werden, wenn nötig.
Und wenn ich weiss, dat Ding geht nur ab Vista dann brauch ich es doch nicht woanners hinschleppen.
Kann ich meine 60 Errorlevel Einträge durch eine Schleife ersetzen?
Ja klar halt etwas anderes.@echo off
::echo on
setlocal disabledelayedexpansion
if "%~1" equ "/?" echo läuft ab Vista&echo Folgenden Eingaben werden erkannt^
&echo 1 2 3 4 5 6 7 8 9 0^
&echo a b c d e f g h i j k l m n o p q r s t u v w x y z^
&echo A B C D E F G H I J K L M N O P Q R S T U V W X Y Z^
&echo á Ž ™ š „ ” ^
&echo ø ý õ æ ü^
&goto :eof
echo Passwort abschliessen mit õõ
<nul set /p "=Passwort eingeben: "
set "PW="
:Eingabe
for /f %%i in ('choice /cs /c abcdefghijklmnopqrstuvwxyz1234567890ßABCDEFGHIJKLMNOPQRSTUVWXYZ᎙š„”øýõæü /n ') do @set "PW=%PW%%%i"
<nul set /p "=*"
if not "%PW:~ -2%" == "õõ" goto :Eingabe
echo(
set "PW=%PW:~ 0,-2%"
rem Mach was mit dem Passwort
rem Start echo %PW%
echo %pw%
set "PW="
Für irgend ein Zeugs wirds schon gehen. Hach ich wollt doch gar net
PS: Warum ist denn der Olli auf einmal wech? War wohl zu heiss - obwohl wird ja noch diesen Sommer...
Gruß Phil