ham0099
Goto Top

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

Content-ID: 22859

Url: https://administrator.de/forum/batch-passwort-verdeckt-eingeben-22859.html

Ausgedruckt am: 22.12.2024 um 12:12 Uhr

Biber
Biber 06.01.2006 um 01:36:48 Uhr
Goto Top
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.
22736
22736 06.01.2006 um 22:14:15 Uhr
Goto Top
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.

...
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
Biber
Biber 06.01.2006 um 22:27:40 Uhr
Goto Top
Nur so am Rande: ...

Genauso beiläufig bemerkt: face-wink
Noch kürzer geht es mit der neulich von einem Bremer Bätcher dokumentierten Kurzform:

Net Use /P:No (umgekehrt: Net Use /P:Yes; Status anzeigen: .../P)

Grüße und Danke für Deine Variante
Biber
22736
22736 07.01.2006 um 00:35:02 Uhr
Goto Top
Moin Moin nach Bremen,

Net Use /P:No (umgekehrt: Net Use /P:Yes; Status anzeigen: .../P)

cool, den kannte ich noch nicht.

Hasta luego
ham0099
ham0099 10.01.2006 um 08:48:31 Uhr
Goto Top
Besten Dank. All eure Infos waren für mir hilfreich.

Gruss Peter
mghelp
mghelp 21.05.2007 um 15:04:49 Uhr
Goto Top
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
tDwtp416
tDwtp416 23.06.2011 um 19:22:57 Uhr
Goto Top
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:
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!
activedirectory
activedirectory 30.04.2012 um 15:55:54 Uhr
Goto Top
@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?
106009
106009 30.04.2012 um 19:54:41 Uhr
Goto Top
Hi,

Zitat von @activedirectory:
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ß
tDwtp416
tDwtp416 01.05.2012 um 01:09:23 Uhr
Goto Top
REM alter sind da VIELE schreibfehler bei mir... Grammatik: 6...

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
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!
activedirectory
activedirectory 01.05.2012 um 02:24:31 Uhr
Goto Top
Im Skript von ollidolli wird noch die OS Version gecheckt und statt Deinem Leerzeichen wird dort der Index einmal dekrementiert. Ich verstehe nur nicht warum SETLOCAL ENABLEDELAYEDEXPANSION für dieses Skript erforderlich ist. Was der Befehl macht ist mir schon klar.
106009
106009 01.05.2012 um 02:31:49 Uhr
Goto Top
@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. face-wink

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.
Biber
Biber 02.05.2012 um 01:03:56 Uhr
Goto Top
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
pieh-ejdsch
pieh-ejdsch 05.05.2012 um 00:09:48 Uhr
Goto Top
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.

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