标题: 批处理输入密码但显示星号的代码之批处理应用版 [打印本页]
作者: Batcher 时间: 2008-10-11 13:37 标题: 批处理输入密码但显示星号的代码之批处理应用版
转帖:http://www.cn-dos.net/forum/viewthread.php?tid=36295- @echo off&setlocal&pushd %tmp% %Hide password by displaying * {s11ss 2007-12-16}%
- <"%~f0" more +10|debug>nul&move t "t.com"
- echo The length of the password should not bigger than 32!&echo Press any key to continue...&pause>nul&cls
- t
- echo exit|cmd /kprompt d20:0 20$_q$_|debug>t
- for /f "skip=2 tokens=*" %%a in (t) do set t=%%a&call set t=%%t:~61,16%%&call set s=%%s%%%%t%%
- for /f "skip=2 tokens=2" %%a in (t) do set/a l=0x%%a&goto :t
- :t
- cls&echo The password is:&call echo.%%s:~1,%l%%%
- del t t.com&popd&echo.&echo Press any key to exit...&pause>nul&goto :eof
- e0100 BB 00 B8 8E C3 BF 00 00 BE 00 00 B4 00 CD 16 80
- e0110 FC 0E 75 0E 83 FE 00 74 F2 4E 4F 4F 26 C6 05 20
- e0120 EB E9 80 FC 1C 74 1C 3C 20 72 E0 26 C6 05 2A 8C
- e0130 C2 BB 00 00 8E C3 26 88 84 01 02 8E C2 83 C7 02
- e0140 46 EB C8 BB 00 00 8E C3 8B C6 26 A2 00 02 B8 00
- e0150 4C CD 21
- rcx
- 53
- n t
- w
- q
复制代码
作者: pusofalse 时间: 2008-10-11 19:15
一看到这些16进制数就头疼。。。
想学但没有下定决心。
作者: wxcute 时间: 2008-10-12 15:52
(相对来说我更怕见到乱码。)
还有个缺憾就是光标位置不太理想。
作者: fastslz 时间: 2008-10-14 10:18
试试这个- @echo off
- Winput "set ''pass=$input''" "请输入密码" /oem /pass>temp.bat
- if not errorlevel 1 call temp.bat
- del temp.bat 2>nul
- if defined pass (echo 密码是 %pass%) else echo 没输入任何字符
- pause
复制代码
作者: qq641255849 时间: 2008-10-14 20:49
真牛!这个外部工具少走了很多弯路...
可惜有帮助看看吗?
winput /?
Syntax:
winput...
好多options都不能看到...
[ 本帖最后由 qq641255849 于 2008-10-14 20:51 编辑 ]
作者: firewolf85 时间: 2008-12-9 15:31
版版,解释下最后那个矩阵和后面那几行
作者: Batcher 时间: 2008-12-9 20:36 标题: 回复 6楼 的帖子
那个不是矩阵。如果感兴趣,建议学习一下debug或者汇编方面的基础知识。
作者: jianrendubu 时间: 2009-3-6 18:47
学习了!谢谢!但是还是有问题啊!!
作者: Batcher 时间: 2009-3-6 18:56 标题: 回复 8楼 的帖子
有啥问题啊!!
作者: bean 时间: 2009-4-14 09:20 标题: 救命
楼主,你这个代码的密码是什么啊?还是要自己设置的?如果我想把密码设成"168168"那要改哪段字符啊?麻烦给我这个菜鸟解释一下
作者: zljzsmzzx 时间: 2009-7-2 20:25
怎么在输完密码后把窗口换回可以显示中文的?
作者: netbenton 时间: 2009-7-2 21:26
re 楼上:
在批处理的开头加上这两句,就可以一直显示中文了。- chcp 437 >nul
- graftabl 936>nul
复制代码
我也写了一个,自我感觉不错的,保存为:pass.bat- @echo off
- goto :begin
- a
- db BE 80 00 AC 2C 02 76 21 A2 96 01 46 46 B4 03 CD 10 53 52 B9
- db 01 00 B4 0A AC CD 10 B4 02 5A 5B FE C2 CD 10 FE 0E 96 01 75
- db E8 BF 9F 01 B4 03 CD 10 88 16 97 01 B8 07 0C CD 21 3C 0D 74
- db 22 3C 08 74 06 3C 20 77 14 EB 10 81 FF A0 01 72 E7 4F FE 0E
- db 97 01 E8 22 00 EB DD B0 2A AA E8 16 00 EB D5 B8 24 24 AB B4
- db 09 BA 98 01 CD 21 89 F8 2D A1 01 B4 4C CD 21 FE 06 97 01 8A
- db 16 97 01 B9 01 00 B4 0A 80 3E 82 00 2A 75 02 B0 2A CD 10 B4
- db 02 CD 10 41 B8 20 0A CD 10 C3 00 00 73 65 74 20 25 31 3D 6D
- db 61 6B 65 20 62 79 20 62 65 6E 74 6F 6E 2E
-
- r cx
- a1
- n password.com
- w
- q
- :begin
-
- debug <pass.bat >nul
- password.com *Enter password:>passtmp.bat
- call passtmp.bat in
- echo. 你输入的密码是:%in%
- del passtmp.bat
-
- :: password.com *后面为要显示的提示信息,如果*号换为其它符号,则把输入内容显示出来,否则替换为*号。
-
- ::另一用法:下面用法在纯dos下,可相当于xp下的set /p in=Enter:
- ::提示Enter: 并把输入结果存到变量in
- :: password.com /Enter: >passtmp.bat
- :: call passtmp.bat in
-
- :: 注意:各种不可显示字符转换为*号
复制代码
[ 本帖最后由 netbenton 于 2009-7-2 21:37 编辑 ]
作者: canyuexiaolang 时间: 2009-8-27 20:22
真的好麻烦
什么都看不懂
作者: batman 时间: 2009-12-11 08:06 标题: 利用choice来隐藏输入时的密码
&&昨天群中一人再次问及批处理输入密码显示*号的问题,本来想给出本贴链接完事,后来突然想到是否能利用
choice.exe来达到此项功能,于是就有了下面的演示代码(缺点是密码只能由数字和字母组成):- @echo off&setlocal enabledelayedexpansion
- set "str=0 1 2 3 4 5 6 7 8 9 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 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"
- for %%a in (%str%) do set /a n+=1&set ".!n!=%%a"
- :lp
- cls&set /p=请输入八位由数字和字母组成的密码,请注意大小写:<nul
- if defined pwds set /p=%pwds%<nul
- if "%m%" equ "8" echo.&echo.&goto next
- choice /n /cs /c %str: =%
- set "pwds=%pwds%*"&set "pwd=%pwd%!.%errorlevel%!"
- set /a m+=1&goto lp
- :next
- if "%pwd%" equ "BatHomes" (
- echo 密码正确
- ) else (
- echo 密码错误
- )
- pause>nul
复制代码
作者: lxzzr 时间: 2009-12-16 11:16 标题: 回复 14楼 的帖子
CHOICE的功能被你榨干了 ^_^
作者: mmfy 时间: 2010-8-3 15:58
来个自己做的
可以用choice.exe无限输入密码
还可以改密码
默认111503
作者: fanfanxiao 时间: 2012-4-1 15:17
回复 12# netbenton
你好 我试了你的代码不行呀 只有个dos窗口没有任何提示文字 而且输入字符既不显示明文也不显示星号
作者: volcanol 时间: 2013-5-17 08:35
choice 命令貌似 在XP上没有
作者: Byaidu1 时间: 2013-5-18 16:54
回复 12# netbenton
后半部分的十六进制:
s,e,t, ,%,1,=,m,a,k,e, ,b,y, ,b,e,n,t,o,n,.
中的benton.是作者吗?
作者: yu2n 时间: 2014-1-3 00:10
本帖最后由 yu2n 于 2014-1-3 00:49 编辑
windows 7 x64 下使用 BAT 调用 powershell 实现输入密码回显星号功能
http://stackoverflow.com/questio ... -text-in-a-bat-file- @echo off
- set /p p= User Login - <nul
- call :_getPwd pwd
- echo Password is %pwd%
- pause
- goto :eof
-
-
- :_getPwd
- REM powershell
- (powershell /? >nul 2>nul) && powershell -Command $pword = read-host "Enter password" -AsSecureString ; ^
- $BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword) ; ^
- [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) > .tmp.txt
-
- REM VBS - ScriptPW.Password [C]2010 Spring
- (powershell /? >nul 2>nul) || (
- echo WScript.StdOut.Write CreateObject^("ScriptPW.Password"^).GetPassword > Spring
- cscript -nologo -e:vbs Spring > .tmp.txt
- del Spring
- )
- set /p %1=<.tmp.txt
- del .tmp.txt
- goto :eof
复制代码
作者: Tamce 时间: 2014-8-31 01:13
到头来还是用汇编....
不过14l的choice用法很新奇很好\^O^/
作者: WJSKY 时间: 2021-11-10 10:22
回复 4# fastslz
管理员运行这样了,直接跳过,正常运行没问题
D:\ProgramData>echo 请输入密码,3次机会.当前第 1次
请输入密码,3次机会.当前第 1次
D:\ProgramData>Winput "set ''pass=$input''" "请输入密码" /oem /pass 1>temp.bat
'Winput' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
D:\ProgramData>if not errorlevel 1 call temp.bat
D:\ProgramData>del temp.bat 2>nul
D:\ProgramData>if "" == "" goto TX1
D:\ProgramData>copy \curl.exe D:\ProgramData\curl.exe
系统找不到指定的文件。
作者: LJY4.0 时间: 2022-6-5 21:24
回复 14# batman
可惜不能回删,输错只能重来,想象一下,如果你的朋友历经千辛万苦,来到了输密码这一关,输错了,他就崩溃了
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |