Discussion forum for all Windows batch related topics.
Moderator: DosItHelp
-
abc0502
- Posts: 1007
- Joined: 26 Oct 2011 22:38
- Location: Egypt
#1
Post
by abc0502 » 23 Apr 2012 16:36
Is it possible to hide the password that being entered in that code and replace it with astrics or any symbole
so the password won't become visible when entering it
here is a sample code:
Code: Select all
@echo off
cls
loop
Echo Test Code
set /p "cho1=>"
if %errorlevel%==1 goto loop
if %cho1%==1234 ( echo Access guaranteed
) Else ( echo Access Denied )
pause >nul
-
aGerman
- Expert
- Posts: 4678
- Joined: 22 Jan 2010 18:01
- Location: Germany
#2
Post
by aGerman » 23 Apr 2012 16:55
I remember former discussions about that theme.
Nobody implemented masked password input to batch code because it's senseless. Batch code is plain text. Everybody can read it, everybody can change it.
Regards
aGerman
-
foxidrive
- Expert
- Posts: 6031
- Joined: 10 Feb 2012 02:20
#3
Post
by foxidrive » 23 Apr 2012 17:01
Herbert Kleebauer wrote this - the password is invisible IE no asterisks or other indication.
Code: Select all
@echo off
echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com
set /p password=Enter password:<nul
for /f "tokens=*" %%i in ('in.com') do set password=%%i
del in.com
echo.
echo The Password is:"%password%"
However if you are comparing it with text in a batch file then there isn't much security anyway.
-
abc0502
- Posts: 1007
- Joined: 26 Oct 2011 22:38
- Location: Egypt
#4
Post
by abc0502 » 23 Apr 2012 17:26
Thanks aGerman and Foxidrive for your help,
i'm going to change the batch to exe using
bat2exe converter found here:
http://www.f2ko.de/programs.php?lang=en so the password will remain hidden.
And foxidrive the code u posted work fine with me all what i need is to hide the password while entering it
thanks
note i can't nullfy the variable like u said before or use error level with it but it will do the job
-
Squashman
- Expert
- Posts: 4484
- Joined: 23 Dec 2011 13:59
#5
Post
by Squashman » 24 Apr 2012 05:42
abc0502 wrote:Thanks aGerman and Foxidrive for your help,
i'm going to change the batch to exe using
bat2exe converter found here:
http://www.f2ko.de/programs.php?lang=en so the password will remain hidden.
And foxidrive the code u posted work fine with me all what i need is to hide the password while entering it
thanks
note i can't nullfy the variable like u said before or use error level with it but it will do the job
That is only pseudo hiding it. When you execute the packaged EXE all it does is extract the batch file to the current directory or to a temp directory. If there is any stops for input into your batch file all they have to do is find the batch file that was extracted and open it up view all the code and the password.
-
abc0502
- Posts: 1007
- Joined: 26 Oct 2011 22:38
- Location: Egypt
#6
Post
by abc0502 » 24 Apr 2012 16:23
hi Squashman,
I know it is easy for some one who know how batch files work to extract the password from the batch file, but for some one dosn't have any idea what is batch it won't be easy beside how he will know what language the
exe file is written in
and i hide the password using many variable in many places in the batch so it will be hard to find for a someone dosn't know batch files.
i'm trying to find some sort of encryption using batch but i found something using another program in the webside up hope it work
-
Cat
- Posts: 32
- Joined: 11 Nov 2011 12:04
#7
Post
by Cat » 24 Apr 2012 16:27
Best I could do with pure batch:
Code: Select all
@echo off
setlocal enabledelayedexpansion
set chars=q w e r t y u i o p a s d f g h j k l z x c v b n m 1 2 3 4 5 6 7 8 9 0
:input
cls
echo input password:
if defined display echo %display%
choice /c "!chars: =!" >nul
if not %errorlevel%==37 (
for /f "tokens=%errorlevel%" %%a in ("%chars%") do set input=%%a
set password=%password%%input%
set display=%display%*
goto input
) else (
echo your password is: %password%
pause
)
exit
Doesn't work all the way. Did you consider using a C++ executable to go with your batch file?
-
phillid
- Posts: 109
- Joined: 03 Apr 2010 20:27
- Location: Wellington, New Zealand
-
Contact:
#8
Post
by phillid » 25 Apr 2012 03:20
C/C++ - This is where I come in
Does anyone want a program (an exe) to take input for batch scripts without showing the text that's being typed in?
Thanks,
Phillid
-
Cat
- Posts: 32
- Joined: 11 Nov 2011 12:04
#9
Post
by Cat » 26 Apr 2012 14:44
@ Phillid - I have this in C++ right now, but how do I set a variable (%password%, etc) from the script?
Code: Select all
#include "stdafx.h"
#include <string>
#include <conio.h>
#include <iostream>
#include <cstdlib>
#include <stdlib.h>
using namespace std;
int main(char argc, char *argv[]) {
char c;
string password;
if (argv[1] != 0) {
printf(argv[1]);
}
}
do {
c = _getch();
switch(c) {case 0: {
_getch();
break;
}
case '\b': {
if(password.size() != 0) {
printf("\b \b");
password.erase(password.size() - 1, 1);
}
break;
}
default: {
if(isalnum(c) || ispunct(c)) {
password += c;
printf("*");
}
break;
}
}
} while(c != '\r');
cout << " " + password;
}
-
MrKnowItAllxx
- Posts: 43
- Joined: 20 Mar 2012 20:53
#10
Post
by MrKnowItAllxx » 26 Apr 2012 17:56
Cat, you could do this in the batch file: (I think)
Code: Select all
for /f %%a in ('password.exe') do set "password=%%a"
but you would need to only output the password with the exe, you currently output a space before the password aswell
-
aGerman
- Expert
- Posts: 4678
- Joined: 22 Jan 2010 18:01
- Location: Germany
#11
Post
by aGerman » 27 Apr 2012 04:24
@Cat
C/C++ is a bit off topic in a Batch forum. It's a Batch tool though for that reason a small hint:
Use different streams - write the asterisks to stdErr (std::cerr) and the password to stdOut (std::cout). The FOR /F loop in the Batch code does only handle the stdOut stream while the stdErr stream will be displayed directly.
Regards
aGerman