batch login system help :)

Discussion forum for all Windows batch related topics.

Moderator: DosItHelp

Post Reply
Message
Author
trap
Posts: 4
Joined: 10 Jan 2011 07:20
Location: Norway
Contact:

batch login system help :)

#1 Post by trap » 10 Jan 2011 07:24

Hello guys! First time posting..

I have a batch scripts who lets the user register and then ask's him to log in with the user he created.
All i want is that when he registeres his password, the input should be blank or "**'s".

I will post my code:

Code: Select all

@echo off
title Login System
color a
cls
echo Please register
echo.
set /p user=Username:
set /p pass=Password:
cls
echo Your account %user% has been created.
echo.
pause
cls
:A
echo Please Login.
echo.
set /p u=Username:
set /p p=Password:
if %u%==%user% if %p%==%pass% goto B
cls
echo Invalid Username or Password
echo.
pause
cls
goto A

:B
echo You are now logged in as %user%.
echo.
pause
cls
exit


Im really glad for any help :)

-Trap

aGerman
Expert
Posts: 4678
Joined: 22 Jan 2010 18:01
Location: Germany

Re: batch login system help :)

#2 Post by aGerman » 10 Jan 2011 17:22

Hmm,
bad news 1: A login in batch is absolutely senseless.
bad news 2: There is no chance to replace characters of an user input with asterisks using native batch.

If you're working on a 32 Bit Windows OS it is possible to create and execute a 16 Bit COM application by batch. This could be helpfull in this case.
Have a look at this complicated and buggy function, then decide for yourself if you would like to use it (or better not :wink:)

Code: Select all

@echo off &setlocal

::  Call :GetPassInput function with
::  the text to display (first argument),
::  the wildcard character you would like to display (second argument)
::  and the variable name for output (third argument).
call :GetPassInput "Enter your password:" "*" pass

::  Do what ever you want with variable %pass%
echo\%pass%

pause
goto :eof



:::::::::::::::: Function to get the password input ::::::::::::::::::::::::::::
:GetPassInput Text WildCard VariableName
setlocal EnableDelayedExpansion
set "inp="
set "out="
set "spaces="
set "asterisks="
pushd "%temp%"
(
  echo\a 100
  echo\mov ah,00
  echo\int 16
  echo\mov ah,4c
  echo\int 21
  echo\
  echo\rcx
  echo\108
  echo\n GETCH16.COM
  echo\w
  echo\q
  echo\
)>GETCH16.ASM
start "" /wait /min cmd /k "(type GETCH16.ASM|debug)&exit"
del GETCH16.ASM
set "X=."
for /L %%c in (1,1,13) DO set X=!X:~0,4094!!X:~0,4094!
echo !X!  > "cr.tmp"
echo\>> "cr.tmp"
for /f "tokens=2 usebackq" %%a in ("cr.tmp") do set cr=%%a
del "cr.tmp"
popd
for /f "delims=:" %%i in (
  '^(echo\"%~1"^&echo\^)^|findstr /o $'
) do set /a len=%%i-2
for /l %%i in (1,1,%len%) do set "spaces=!spaces! "
<nul set /p ".=.!cr!%spaces%!cr!"
<nul set /p ".=!cr!%~1 %asterisks%"
:___inputLoop
call "%temp%\getch16.com"
if %errorlevel% gtr 126 goto ___inputLoop
if %errorlevel% lss 32 (
  if %errorlevel%==8 (
    if "%asterisks%" neq "" (
      set "spaces=%spaces:~1%"
      set "asterisks=%asterisks:~1%"
      for /f "tokens=1*" %%a in ("%inp%") do set "inp=%%b"
    )
    <nul set /p ".=.!cr!!spaces!!cr!"
    <nul set /p ".=!cr!%~1 !asterisks!"
    goto ___inputLoop
  )
  if %errorlevel%==13 goto ___ahead
)
set "inp=%errorlevel% %inp%"
set "asterisks=%asterisks%%~2"
set "spaces=%spaces% "
<nul set /p ".=.!cr!%spaces%!cr!"
<nul set /p ".=!cr!%~1 %asterisks%"
goto :___inputLoop
:___ahead
echo\
del "%temp%\getch16.com"
for %%a in (%inp%) do (
  cmd /c exit %%a
  set "out=!=ExitCodeAscii!!out!"
)
endlocal &set "%~3=%out%"
goto :eof


Regards
aGerman

InterociterOperator
Posts: 11
Joined: 28 Feb 2011 21:08

Re: batch login that shows "*"'s

#3 Post by InterociterOperator » 28 Feb 2011 21:41

If you have the CHOICE.com program on your machine, here is one bit of trickery to get *'s that we used.
It isn't very secure really - more for fun than anything else.
Copy it to notepad and give it a run.
A bit long, but it doesn't echo your entire password to the screen.
A-Z (except "x") and 0-9 are allowable password characters.

The password is "GOODPLANE262".

Code: Select all

rem =========================================================================
rem PASSWORD.BAT   - InterociterOperator 2011
@echo off
color 70
mode 60,31
prompt W:\SECURITY$g
:BEGIN
set pw=
set dots=
set width=
set screen=
if "x" == "x" call :setwidth
:show
cls
if "%screen%" == "%width%" goto allowin
echo -                                                vers 0.125
echo -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
echo "
echo "
echo "
echo "
echo "
echo "                 I N T E R O C I T E R
echo "
echo "
echo "           M A I N T E N A N C E   S C R E E N   
echo "
echo "
echo "
echo "
echo "                Enter your password here.
echo "                -------------------------
echo "              -> %dots%             
echo "                -------------------------
echo "
echo "
echo "
:cont
echo "
echo "
echo "
echo "
echo "           (Press [X] if you need to restart)
echo "
rem the following two lines are one line wrapped
choice /n /t:-,99 /c:ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890- "-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
if errorlevel==37 goto s-37
if errorlevel==36 goto s-36
if errorlevel==35 goto s-35
if errorlevel==34 goto s-34
if errorlevel==33 goto s-33
if errorlevel==32 goto s-32
if errorlevel==31 goto s-31
if errorlevel==30 goto s-30
if errorlevel==29 goto s-29
if errorlevel==28 goto s-28
if errorlevel==27 goto s-27
if errorlevel==26 goto s-26
if errorlevel==25 goto s-25
if errorlevel==24 goto s-24
if errorlevel==23 goto s-23
if errorlevel==22 goto s-22
if errorlevel==21 goto s-21
if errorlevel==20 goto s-20
if errorlevel==19 goto s-19
if errorlevel==18 goto s-18
if errorlevel==17 goto s-17
if errorlevel==16 goto s-16
if errorlevel==15 goto s-15
if errorlevel==14 goto s-14
if errorlevel==13 goto s-13
if errorlevel==12 goto s-12
if errorlevel==11 goto s-11
if errorlevel==10 goto s-10
if errorlevel==9 goto s-9
if errorlevel==8 goto s-8
if errorlevel==7 goto s-7
if errorlevel==6 goto s-6
if errorlevel==5 goto s-5
if errorlevel==4 goto s-4
if errorlevel==3 goto s-3
if errorlevel==2 goto s-2
if errorlevel==1 goto s-1
::
::  -  -  -  -  -  -  -  -
::
:s-37
set pw=QUARZIBARM
set screen=80
exit
::
goto show
:s-36
set screen=%screen%0
set dots=%dots%*
goto show
:s-35
set screen=%screen%9
set dots=%dots%*
goto show
:s-34
set screen=%screen%8
set dots=%dots%*
goto show
:s-33
set screen=%screen%7
set dots=%dots%*
goto show
:s-32
set screen=%screen%6
set dots=%dots%*
goto show
:s-31
set screen=%screen%5
set dots=%dots%*
goto show
:s-30
set screen=%screen%4
set dots=%dots%*
goto show
::
:s-29
set screen=%screen%3
set dots=%dots%*
goto show
::
:s-28
set screen=%screen%2
set dots=%dots%*
goto show
::
:s-27
set screen=%screen%1
set dots=%dots%*
goto show
::
:s-26
set screen=%screen%Z
set dots=%dots%*
goto show
::
:s-25
set screen=%screen%Y
set dots=%dots%*
goto show
::
:s-24
::set screen=%screen%X
::set dots=%dots%*
goto begin
::
:s-23
set screen=%screen%W
set dots=%dots%*
goto show
::
:s-22
set screen=%screen%V
set dots=%dots%*
goto show
::
:s-21
set screen=%screen%U
set dots=%dots%*
goto show
::
:s-20
set screen=%screen%T
set dots=%dots%*
goto show
::
:s-19
set screen=%screen%S
set dots=%dots%*
goto show
::
:s-18
set screen=%screen%R
set dots=%dots%*
goto show
::
:s-17
set screen=%screen%Q
set dots=%dots%*
goto show
::
:s-16
set screen=%screen%P
set dots=%dots%*
goto show
::
:s-15
set screen=%screen%O
set dots=%dots%*
goto show
::
:s-14
set screen=%screen%N
set dots=%dots%*
goto show
::
:s-13
set screen=%screen%M
set dots=%dots%*
goto show
::
:s-12
set screen=%screen%L
set dots=%dots%*
goto show
::
:s-11
set screen=%screen%K
set dots=%dots%*
goto show
::
:s-10
set screen=%screen%J
set dots=%dots%*
goto show
::
:s-9
set screen=%screen%I
set dots=%dots%*
goto show
::
:s-8
set screen=%screen%H
set dots=%dots%*
goto show
::
:s-7
set screen=%screen%G
set dots=%dots%*
goto show
::
:s-6
set screen=%screen%F
set dots=%dots%*
goto show
::
:s-5
set screen=%screen%E
set dots=%dots%*
goto show
::
:s-4
set screen=%screen%D
set dots=%dots%*
goto show
::
:s-3
set screen=%screen%C
set dots=%dots%*
goto show
::
:s-2
set screen=%screen%B
set dots=%dots%*
goto show
::
:s-1
set screen=%screen%A
set dots=%dots%*
goto show
::
goto show
:allowin
cls
prompt $p$g
set pw=FOOGLE
set screen=80
set width=80
color 0F
echo  ==========================================================
echo  =                                                        =
echo  =                                                        =
echo  =                                                        =
echo  =           A C C E S S    G R A N T E D ! ! !           =
echo  =                                                        =
echo  =                                                        =
echo  =                                                        =
echo  =             fire phasers   sound trumpet               =
echo  ==========================================================
choice /n  /c:YN- /t:-,3
cls
color 9f
echo "Use BAT2EXE to hide file contents."
echo "Don't grant FileScan rights."
echo "Run from second program."
echo "Map excessively obscure path here."
echo "Did you remember to include the CHOICE.com program in your path?"
echo "Point to Menu here."
choice /n  /c:YN- /t:-,3
goto :eof
:setwidth
rem InterociterOperator 2011
set width=GOODPLANE262
goto :eof
rem ========================================================================


[EDIT aGerman]@phillid: Code tags complemented. [/EDIT]

InterociterOperator
Posts: 11
Joined: 28 Feb 2011 21:08

Re: batch login system help :)

#4 Post by InterociterOperator » 28 Feb 2011 21:45

In the editor, the following line wraps. Disregard the remark above about it wrapping

choice /n /t:-,99 /c:ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890- "-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

looks like...

choice /n /t:-,99 /c:ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-
"-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

...in the editor.. sorry.

phillid
Posts: 109
Joined: 03 Apr 2010 20:27
Location: Wellington, New Zealand
Contact:

Re: batch login system help :)

#5 Post by phillid » 04 Mar 2011 17:16

That's pretty neat, I've written a few password protection batch scripts and compiled them into .EXEs

PS: Please post code inside code tags next time :D

InterociterOperator
Posts: 11
Joined: 28 Feb 2011 21:08

Re: batch login system help :)

#6 Post by InterociterOperator » 08 Mar 2011 12:46

What is the best way to get the length of a variable for later manipulation?

aGerman
Expert
Posts: 4678
Joined: 22 Jan 2010 18:01
Location: Germany

Re: batch login system help :)

#7 Post by aGerman » 08 Mar 2011 13:07

I guess there is no "best way". Poke around:
http://www.dostips.com/forum/viewtopic.php?f=3&t=1429
http://www.dostips.com/forum/viewtopic.php?f=3&t=1344
+ the official strLen function of this site.

Regards
aGerman

trap
Posts: 4
Joined: 10 Jan 2011 07:20
Location: Norway
Contact:

Re: batch login system help :)

#8 Post by trap » 27 Sep 2011 03:29

Thanks for all the reply's :D

Rileyh
Posts: 147
Joined: 01 Sep 2011 03:54
Location: Perth, Western Australia

Re: batch login system help :)

#9 Post by Rileyh » 07 Oct 2011 00:15

InterociterOperator,
Your code has many errors.
Unfortunately for my low-level abilities with batch code I cannot propose alternatives but when I copied your code into a batch file and tested it it just exploded with code and shut down.
I cannot see what you were trying to do with it but could you place a reply.

Thanks,
Rileyh

Rileyh
Posts: 147
Joined: 01 Sep 2011 03:54
Location: Perth, Western Australia

Re: batch login system help :)

#10 Post by Rileyh » 07 Oct 2011 00:18

aGerman,
Your code did not work at all. (no offence as you are probably 1000 times more accomplished than me)
All it did was freeze and do nothing.
By the way, why did you use assembly in the code?

Rileyh

InterociterOperator
Posts: 11
Joined: 28 Feb 2011 21:08

Re: batch login system help :)

#11 Post by InterociterOperator » 24 May 2012 19:09

You have to have the "Choice" command available from the command prompt for the code to work.

Squashman
Expert
Posts: 4486
Joined: 23 Dec 2011 13:59

Re: batch login system help :)

#12 Post by Squashman » 25 May 2012 05:26

InterociterOperator wrote:You have to have the "Choice" command available from the command prompt for the code to work.

I guess 7 months is better late than never. :lol:

Jronicaing
Posts: 1
Joined: 26 May 2012 02:44
Contact:

Re: batch login system help :)

#13 Post by Jronicaing » 26 May 2012 02:47

Your code did not work at all. (no offence as you are probably 1000 times more accomplished than me)
All it did was freeze and do nothing.

Post Reply