myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   [BATCH] Input verstecken bzw als ***** anzeigen? (https://mygully.com/showthread.php?t=1912977)

BadFriend 23.09.09 17:44

[BATCH] Input verstecken bzw als ***** anzeigen?
 
Hey,
Ich wollte wissen ob es möglich ist ein Input als */zahl anzeigen zu lassen?

Ich hab schon ein bisschen geggogelt aber dafür hab ich nur komplizierte "verfahren"
gefunden, die ich mit meinen kenntnissen noch nicht verstehen kann.

Eine weitere möglichkeit währe es den Input in der gleichen Farbe wie der Hintergrund anzeigen zu lassen.
Aber ich weiß auch nicht wie ich zwei verschiedene Farben aufeinmal "einstellen" kann.

Ich hoffe dass ihr meine Frage so gut genug versteht ;)


BadFriend :D

nightmare1942 23.09.09 21:34

ich weiß nicht, wie es beim batchen aussieht, aber bei webanwenungen musst du dem feld einen typ zuweisen. es gibt text, textarea, passwort und ein paar andere.

bei password werden die zeichen automatisch als *** angezeigt!!!

urga 23.09.09 23:16

mit reinen .bat-mitteln geht das mit den sternchen leider nicht.
ebenfalls geht es nicht vorder- und hintergrundfarbe auf den den selben wert zu setzen.
wenn das passwort feststeht oder in einer datei steht (oder so) könnte evntl. ein kleines C-programm helfen.

hab das hier im [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] gefunden:

passwd.bat:
Code:

@echo off

call:pwd pass
if "%pass%"=="dostips" (
echo.password accepted
) else (
echo.password denied
)
GOTO:EOF 


:pwd var title color -- shows a password dialog box
::                  -- var  [in]    - return variable
::                  -- title [in,opt] - dialog title, default is "Password:"
::                  -- color [in,opt] - color default is AB (Light Green on Light Aqua)
:$created 20060101 :$changed 20080226 :$categories Input,Password
:$source http://www.dostips.com
SETLOCAL
set "tit=%~2"
set "col=%~3"
set "pwd="
if not defined col set "col=EF"
if not defined tit set "tit=Password:"
set "f=%temp%\%~nx0.tmp~0.tmp"
start "%tit%" /wait cmd /c "mode con cols=24 lines=1&color %col%&set /p "in="&call echo.%%in%%>"%f%""
for /f "usebackq tokens=*" %%a in ("%f%") do set "pwd=%%a"
del /q "%f%"
ENDLOCAL&if "%~1" NEQ "" (SET %~1=%pwd%) ELSE ECHO.%txt%
EXIT /b


urga 24.09.09 01:38

was hälst'n du davon:
Code:

@echo off
call \temp\read_passwd "bla x"
if errorlevel 1 goto passok
goto :eof

:passok
echo ok

[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

getestet unter xp-32 und win7-64.

für interessierte, das c(++)-programm:
Code:

#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <string>


int _tmain(int argc, char* argv[])
{
        using namespace std;
        if (argc < 2) {
                cout << "usage read_passwd <passwd>\n";
                return 0;
        }
       

        string password;
        char ch;
            const char ENTER = 13;
        const char BS = 8;
        cout << "enter the password: ";

    while((ch = _getch()) != ENTER)
    {
        if (ch == 3) { // ctrl-c
                return 0;
        }
        if (ch == BS) {
                if (password.length() > 0) {
                        password = password.substr (0, password.length() -1);
                        cout << BS << " " << BS;
                }
                continue;
        }
        password += ch;
        cout << '*';
    }
        cout << "\n";
        return strcmp (argv[1], password.data()) == 0;
}


BadFriend 24.09.09 10:11

Cool. Vielen Dank für eure Antworten ;)
Ich werde es die tage mal durchtesten

urga 25.09.09 22:39

obiges prgramm vergleicht nur ein vorgegebenes passwort mit der eingabe und setzt den errorlevel entsprechend.

nach einigem nachforschen (jahrelang unter unix via sh und perl programmiert, da wird man bei win-batches wahnsinnig ;) wenn man es nicht kennt)
bin ich auf folgendes gekommen:

das c-programm schreibt seine eingabe in eine temporäre datei, die das batch vorgibt, ausliest und gleich wieder löscht. evntl. geht das auch eleganter, hab aber nix gefunden.

.bat
Code:

@echo off
set tmpfile=%TEMP%\%DATE%%RANDOM%%RANDOM%.tmp
call \temp\file_passwd "%tmpfile%"
if errorlevel 1 goto passok

echo es gab fehler

goto :eof

:passok

FOR /f "delims=" %%i IN (%tmpfile%) do set PW=%%i
echo passwort=%PW%
del %tmpfile%


[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

Answer 28.09.09 14:08

Zwei farben einstellen ist einfach. gib mal in der CMD help color ein und durchlesen.

Hier mal ein beispiels***** für zwei farben:
Code:

@echo off
title Hier wird die farbe geändert
echo Beim fortsetzen werden zwei farben eingesetzt
pause
cls
color fc
echo zwei farben wurden eingesetzt
pause
cls
:anf
color fc
color cf
goto anf


BadFriend 11.10.09 14:10

@Answer
Ich meine mit 2 Farben nicht Vorder-Hintergrundfarbe sondern dass der Text der angzeigt wird verschiedene Farben hat.
z.B.:
Code:

echo Blauer test
echo Roter text



Alle Zeitangaben in WEZ +1. Es ist jetzt 20:50 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.