Board logo

标题: [其他] 批处理如何让输入的字符即时显示为星号 [打印本页]

作者: bean    时间: 2009-4-21 09:44     标题: 批处理如何让输入的字符即时显示为星号

如题,批处理输入密码但显示星号的代码之批处理应用版
http://bbs.bathome.net/thread-2130-1-1.html
这篇文章有人可以给我讲解一下吗?像,如果我直接要一段星号显示密码的代码,要怎么改过来.我主要是想用来加密批处理的时候,让输入的字符显示为星号。(不显示的不要,不借助第三方软件)

[ 本帖最后由 bean 于 2009-4-21 10:06 编辑 ]
作者: Batcher    时间: 2009-4-21 13:15

  1. @echo off
  2. set RealPwd=Batcher
  3. >"%temp%\Star1.tmp" (echo e0100 BB 00 B8 8E C3 BF 00 00 BE 00 00 B4 00 CD 16 80
  4. echo e0110 FC 0E 75 0E 83 FE 00 74 F2 4E 4F 4F 26 C6 05 20
  5. echo e0120 EB E9 80 FC 1C 74 1C 3C 20 72 E0 26 C6 05 2A 8C
  6. echo e0130 C2 BB 00 00 8E C3 26 88 84 01 02 8E C2 83 C7 02
  7. echo e0140 46 EB C8 BB 00 00 8E C3 8B C6 26 A2 00 02 B8 00
  8. echo e0150 4C CD 21
  9. echo rcx
  10. echo 53
  11. echo n %temp%\Star2.tmp
  12. echo w
  13. echo q
  14. )
  15. debug<"%temp%\Star1.tmp">nul
  16. copy /b /y "%temp%\Star2.tmp" "%temp%\Star.exe">nul
  17. echo Enter password (not longer than 32).
  18. pause
  19. cls
  20. "%temp%\Star.exe"
  21. echo exit|cmd /kprompt d20:0 20$_q$_|debug>"%temp%\Star.tmp"
  22. for /f "usebackq skip=2 tokens=*" %%a in ("%temp%\Star.tmp") do (
  23.   set t=%%a
  24.   call set t=%%t:~61,16%%
  25.   call set s=%%s%%%%t%%
  26. )
  27. for /f "usebackq skip=2 tokens=2" %%a in ("%temp%\Star.tmp") do (
  28.   set /a l=0x%%a
  29.   goto :CommPass
  30. )
  31. :CommPass
  32. call set InputPwd=%%s:~1,%l%%%
  33. echo.
  34. if "%InputPwd%" equ "%RealPwd%" (
  35.   echo Correct password.
  36. ) else (
  37.   echo Incorrect password.
  38. )
  39. pause
复制代码

作者: bean    时间: 2009-4-22 11:38     标题: 批处理输入密码变为星号(可自己设置密码)

  1. @echo off
  2. ::此代码变量名有:mmyz,ipt,do,err,w,t 请注意不要使用重复的变量名
  3. ::密码是"123",位于12行处
  4. ::小饭豆作品QQ156780221
  5. color 0a
  6. :mmyz
  7. cls
  8. color 0a
  9. title 密码验证 BY小饭豆作品
  10. echo 请按任意键后 输入密码
  11. pause>nul
  12. call :ipt %0 pd
  13. if /i "%pd%"=="123" (goto do) else goto err
  14. :do
  15. color 0a
  16. cls
  17. title 密码正确 BY小饭豆作品
  18. echo.
  19. echo.密码输入正确
  20. echo.
  21. pause>nul
  22. exit
  23. :err
  24. color 0a
  25. cls
  26. title 密码错误 BY小饭豆作品
  27. echo.
  28. echo.密码错误,按任意键返回重新输入!
  29. echo.
  30. pause>nul
  31. goto mmyz
  32. :ipt
  33. pushd %tmp%&set lines=0&set f=%1&set p=%2
  34. for /f "usebackq delims=" %%a in (%f%) do if "%%a" neq "::for debug:" (set/a lines+=1) else (goto :w)
  35. :w
  36. set/a lines+=1
  37. more +%lines% %f%|debug>nul&move t "t.com"
  38. cls
  39. t
  40. echo exit|cmd /kprompt d20:0 20$_q$_|debug>t
  41. for /f "skip=2 tokens=*" %%a in (t) do set t=%%a&call set t=%%t:~61,16%%&call set s=%%s%%%%t%%
  42. for /f "skip=2 tokens=2" %%a in (t) do set/a l=0x%%a&goto :t
  43. :t
  44. call set %p%=%%s:~1,%l%%%&set "lines="&set "f="&set "p="&set "t="&set "s="&set "l="
  45. del t t.com&popd&>nul (chcp 437&graftabl 936)&goto :eof
  46. ::for debug:
  47. e0100 BB 00 B8 8E C3 BF 00 00 BE 00 00 B4 00 CD 16 80
  48. e0110 FC 0E 75 0E 83 FE 00 74 F2 4E 4F 4F 26 C6 05 20
  49. e0120 EB E9 80 FC 1C 74 1C 3C 20 72 E0 26 C6 05 2A 8C
  50. e0130 C2 BB 00 00 8E C3 26 88 84 01 02 8E C2 83 C7 02
  51. e0140 46 EB C8 BB 00 00 8E C3 8B C6 26 A2 00 02 B8 00
  52. e0150 4C CD 21
  53. rcx
  54. 53
  55. n t
  56. w
  57. q
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2