找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 5904|回复: 23

[其他] 讨论:BAT 脚本隐藏密码输入问题!

[复制链接]
发表于 2025-9-1 11:28:39 | 显示全部楼层 |阅读模式
额,这又是一个上古话题,,,,,,代码,,,
  1. call set %p%=%%s:~1,%l%%%&set "lines="&set "f="&set "p="&set "t="&set "s="&set "l="
  2. del t t.com&popd&>nul (chcp 437&graftabl 936)&goto :eof
  3. ::for debug:
  4. e0100 BB 00 B8 8E C3 BF 00 00 BE 00 00 B4 00 CD 16 80
  5. e0110 FC 0E 75 0E 83 FE 00 74 F2 4E 4F 4F 26 C6 05 20
  6. e0120 EB E9 80 FC 1C 74 1C 3C 20 72 E0 26 C6 05 2A 8C
  7. e0130 C2 BB 00 00 8E C3 26 88 84 01 02 8E C2 83 C7 02
  8. e0140 46 EB C8 BB 00 00 8E C3 8B C6 26 A2 00 02 B8 00
  9. e0150 4C CD 21
  10. rcx
  11. 53
  12. n t
  13. w
  14. q
复制代码
有点年纪的应该知道。在上古时候还有 debug 存在的上古时候,,,上面的就是 debug 编程的代码转换。。。
那个小程序作用很简单,如题!BAT隐藏密码输入,,
在我们那个年代,没那么多论坛,也没那么多A1,更别提资料了!
我记得,我是2002年或03年吧!忘记了,,,那时候我是一个小网吧的网管,,,
那时候有一个很经典的笑话是!网管会做什么?,,,,,答 :,,重启 & 换机,,
::::>---------------------------
不扯其他了,回到帖子话题!
前段时间,00后的下属问我,有没有什么方法隐藏他脚本的启动代码,,,
我仔细问了他的要求,发现就和上古时期的要求是一致的!,,
,无非就是在启动一个脚本的时候输入指定的变量做密码!,,,,,,
然后,又不能让人明着看到变量密码,,,
上面这个 debug 小程序,是 XP 系统以前可以支持的小程序,,
它的出现和我那00后的同事,索求一致,,,
代码可以明看,就是欺负不会玩脚本的人,,装杯,,
然后我又回到了那个年轻的时候,,,年轻真他吗的好!,,,
~~~~~~
现在的系统没debug了,找到的资料和文献基本可以考古了!行政就连IE 开发和 HTML 类代码都属于考古范畴,,
为了挑战,00后年轻人的想法!,,,我写了一个小脚本!。。。。。
利用所知不多的HTML认知写了一个 HTA 小脚本,,
脚本很简单,,就一个,,
  1. <input type="password" *************************** >
复制代码

的筐,,隐藏式星号或黑点密码输入,然后调取输入,转移到根BAT 脚本,,,实现隐藏密码输入!
HTA 程序是从根程序里抽取,生产临时文件,扔到临时文件夹里,执行完就删除!
脚本程序,早就写好了!,,,,碍于什么破烂的知识产权,,,!
概念是00后的孩子提出的,然后我来执行!程序脚本也是我写的,,,但不好发表出来,,!
以上说的,会点网页开发的应该都很清楚的知道是什么原理!,,,,,,

~~~~~~~~~~~~
然后有讨论一下这个话题嘛!,,该怎么保护所谓的知识产权!,,然后,也讨论标题《BAT脚本 隐藏密码输入启动问题!》,,
明码的脚本,在会的人眼里一看就知道是怎么回事!现在的年轻人都不怎么专研这类!(00后的同事和我说他周边的人基本不怎么懂BAT 代码(类:巨婴))
然后在他的认知里,他学会的代码和技巧!就应该是属于他自己的知识财富,他要用那些知识去兑换真实的钱财!
有那么一瞬间,我有那么一点点无语,但也很佩服他!,用知识谋取财富,天经地义,,,
无奈圈子不是一个年龄层,挤不进去,进去了别人也不鸟我!,,,
想当年我们那个年代,搜索都找不到答案,只能靠自己找资料和学习,,,
这也罢了!还要信奉什么互联网共享精神!特别是无码的种子,,,必须共享,,,
行政的孩子太幸福了,要资料有资料!要A1有AI ,,环境比我那时候好太多了。。。
讨论讨论呗!,,
过两天:鄙人生日,鬼节生辰,癸亥年,属猪的,,
老了!,,,见的多,未必懂得比现在的年轻人认知多,,老了,,
发表于 2025-9-1 15:06:36 | 显示全部楼层
BAT+PowerShell+VBS输入密码显示星号
http://bbs.bathome.net/thread-2130-2-1.html#pid142651
 楼主| 发表于 2025-9-7 01:24:28 | 显示全部楼层
windows 7 x64 下使用 BAT 调用 powershell 实现输入密码回显星号功能
yu2n 发表于 2014-1-3 00:10
  1. @echo off
  2. Powershell -Command $密码 = read-host "请输入密码,按Enter完成" -AsSecureString;^
  3. $A=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($密码) ;^
  4. $B=([System.Runtime.InteropServices.Marshal]::PtrToStringAuto($A)) ;^
  5. $B>%Temp%\$C
  6. SET/P 密码=<%Temp%\$C&Del %Temp%\$C
  7. Echo.%密码%
  8. Pause>Nul
复制代码
引用大佬们的代码,改写了一个简化版的星号密码输入。

HTA 版的也很简单 ,,,无非就是利用  ,,,网页密码筐的输入星号保护然后引用输入,,,
  1. <input type="password" id="a1" onkeypress="if(event.keyCode==13){alert(a1.value);return false;} " >
复制代码
存为 HTA文件.HTA
发表于 2025-9-7 11:45:49 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-9-7 12:09 编辑

回复 3# jiavip

用 for /f ... () 句式可直接回收 powershell 代码的运行返回值,不必采用临时文件倒手,尤其是代码比较简短时优势明显,但这种用法须用双引号包裹 -c 之后的完整代码,示例如下:

  1. @echo off &for /f "delims=" %%v in ('powershell "$pw=read-host '输入密码' -as; $Vpw=[runtime.interopservices.marshal]::securestringtobstr($pw); [runtime.interopservices.marshal]::ptrtostringauto($Vpw)" ') do echo,%%v
  2. pause&exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
77七 + 1 感谢分享

查看全部评分

 楼主| 发表于 2025-9-7 16:02:32 | 显示全部楼层
回复 4# aloha20200628


  怪不得,,当时我改写的时候,总是获取出错,  powershell,,我玩得很少,当时是想着那样获取返回的,试了几次失败就懒得试了,没那耐心,,,还以为是不能呢!,,谢谢兄弟指点,,,,,
发表于 2025-9-7 17:01:18 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-9-7 17:02 编辑

回复 5# jiavip

再给一个 bat+hta 版本,实现在批处脚本中回收密码明文,代码存为 test.bat 运行,其中预设 ie10 引擎,以便支持全部功能,可在代码第4行修改 ie=10,若改为 ie=9 则会导致 '输入框默认提示词' 失效,若改为 ie=8 或 ie=7 还会进一步导致 '切换密码明暗文' 失效(被系统报错)...

  1. <!-- :
  2. @echo off &(for /f %%v in ('mshta "%~f0" ') do echo,%%v) &pause&exit/b
  3. -->
  4. <meta http-equiv='x-ua-compatible' content='ie=10'>
  5. <script>
  6.    w=450, h=185, resizeTo(w,h);
  7.    x=(window.screen.width-w)/2, y=(window.screen.height-h)/2, moveTo(x,y);
  8. </script>
  9. <head><title>【密码隐藏和显示】</title></head>
  10. <center></p>
  11. <input type=password id=p name='pwd' placeholder='请输入密码' /></p>
  12. <input type=button value='切换密码明暗文'
  13.    onclick="if(p.type=='text'){p.type='password';}else{p.type='text'}" />
  14. <input type=button value='完成' onclick='_done(p.value)' />
  15. </center>
  16. <script>
  17.    function _done (v) {
  18.       if (!v) return;
  19.       new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(v);
  20.       close();        }
  21. </script>
复制代码
 楼主| 发表于 2025-9-7 17:13:12 | 显示全部楼层
回复 6# aloha20200628


    这样混编法,就没办法返回根脚本,再进行调用了。不可能装了一个密码锁,就把房子炸了吧!,,
发表于 2025-9-7 17:29:16 | 显示全部楼层
回复 7# jiavip

这个 test.bat 也可以成为根脚本,在 1,3 行之间可塞入源根脚本的代码就是了...
 楼主| 发表于 2025-9-7 17:36:50 | 显示全部楼层
回复 8# aloha20200628


    我知道,问题是,写这么一个秘密保护,不会只装一把扳手吧?,,里面肯定塞满各种各类奇奇怪怪的代码和标签或跳转!,,,
网页代码里的声明引述标签,含扩的范围和局限性太小。且容易出错,,,,
发表于 2025-9-7 18:26:22 | 显示全部楼层
回复 9# jiavip

   其实,6楼代码只是一个示例,即除 powershell 方法之外的又一选择,只不过能利用网页资源使得其界面及性能效果更讲究些,仅此而已...
   至于把混编脚本作为一个批处根脚本使用,例如可在6楼代码中的批处代码区域内,应该能跑批处的各类玩法,与纯粹的批处脚本并无本质差别。
   至于 hta 代码本身的可靠性,除了造码者自身的功夫以外,可用 ie=N 设置来对标相应版本的 ie 引擎,以便取舍不同功能,这如同采用其他脚本如 vbs/jscript/powershell/... 应该是一个道理吧...
发表于 2025-9-8 15:47:50 | 显示全部楼层
上古秘籍
  1. @echo off

  2. :a
  3. set k=
  4. for /f "delims=" %%i in ('xcopy /w "%~f0" "%~f0" 2^>nul') do if not defined k set "k=%%i"
  5. set k=%k:~-1%
  6. set p=%p%%k%
  7. set /p "=*" <nul
  8. if not defined k goto :b
  9. goto :a

  10. :b
  11. echo;
  12. echo;%p%
  13. goto :a
复制代码
 楼主| 发表于 2025-9-8 20:35:23 | 显示全部楼层
回复 11# idwma

好秘籍,,,要提到上古,,,想到以前进过一个 BAT 讨论群,,,
群里有个家伙字认为自己对BAT 写法已经到极致了!感觉牛掰了就劝群员去学开发 JAVA 和 PHP 之类的。
后来有人问他一些个BAT 写法上的疑问,是系统自带的,非第三方!结果他却答不出,,,
后来一大牛说了句:人类对BAT 的开发不足亿万分之一,只要WIN不断,则BAT不灭,不会断其开发,也不会停其应用。,,,
鄙人现在老了,没什么心思开发更多应用写法!但没什么阻挡不了后来人对BAT的开发和写法!A1 也替代不了的新应用和写法上面的研究和开发。,,
 楼主| 发表于 2025-9-8 21:19:32 | 显示全部楼层
回复 6# aloha20200628
  1. @echo off &(for /f "delims=" %%v in ('mshta "%~f0" ') do echo,%%v) &pause&exit/b
复制代码
2句 少了个  "delims="  密码出现空格的或多个空格时候,,只会获取前一段输入,,,,,
发表于 2025-9-9 10:42:19 | 显示全部楼层
回复 13# jiavip

如此能允许密码输入使用系统默认的那些分隔符了 ... 谢谢
发表于 2025-9-11 11:55:23 | 显示全部楼层
打错还可以用退格符删除
  1. @echo off

  2. :a
  3. set k=
  4. for /f "delims=" %%i in ('xcopy /w "%~f0" "%~f0" 2^>nul') do if not defined k set "k=%%i"
  5. set k=%k:~-1%
  6. if not defined k goto :b
  7. set p=%p%%k%
  8. if "%k%"=="" (
  9. set /p "=%k% %k%" <nul
  10. set p=%p:~0,-2%
  11. ) else (
  12. set /p "=*" <nul
  13. )
  14. goto :a

  15. :b
  16. echo;
  17. echo;%p%
  18. goto :a
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:06 , Processed in 0.023088 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表